From 5c55dcb05edb3277515fe5b327e0d5c00d6ba6dc Mon Sep 17 00:00:00 2001 From: Judith Roth Date: Thu, 12 Feb 2026 13:05:24 +0100 Subject: [PATCH 001/147] Document CLA workflow environment variables During https://community.openproject.org/wp/71048 --- .github/workflows/cla.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/cla.yml b/.github/workflows/cla.yml index 708cd66b65f..491b32f5673 100644 --- a/.github/workflows/cla.yml +++ b/.github/workflows/cla.yml @@ -20,7 +20,10 @@ jobs: if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target' uses: contributor-assistant/github-action@v2.6.1 env: + # https://github.com/contributor-assistant/github-action?tab=readme-ov-file#environmental-variables + # Built-in GitHub token to make the API calls for interacting with GitHub. Does not need to be specified the secrets store. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # Access token for repository where the signatures are stored (see below for remote-repository-name) PERSONAL_ACCESS_TOKEN: ${{ secrets.OPENPROJECTCI_GH_LEGAL_TOKEN }} with: path-to-signatures: 'contributor-license-agreement/signatures/version1.json' From e369227c393d4f3ac5c63ecd56667fd79a5c2585 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Fri, 20 Mar 2026 16:17:47 +0300 Subject: [PATCH 002/147] Add case-insensitive project identifier storage Introduce case-insensitive handling for project identifiers: - Add `normalizes :identifier` to automatically upcase (alphanumeric mode) or downcase (numeric mode) identifiers on assignment - Add `parse_friendly_id` to normalize FriendlyId lookups for case-insensitive finder queries - Switch uniqueness validation to `case_sensitive: false` - Replace inline `exclusion:` validator with explicit `identifier_not_reserved` that checks case-insensitively - Consolidate alphanumeric format validators into a single `identifier_alphanumeric_format` method with early return to prevent cascading error messages - Use case-insensitive LOWER() comparison in historical identifier reservation check - Add `post_process` support to the OpActiveRecord acts_as_url adapter with an allowlist of safe transforms (upcase/downcase) - Add migration to replace the unique index on projects.identifier with a case-insensitive LOWER(identifier) index - Update table definition to match the new index Includes corresponding test additions for normalization, case- insensitive uniqueness, reserved identifier rejection, and the create_spec fixture fix for alphanumeric mode. --- app/models/projects/identifier.rb | 56 ++++++++++---- ...tive_uniqueness_for_project_identifiers.rb | 47 +++++++++++ db/migrate/tables/projects.rb | 2 +- .../acts_as_url/adapter/op_active_record.rb | 11 +++ spec/features/projects/create_spec.rb | 1 + spec/models/project_spec.rb | 1 - spec/models/projects/identifier_spec.rb | 77 ++++++++++++++++++- 7 files changed, 178 insertions(+), 17 deletions(-) create mode 100644 db/migrate/20260319120000_add_case_insensitive_uniqueness_for_project_identifiers.rb diff --git a/app/models/projects/identifier.rb b/app/models/projects/identifier.rb index 45d0f9aae67..37002f8ec9b 100644 --- a/app/models/projects/identifier.rb +++ b/app/models/projects/identifier.rb @@ -39,22 +39,30 @@ module Projects::Identifier extend FriendlyId normalizes :identifier, with: OpenProject::RemoveAsciiControlCharacters + normalizes :identifier, with: ->(value) { + stripped = value.to_s.strip + Setting::WorkPackageIdentifier.alphanumeric? ? stripped.upcase : stripped.downcase + } acts_as_url :name, url_attribute: :identifier, sync_url: false, # Don't update identifier when name changes only_when_blank: true, # Only generate when identifier not set limit: IDENTIFIER_MAX_LENGTH, + force_downcase: false, + post_process: ->(_instance) { + Setting::WorkPackageIdentifier.alphanumeric? ? :upcase : :downcase + }, blacklist: RESERVED_IDENTIFIERS, adapter: OpenProject::ActsAsUrl::Adapter::OpActiveRecord # use a custom adapter able to handle edge cases - ### Validators for the legacy underscored identifier format (e.g. "project_one") validates :identifier, presence: true, - uniqueness: { case_sensitive: true }, + uniqueness: { case_sensitive: false }, length: { maximum: IDENTIFIER_MAX_LENGTH }, - exclusion: RESERVED_IDENTIFIERS, if: ->(p) { p.persisted? || p.identifier.present? } + + # Validators for the numeric identifier format (e.g. "project_one") # Contains only a-z, 0-9, dashes and underscores but cannot consist of numbers only as it would clash with the id. validates :identifier, format: { with: /\A(?!^\d+\z)[a-z0-9\-_]+\z/ }, @@ -62,14 +70,11 @@ module Projects::Identifier p.identifier_changed? && p.identifier.present? && Setting::WorkPackageIdentifier.numeric? } - ### Validators for the uppercase identifier format (e.g. "PROJ1") - validates :identifier, - format: { with: /\A[A-Z]/, message: :must_start_with_letter }, - if: ->(p) { p.identifier_changed? && p.identifier.present? && Setting::WorkPackageIdentifier.alphanumeric? } - validates :identifier, - format: { with: /\A[A-Z][A-Z0-9_]*\z/, message: :no_special_characters }, - length: { maximum: SEMANTIC_IDENTIFIER_MAX_LENGTH }, - if: ->(p) { p.identifier_changed? && p.identifier.present? && Setting::WorkPackageIdentifier.alphanumeric? } + # Validators for the alphanumeric identifier format (e.g. "PROJ1") + validate :identifier_alphanumeric_format, + if: ->(p) { p.identifier_changed? && p.identifier.present? && Setting::WorkPackageIdentifier.alphanumeric? } + + validate :identifier_not_reserved, if: -> { identifier.present? } # Complements the uniqueness validation above: once an identifier has been used by a # project, it remains reserved for that project even after the project moves to a new @@ -88,6 +93,12 @@ module Projects::Identifier end class_methods do + # Normalize the input to FriendlyID finders so that lookups are case-insensitive. + # FriendlyID's default parse_friendly_id returns the value unchanged. + def parse_friendly_id(value) + normalize_value_for(:identifier, value) + end + def suggest_identifier(name) if Setting::WorkPackageIdentifier.alphanumeric? WorkPackages::IdentifierAutofix::ProjectIdentifierSuggestionGenerator.suggest_identifier(name) @@ -117,14 +128,33 @@ module Projects::Identifier private + def identifier_alphanumeric_format + unless identifier.match?(/\A[A-Z]/) + errors.add(:identifier, :must_start_with_letter) + return + end + + errors.add(:identifier, :no_special_characters) unless identifier.match?(/\A[A-Z][A-Z0-9_]*\z/) + if identifier.length > SEMANTIC_IDENTIFIER_MAX_LENGTH + errors.add(:identifier, :too_long, count: SEMANTIC_IDENTIFIER_MAX_LENGTH) + end + end + + def identifier_not_reserved + if RESERVED_IDENTIFIERS.include?(identifier&.downcase) + errors.add(:identifier, :exclusion) + end + end + # Checks friendly_id_slugs for any project that previously used this identifier and # has since changed it. It allows to switch back to an identifier the project itself - # has used before. + # has used before. Uses case-insensitive comparison to prevent cross-case collisions. def identifier_not_historically_reserved return if errors.any? { |error| error.attribute == :identifier && error.type == :taken } already_existing = FriendlyId::Slug - .where(slug: identifier, sluggable_type: self.class.to_s) + .where("LOWER(slug) = LOWER(?)", identifier) + .where(sluggable_type: self.class.to_s) .where.not(sluggable_id: id) .exists? diff --git a/db/migrate/20260319120000_add_case_insensitive_uniqueness_for_project_identifiers.rb b/db/migrate/20260319120000_add_case_insensitive_uniqueness_for_project_identifiers.rb new file mode 100644 index 00000000000..5b5af4c550d --- /dev/null +++ b/db/migrate/20260319120000_add_case_insensitive_uniqueness_for_project_identifiers.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +class AddCaseInsensitiveUniquenessForProjectIdentifiers < ActiveRecord::Migration[8.0] + disable_ddl_transaction! + + def up + remove_index :projects, :identifier, unique: true, algorithm: :concurrently, if_exists: true + add_index :projects, "LOWER(identifier)", + unique: true, + name: "index_projects_on_lower_identifier", + algorithm: :concurrently, + if_not_exists: true + end + + def down + remove_index :projects, name: "index_projects_on_lower_identifier", algorithm: :concurrently, if_exists: true + add_index :projects, :identifier, unique: true, algorithm: :concurrently + end +end diff --git a/db/migrate/tables/projects.rb b/db/migrate/tables/projects.rb index 2b95ea20d0b..9d7d2d57559 100644 --- a/db/migrate/tables/projects.rb +++ b/db/migrate/tables/projects.rb @@ -49,7 +49,7 @@ class Tables::Projects < Tables::Base t.index :lft, name: "index_projects_on_lft" t.index :rgt, name: "index_projects_on_rgt" - t.index :identifier, unique: true + t.index "LOWER(identifier)", unique: true, name: "index_projects_on_lower_identifier" t.index %i[lft rgt] end end diff --git a/lib/open_project/acts_as_url/adapter/op_active_record.rb b/lib/open_project/acts_as_url/adapter/op_active_record.rb index dfc94d1350c..5e098073f92 100644 --- a/lib/open_project/acts_as_url/adapter/op_active_record.rb +++ b/lib/open_project/acts_as_url/adapter/op_active_record.rb @@ -50,6 +50,8 @@ module OpenProject read_attribute instance, settings.url_attribute end + ALLOWED_POST_TRANSFORMS = %i[upcase downcase].freeze + private def modify_base_url @@ -58,6 +60,15 @@ module OpenProject self.base_url = root.to_localized_slug(locale:, **configuration.string_extensions_settings) modify_base_url_custom_rules if base_url.empty? + apply_post_process + end + + def apply_post_process + post_process = configuration.settings.post_process + return unless post_process + + method = post_process.respond_to?(:call) ? post_process.call(instance) : post_process + self.base_url = base_url.public_send(method) if method && ALLOWED_POST_TRANSFORMS.include?(method) end def modify_base_url_custom_rules diff --git a/spec/features/projects/create_spec.rb b/spec/features/projects/create_spec.rb index 4b7fb8155cb..8870afaebd4 100644 --- a/spec/features/projects/create_spec.rb +++ b/spec/features/projects/create_spec.rb @@ -592,6 +592,7 @@ RSpec.describe "Projects", "creation", fill_in "Name", with: "Flight Planning Algorithm" find("body").click + expect(page).to have_field "Identifier", with: "FPA" fill_in "Identifier", with: "3INVALID" click_on "Complete" diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index 3bb0c0d2007..254b258af84 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -606,5 +606,4 @@ RSpec.describe Project do end end end - end diff --git a/spec/models/projects/identifier_spec.rb b/spec/models/projects/identifier_spec.rb index d2ddd779436..5e30b9295ce 100644 --- a/spec/models/projects/identifier_spec.rb +++ b/spec/models/projects/identifier_spec.rb @@ -28,7 +28,7 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require "spec_helper" +require "rails_helper" RSpec.describe Projects::Identifier do describe "identifier normalization" do @@ -37,7 +37,57 @@ RSpec.describe Projects::Identifier do it { is_expected.to normalize(:identifier).from("my\n\x00project\t").to("myproject") } end - describe "url identifier" do + describe ".normalize_value_for" do + context "when in numeric mode (default)" do + before { allow(Setting::WorkPackageIdentifier).to receive(:alphanumeric?).and_return(false) } + + it "downcases the value" do + expect(Project.normalize_value_for(:identifier, "PROJ")).to eq("proj") + end + + it "strips whitespace" do + expect(Project.normalize_value_for(:identifier, " proj ")).to eq("proj") + end + + it "returns nil unchanged" do + expect(Project.normalize_value_for(:identifier, nil)).to be_nil + end + end + + context "when in alphanumeric mode" do + before { allow(Setting::WorkPackageIdentifier).to receive(:alphanumeric?).and_return(true) } + + it "upcases the value" do + expect(Project.normalize_value_for(:identifier, "proj")).to eq("PROJ") + end + + it "strips whitespace" do + expect(Project.normalize_value_for(:identifier, " proj ")).to eq("PROJ") + end + end + end + + describe "normalizes :identifier on Project" do + context "when in numeric mode (default)" do + before { allow(Setting::WorkPackageIdentifier).to receive(:alphanumeric?).and_return(false) } + + it "downcases identifier on assignment" do + project = Project.new(identifier: "MyProject") + expect(project.identifier).to eq("myproject") + end + end + + context "when in alphanumeric mode" do + before { allow(Setting::WorkPackageIdentifier).to receive(:alphanumeric?).and_return(true) } + + it "upcases identifier on assignment" do + project = Project.new(identifier: "myproject") + expect(project.identifier).to eq("MYPROJECT") + end + end + end + + describe "url identifier", with_settings: { work_packages_identifier: "numeric" } do let(:reserved) do Rails.application.routes.routes .map { |route| route.path.spec.to_s } @@ -73,6 +123,14 @@ RSpec.describe Projects::Identifier do expect(project.errors[:identifier]).to include("has already been taken.") end + it "is not allowed to clash with another project case-insensitively" do + create(:project, identifier: "existing") + + project = build(:project, identifier: "EXISTING") + expect(project).not_to be_valid + expect(project.errors[:identifier]).to include("has already been taken.") + end + it "is not allowed to clash with a former identifier of another project" do other_project = create(:project, identifier: "former-id") other_project.update!(identifier: "new-id") @@ -82,6 +140,15 @@ RSpec.describe Projects::Identifier do expect(project.errors[:identifier]).to include("has already been taken.") end + it "is not allowed to clash with a former identifier of another project case-insensitively" do + other_project = create(:project, identifier: "former-id") + other_project.update!(identifier: "new-id") + + project = build(:project, identifier: "FORMER-ID") + expect(project).not_to be_valid + expect(project.errors[:identifier]).to include("has already been taken.") + end + it "is allowed to be the same as its own former identifier" do project = create(:project, identifier: "old-id") project.update!(identifier: "new-id") @@ -90,6 +157,12 @@ RSpec.describe Projects::Identifier do expect(project).to be_valid end + it "rejects reserved identifiers case-insensitively" do + project = build(:project, identifier: "NEW") + expect(project).not_to be_valid + expect(project.errors[:identifier]).to include("is reserved.") + end + # The acts_as_url plugin defines validation callbacks on :create and it is not automatically # called when calling a custom context. However we need the acts_as_url callback to set the # identifier when the validations are called with the :saving_custom_fields context. From 91362fb6803c0e0309856f95146b9d9533971a11 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Fri, 20 Mar 2026 16:17:58 +0300 Subject: [PATCH 003/147] Improve PreviewQuery error detection and update MCP descriptions Expand PreviewQuery to detect additional alphanumeric identifier format violations: case-mismatch, underscores, leading digits, and purely numerical identifiers. Restructure error classification with FORMAT_RULES for clarity and add corresponding locale strings. Update MCP tool descriptions for search_projects, search_programs, and search_portfolios to reflect case-insensitive identifier matching, with updated test expectations. --- app/services/mcp_tools/search_portfolios.rb | 2 +- app/services/mcp_tools/search_programs.rb | 2 +- app/services/mcp_tools/search_projects.rb | 2 +- .../identifier_autofix/preview_query.rb | 81 +++++++++++++------ config/locales/en.yml | 4 + .../mcp/mcp_tools/search_portfolios_spec.rb | 6 +- .../mcp/mcp_tools/search_programs_spec.rb | 6 +- .../mcp/mcp_tools/search_projects_spec.rb | 6 +- .../identifier_autofix/preview_query_spec.rb | 48 +++++++++-- 9 files changed, 112 insertions(+), 45 deletions(-) diff --git a/app/services/mcp_tools/search_portfolios.rb b/app/services/mcp_tools/search_portfolios.rb index ae5504f4b8d..729af0102b8 100644 --- a/app/services/mcp_tools/search_portfolios.rb +++ b/app/services/mcp_tools/search_portfolios.rb @@ -48,7 +48,7 @@ module McpTools type: :object, properties: { name: { type: "string", description: "Name of the portfolio. Accepts partial names, not case-sensitive." }, - identifier: { type: "string", description: "Portfolio identifier. Case-sensitive, matching exactly." }, + identifier: { type: "string", description: "Portfolio identifier. Case-insensitive, matching exactly." }, status_code: { type: "string", enum: Project.status_codes.keys, description: "The portfolio status." } } ) diff --git a/app/services/mcp_tools/search_programs.rb b/app/services/mcp_tools/search_programs.rb index d66a8121271..c88471e9478 100644 --- a/app/services/mcp_tools/search_programs.rb +++ b/app/services/mcp_tools/search_programs.rb @@ -48,7 +48,7 @@ module McpTools type: :object, properties: { name: { type: "string", description: "Name of the program. Accepts partial names, not case-sensitive." }, - identifier: { type: "string", description: "Program identifier. Case-sensitive, matching exactly." }, + identifier: { type: "string", description: "Program identifier. Case-insensitive, matching exactly." }, status_code: { type: "string", enum: Project.status_codes.keys, description: "The program status." } } ) diff --git a/app/services/mcp_tools/search_projects.rb b/app/services/mcp_tools/search_projects.rb index 4801b79dcb8..f8a2b7e1815 100644 --- a/app/services/mcp_tools/search_projects.rb +++ b/app/services/mcp_tools/search_projects.rb @@ -48,7 +48,7 @@ module McpTools type: :object, properties: { name: { type: "string", description: "Name of the project. Accepts partial project names, not case-sensitive." }, - identifier: { type: "string", description: "Project identifier. Case-sensitive, matching exactly." }, + identifier: { type: "string", description: "Project identifier. Case-insensitive, matching exactly." }, status_code: { type: "string", enum: Project.status_codes.keys, description: "The project status." } } ) diff --git a/app/services/work_packages/identifier_autofix/preview_query.rb b/app/services/work_packages/identifier_autofix/preview_query.rb index 0c3c54ea341..c651a5b9084 100644 --- a/app/services/work_packages/identifier_autofix/preview_query.rb +++ b/app/services/work_packages/identifier_autofix/preview_query.rb @@ -34,41 +34,70 @@ module WorkPackages Result = Data.define(:projects_data, :total_count) DISPLAY_COUNT = 5 + # Priority-ordered format rules for identifier classification. + FORMAT_RULES = [ + [:too_long, ->(id, max) { id.length > max }], + [:numerical, ->(id, _) { id.match?(/\A\d+\z/) }], + [:starts_with_number, ->(id, _) { id.match?(/\A\d/) }], + [:special_characters, ->(id, _) { id.match?(/[^a-zA-Z0-9]/) }], + [:not_uppercase, ->(id, _) { id != id.upcase }] + ].freeze + def call - total = problematic_scope.count - preview = problematic_scope - .select(:id, :name, :identifier) - .limit(DISPLAY_COUNT) - .to_a - - suggestions = WorkPackages::IdentifierAutofix::ProjectIdentifierSuggestionGenerator.call( - preview, - exclude: reserved_identifiers | in_use_identifiers - ) - - projects_data = suggestions.map do |entry| - entry.merge(error_reason: error_reason(entry[:current_identifier])) - end - - Result.new(projects_data:, total_count: total) + Result.new(projects_data: build_projects_data, total_count: problematic_scope.count) end private - def problematic_scope - @problematic_scope ||= Project.where( - "length(identifier) > ? OR identifier ~ ?", - ProjectIdentifierSuggestionGenerator::IDENTIFIER_LENGTH[:max], - "[^a-zA-Z0-9_]" + def build_projects_data + generate_suggestions.map do |entry| + entry.merge(error_reason: error_reason(entry[:current_identifier])) + end + end + + def generate_suggestions + ProjectIdentifierSuggestionGenerator.call( + preview_projects, + exclude: reserved_identifiers | in_use_identifiers ) end + def preview_projects + problematic_scope + .select(:id, :name, :identifier) + .limit(DISPLAY_COUNT) + .to_a + end + + # Scope conditions must cover all identifiers classifiable by #error_reason. + def problematic_scope + @problematic_scope ||= exceeds_max_length + .or(contains_non_alphanumeric) + .or(starts_with_digit) + .or(not_fully_uppercased) + end + + def exceeds_max_length = Project.where("length(identifier) > ?", max_identifier_length) + def contains_non_alphanumeric = Project.where("identifier ~ ?", "[^a-zA-Z0-9]") + def starts_with_digit = Project.where("identifier ~ ?", "^[0-9]") + def not_fully_uppercased = Project.where("identifier != UPPER(identifier)") + + def max_identifier_length = ProjectIdentifierSuggestionGenerator::IDENTIFIER_LENGTH[:max] + + # Must handle all identifiers matched by #problematic_scope. def error_reason(identifier) - if identifier.length > ProjectIdentifierSuggestionGenerator::IDENTIFIER_LENGTH[:max] - :too_long - elsif identifier.match?(/[^a-zA-Z0-9_]/) - :special_characters - elsif in_use_identifiers.include?(identifier) + format_error_reason(identifier) || collision_error_reason(identifier) || :unknown + end + + def format_error_reason(identifier) + FORMAT_RULES.each do |reason, check| + return reason if check.call(identifier, max_identifier_length) + end + nil # no format rule matched + end + + def collision_error_reason(identifier) + if in_use_identifiers.include?(identifier) :in_use elsif reserved_identifiers.include?(identifier) :reserved diff --git a/config/locales/en.yml b/config/locales/en.yml index ba112e70236..1566a39afb7 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -411,9 +411,13 @@ en: label_example_work_package_id: Example work package ID autofix_preview: error_too_long: Has to be fewer than 5 characters + error_numerical: Cannot be purely numerical + error_starts_with_number: Cannot start with a number error_special_characters: Special characters not allowed + error_not_uppercase: Must be uppercase error_in_use: Already in use as another project's active handle error_reserved: Reserved by another project's handle history + error_unknown: Needs manual review remaining_projects: one: "... 1 more project" other: "... %{count} more projects" diff --git a/spec/requests/mcp/mcp_tools/search_portfolios_spec.rb b/spec/requests/mcp/mcp_tools/search_portfolios_spec.rb index e59271369f6..a2fb38ddde1 100644 --- a/spec/requests/mcp/mcp_tools/search_portfolios_spec.rb +++ b/spec/requests/mcp/mcp_tools/search_portfolios_spec.rb @@ -90,12 +90,12 @@ RSpec.describe McpTools::SearchPortfolios, with_flag: { mcp_server: true } do end end - context "when passing a non-exact identifier" do + context "when passing a case-variant identifier" do let(:call_args) { { identifier: "Abc" } } - it "does not find the portfolio" do + it "finds the portfolio (case-insensitive)" do subject - expect(parsed_results.dig("structuredContent", "items")).to be_empty + expect(parsed_results.dig("structuredContent", "items")).to be_present end end diff --git a/spec/requests/mcp/mcp_tools/search_programs_spec.rb b/spec/requests/mcp/mcp_tools/search_programs_spec.rb index e59b3ad50c2..0ddccaff165 100644 --- a/spec/requests/mcp/mcp_tools/search_programs_spec.rb +++ b/spec/requests/mcp/mcp_tools/search_programs_spec.rb @@ -90,12 +90,12 @@ RSpec.describe McpTools::SearchPrograms, with_flag: { mcp_server: true } do end end - context "when passing a non-exact identifier" do + context "when passing a case-variant identifier" do let(:call_args) { { identifier: "Abc" } } - it "does not find the program" do + it "finds the program (case-insensitive)" do subject - expect(parsed_results.dig("structuredContent", "items")).to be_empty + expect(parsed_results.dig("structuredContent", "items")).to be_present end end diff --git a/spec/requests/mcp/mcp_tools/search_projects_spec.rb b/spec/requests/mcp/mcp_tools/search_projects_spec.rb index 86865edf129..5418077c9b1 100644 --- a/spec/requests/mcp/mcp_tools/search_projects_spec.rb +++ b/spec/requests/mcp/mcp_tools/search_projects_spec.rb @@ -89,12 +89,12 @@ RSpec.describe McpTools::SearchProjects, with_flag: { mcp_server: true } do end end - context "when passing a non-exact identifier" do + context "when passing a case-variant identifier" do let(:call_args) { { identifier: "Abc" } } - it "does not find the project" do + it "finds the project (case-insensitive)" do subject - expect(parsed_results.dig("structuredContent", "items")).to be_empty + expect(parsed_results.dig("structuredContent", "items")).to be_present end end diff --git a/spec/services/work_packages/identifier_autofix/preview_query_spec.rb b/spec/services/work_packages/identifier_autofix/preview_query_spec.rb index 5b4e99fbd3e..ec534272163 100644 --- a/spec/services/work_packages/identifier_autofix/preview_query_spec.rb +++ b/spec/services/work_packages/identifier_autofix/preview_query_spec.rb @@ -28,23 +28,29 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require "rails_helper" +require "spec_helper" RSpec.describe WorkPackages::IdentifierAutofix::PreviewQuery do subject(:result) { described_class.new.call } let(:display_count) { described_class::DISPLAY_COUNT } + # Store identifiers bypassing normalizes (which would downcase/upcase them) + def set_raw_identifier(project, identifier) + Project.where(id: project.id).update_all(Arel.sql("identifier = #{Project.connection.quote(identifier)}")) + project + end + def create_problematic_project(name:, identifier:) - create(:project, name:, identifier:) + set_raw_identifier(create(:project, name:), identifier) end def create_valid_project(name:, identifier:) - create(:project, name:, identifier:) + set_raw_identifier(create(:project, name:), identifier) end context "when there are no problematic projects" do - before { create_valid_project(name: "Clean Project", identifier: "clean") } + before { create_valid_project(name: "Clean Project", identifier: "CLEAN") } it "returns total_count 0 and empty projects_data" do expect(result.total_count).to eq(0) @@ -55,9 +61,9 @@ RSpec.describe WorkPackages::IdentifierAutofix::PreviewQuery do context "when a project has underscores in its identifier" do before { create_valid_project(name: "My Project", identifier: "my_proj") } - it "does not flag it as problematic" do - expect(result.total_count).to eq(0) - expect(result.projects_data).to be_empty + it "flags it as problematic (underscores are not valid in semantic identifiers)" do + expect(result.total_count).to eq(1) + expect(result.projects_data.first[:error_reason]).to eq(:special_characters) end end @@ -126,5 +132,33 @@ RSpec.describe WorkPackages::IdentifierAutofix::PreviewQuery do create_problematic_project(name: "Test", identifier: "my-very-long-identifier") expect(result.projects_data.first[:error_reason]).to eq(:too_long) end + + it "assigns :numerical when identifier is purely numeric" do + create_problematic_project(name: "Test", identifier: "12345") + expect(result.projects_data.first[:error_reason]).to eq(:numerical) + end + + it "assigns :starts_with_number when identifier begins with a digit" do + create_problematic_project(name: "Test", identifier: "1abc") + expect(result.projects_data.first[:error_reason]).to eq(:starts_with_number) + end + + it "assigns :not_uppercase when identifier is lowercase but otherwise valid" do + create_problematic_project(name: "Test", identifier: "proj") + expect(result.projects_data.first[:error_reason]).to eq(:not_uppercase) + end + + it "assigns :unknown when an identifier in the scope matches no known classification" do + project = create_valid_project(name: "Oddball", identifier: "ODDBALL") + + # Simulate a new problematic_scope condition that catches a project + # not covered by any error_reason branch (drift scenario). + query = described_class.new + forced_scope = Project.where(id: project.id) + allow(query).to receive(:problematic_scope).and_return(forced_scope) + + result = query.call + expect(result.projects_data.first[:error_reason]).to eq(:unknown) + end end end From 69818ad10c478d07d7021465a938d25921d7bbb9 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Fri, 20 Mar 2026 22:55:54 +0300 Subject: [PATCH 004/147] Extract `ProblematicIdentifiers` from `PreviewQuery` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Separate scope-building, identifier classification, and exclusion set logic into a reusable class that both PreviewQuery (admin UI) and the future ApplyHandlesJob (batch migration) can compose from. Key changes: - ProblematicIdentifiers owns FORMAT_RULES, problematic scope, error classification, and a dual-mode exclusion set (DB-backed ExclusionSet for preview, preloaded Set for batch) - PreviewQuery becomes a thin orchestrator delegating to ProblematicIdentifiers - Add deterministic ordering (.order(:id)) to preview results - Rename :not_uppercase → :not_fully_uppercased to match scope method naming, update corresponding en.yml translation key - ExclusionSet uses raw SQL to bypass Rails normalizes on :identifier which would transform query parameters based on current setting mode --- .../identifier_autofix/preview_query.rb | 77 ++------ .../problematic_identifiers.rb | 146 +++++++++++++++ config/locales/en.yml | 2 +- .../identifier_autofix/preview_query_spec.rb | 12 +- .../problematic_identifiers_spec.rb | 177 ++++++++++++++++++ 5 files changed, 344 insertions(+), 70 deletions(-) create mode 100644 app/services/work_packages/identifier_autofix/problematic_identifiers.rb create mode 100644 spec/services/work_packages/identifier_autofix/problematic_identifiers_spec.rb diff --git a/app/services/work_packages/identifier_autofix/preview_query.rb b/app/services/work_packages/identifier_autofix/preview_query.rb index c651a5b9084..d51e2768f81 100644 --- a/app/services/work_packages/identifier_autofix/preview_query.rb +++ b/app/services/work_packages/identifier_autofix/preview_query.rb @@ -34,85 +34,36 @@ module WorkPackages Result = Data.define(:projects_data, :total_count) DISPLAY_COUNT = 5 - # Priority-ordered format rules for identifier classification. - FORMAT_RULES = [ - [:too_long, ->(id, max) { id.length > max }], - [:numerical, ->(id, _) { id.match?(/\A\d+\z/) }], - [:starts_with_number, ->(id, _) { id.match?(/\A\d/) }], - [:special_characters, ->(id, _) { id.match?(/[^a-zA-Z0-9]/) }], - [:not_uppercase, ->(id, _) { id != id.upcase }] - ].freeze - def call - Result.new(projects_data: build_projects_data, total_count: problematic_scope.count) + analysis = ProblematicIdentifiers.new + total_count = analysis.count + projects_data = build_projects_data(analysis) + + Result.new(projects_data:, total_count:) end private - def build_projects_data - generate_suggestions.map do |entry| - entry.merge(error_reason: error_reason(entry[:current_identifier])) + def build_projects_data(analysis) + generate_suggestions(analysis).map do |entry| + entry.merge(error_reason: analysis.error_reason(entry[:current_identifier])) end end - def generate_suggestions + def generate_suggestions(analysis) ProjectIdentifierSuggestionGenerator.call( - preview_projects, - exclude: reserved_identifiers | in_use_identifiers + preview_projects(analysis.scope), + exclude: analysis.exclusion_set ) end - def preview_projects - problematic_scope + def preview_projects(scope) + scope .select(:id, :name, :identifier) + .order(:id) .limit(DISPLAY_COUNT) .to_a end - - # Scope conditions must cover all identifiers classifiable by #error_reason. - def problematic_scope - @problematic_scope ||= exceeds_max_length - .or(contains_non_alphanumeric) - .or(starts_with_digit) - .or(not_fully_uppercased) - end - - def exceeds_max_length = Project.where("length(identifier) > ?", max_identifier_length) - def contains_non_alphanumeric = Project.where("identifier ~ ?", "[^a-zA-Z0-9]") - def starts_with_digit = Project.where("identifier ~ ?", "^[0-9]") - def not_fully_uppercased = Project.where("identifier != UPPER(identifier)") - - def max_identifier_length = ProjectIdentifierSuggestionGenerator::IDENTIFIER_LENGTH[:max] - - # Must handle all identifiers matched by #problematic_scope. - def error_reason(identifier) - format_error_reason(identifier) || collision_error_reason(identifier) || :unknown - end - - def format_error_reason(identifier) - FORMAT_RULES.each do |reason, check| - return reason if check.call(identifier, max_identifier_length) - end - nil # no format rule matched - end - - def collision_error_reason(identifier) - if in_use_identifiers.include?(identifier) - :in_use - elsif reserved_identifiers.include?(identifier) - :reserved - end - end - - def in_use_identifiers - @in_use_identifiers ||= Project.where.not(id: problematic_scope.select(:id)).pluck(:identifier).to_set - end - - def reserved_identifiers - # TODO: OldProjectIdentifier.pluck(:identifier).to_set - # once the OldProjectIdentifier model and migration are added. - Set.new - end end end end diff --git a/app/services/work_packages/identifier_autofix/problematic_identifiers.rb b/app/services/work_packages/identifier_autofix/problematic_identifiers.rb new file mode 100644 index 00000000000..61eb87fd5b6 --- /dev/null +++ b/app/services/work_packages/identifier_autofix/problematic_identifiers.rb @@ -0,0 +1,146 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +module WorkPackages + module IdentifierAutofix + # Identifies projects whose identifiers violate the semantic identifier format + # and provides classification and exclusion sets for suggestion generation. + # + # For main use by admin UI preview and batch migration job. + class ProblematicIdentifiers + # Priority-ordered format rules for identifier classification. + FORMAT_RULES = [ + [:too_long, ->(id, max) { id.length > max }], + [:numerical, ->(id, _) { id.match?(/\A\d+\z/) }], + [:starts_with_number, ->(id, _) { id.match?(/\A\d/) }], + [:special_characters, ->(id, _) { id.match?(/[^a-zA-Z0-9]/) }], + [:not_fully_uppercased, ->(id, _) { id != id.upcase }] + ].freeze + + def scope + @scope ||= exceeds_max_length + .or(contains_non_alphanumeric) + .or(starts_with_digit) + .or(not_fully_uppercased) + end + + delegate :count, to: :scope + + # Returns a symbol classifying why the identifier is problematic. + # Must handle all identifiers matched by #scope. + def error_reason(identifier) + format_error_reason(identifier) || collision_error_reason(identifier) || :unknown + end + + # Returns a Set-like object for excluding already-taken identifiers + # during suggestion generation. + # + # By default returns a DB-backed ExclusionSet that avoids loading all + # identifiers into memory (suitable for preview with few projects). + # + # Pass +preload: true+ to eagerly load all identifiers into a plain Set + # (suitable for batch jobs processing many projects). + def exclusion_set(preload: false) + if preload + reserved_identifiers | in_use_identifiers_set + else + ExclusionSet.new(non_problematic_scope, local: reserved_identifiers) + end + end + + private + + def exceeds_max_length = Project.where("length(identifier) > ?", max_identifier_length) + def contains_non_alphanumeric = Project.where("identifier ~ ?", "[^a-zA-Z0-9]") + def starts_with_digit = Project.where("identifier ~ ?", "^[0-9]") + def not_fully_uppercased = Project.where("identifier != UPPER(identifier)") + + def max_identifier_length = ProjectIdentifierSuggestionGenerator::IDENTIFIER_LENGTH[:max] + + def format_error_reason(identifier) + FORMAT_RULES.each do |reason, check| + return reason if check.call(identifier, max_identifier_length) + end + nil + end + + def collision_error_reason(identifier) + # rubocop:disable Rails/WhereEquals, Rails/WhereExists -- raw SQL bypasses Rails normalizes on :identifier + if non_problematic_scope.where("identifier = ?", identifier).exists? + # rubocop:enable Rails/WhereEquals, Rails/WhereExists + :in_use + elsif reserved_identifiers.include?(identifier) + :reserved + end + end + + def non_problematic_scope + @non_problematic_scope ||= Project.where.not(id: scope.select(:id)) + end + + def in_use_identifiers_set + @in_use_identifiers_set ||= non_problematic_scope.pluck(:identifier).to_set + end + + def reserved_identifiers + # TODO: Wire up with FriendlyId::Slug historical identifiers + Set.new + end + + # A Set-like object backed by an ActiveRecord scope that avoids + # loading all identifiers into memory. Supports the interface + # required by ProjectIdentifierSuggestionGenerator: include?, <<, dup. + class ExclusionSet + def initialize(scope, local: Set.new) + @scope = scope + @local = local + end + + def include?(identifier) + # Use raw SQL to bypass Rails normalizes on :identifier. + @local.include?(identifier) || @scope.exists?(["identifier = ?", identifier]) + end + + def <<(identifier) + @local << identifier + self + end + + def dup + self.class.new(@scope, local: @local.dup) + end + + def |(other) + self.class.new(@scope, local: @local | other) + end + end + end + end +end diff --git a/config/locales/en.yml b/config/locales/en.yml index 1566a39afb7..92d19c51f27 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -414,7 +414,7 @@ en: error_numerical: Cannot be purely numerical error_starts_with_number: Cannot start with a number error_special_characters: Special characters not allowed - error_not_uppercase: Must be uppercase + error_not_fully_uppercased: Must be uppercase error_in_use: Already in use as another project's active handle error_reserved: Reserved by another project's handle history error_unknown: Needs manual review diff --git a/spec/services/work_packages/identifier_autofix/preview_query_spec.rb b/spec/services/work_packages/identifier_autofix/preview_query_spec.rb index ec534272163..10d114b5be3 100644 --- a/spec/services/work_packages/identifier_autofix/preview_query_spec.rb +++ b/spec/services/work_packages/identifier_autofix/preview_query_spec.rb @@ -143,21 +143,21 @@ RSpec.describe WorkPackages::IdentifierAutofix::PreviewQuery do expect(result.projects_data.first[:error_reason]).to eq(:starts_with_number) end - it "assigns :not_uppercase when identifier is lowercase but otherwise valid" do + it "assigns :not_fully_uppercased when identifier is lowercase but otherwise valid" do create_problematic_project(name: "Test", identifier: "proj") - expect(result.projects_data.first[:error_reason]).to eq(:not_uppercase) + expect(result.projects_data.first[:error_reason]).to eq(:not_fully_uppercased) end it "assigns :unknown when an identifier in the scope matches no known classification" do project = create_valid_project(name: "Oddball", identifier: "ODDBALL") - # Simulate a new problematic_scope condition that catches a project + # Simulate a new scope condition that catches a project # not covered by any error_reason branch (drift scenario). - query = described_class.new + analysis = WorkPackages::IdentifierAutofix::ProblematicIdentifiers.new forced_scope = Project.where(id: project.id) - allow(query).to receive(:problematic_scope).and_return(forced_scope) + allow(analysis).to receive(:scope).and_return(forced_scope) + allow(WorkPackages::IdentifierAutofix::ProblematicIdentifiers).to receive(:new).and_return(analysis) - result = query.call expect(result.projects_data.first[:error_reason]).to eq(:unknown) end end diff --git a/spec/services/work_packages/identifier_autofix/problematic_identifiers_spec.rb b/spec/services/work_packages/identifier_autofix/problematic_identifiers_spec.rb new file mode 100644 index 00000000000..773a746f9a1 --- /dev/null +++ b/spec/services/work_packages/identifier_autofix/problematic_identifiers_spec.rb @@ -0,0 +1,177 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +require "spec_helper" + +RSpec.describe WorkPackages::IdentifierAutofix::ProblematicIdentifiers do + subject(:analysis) { described_class.new } + + let(:max_length) { WorkPackages::IdentifierAutofix::ProjectIdentifierSuggestionGenerator::IDENTIFIER_LENGTH[:max] } + + # Store identifiers bypassing normalizes (which would downcase/upcase them) + def set_raw_identifier(project, identifier) + Project.where(id: project.id).update_all(Arel.sql("identifier = #{Project.connection.quote(identifier)}")) + project + end + + def create_problematic_project(name:, identifier:) + set_raw_identifier(create(:project, name:), identifier) + end + + def create_valid_project(name:, identifier:) + set_raw_identifier(create(:project, name:), identifier) + end + + describe "#scope" do + it "includes projects with identifiers exceeding max length" do + project = create_problematic_project(name: "Test", identifier: "averylongidentifier") + expect(analysis.scope).to include(Project.find(project.id)) + end + + it "includes projects with non-alphanumeric characters" do + project = create_problematic_project(name: "Test", identifier: "ab-c") + expect(analysis.scope).to include(Project.find(project.id)) + end + + it "includes projects with identifiers starting with a digit" do + project = create_problematic_project(name: "Test", identifier: "1abc") + expect(analysis.scope).to include(Project.find(project.id)) + end + + it "includes projects with non-uppercased identifiers" do + project = create_problematic_project(name: "Test", identifier: "proj") + expect(analysis.scope).to include(Project.find(project.id)) + end + + it "excludes valid uppercased alphanumeric identifiers" do + project = create_valid_project(name: "Valid", identifier: "VALID") + expect(analysis.scope).not_to include(Project.find(project.id)) + end + end + + describe "#count" do + it "returns the number of problematic projects" do + create_problematic_project(name: "A", identifier: "a-b") + create_problematic_project(name: "B", identifier: "c-d") + create_valid_project(name: "C", identifier: "VALID") + + expect(analysis.count).to eq(2) + end + end + + describe "#error_reason" do + it "returns :too_long when identifier exceeds max length" do + expect(analysis.error_reason("averylongidentifier")).to eq(:too_long) + end + + it "returns :numerical when identifier is purely numeric" do + expect(analysis.error_reason("12345")).to eq(:numerical) + end + + it "returns :starts_with_number when identifier begins with a digit" do + expect(analysis.error_reason("1abc")).to eq(:starts_with_number) + end + + it "returns :special_characters when identifier has non-alphanumeric chars" do + expect(analysis.error_reason("ab-c")).to eq(:special_characters) + end + + it "returns :not_fully_uppercased when identifier is lowercase but otherwise valid" do + expect(analysis.error_reason("proj")).to eq(:not_fully_uppercased) + end + + it "returns :too_long with priority over :special_characters" do + expect(analysis.error_reason("my-very-long-identifier")).to eq(:too_long) + end + + it "returns :in_use when identifier belongs to a non-problematic project" do + create_valid_project(name: "Taken", identifier: "TAKEN") + expect(analysis.error_reason("TAKEN")).to eq(:in_use) + end + + it "returns :unknown when no classification matches" do + expect(analysis.error_reason("VALID")).to eq(:unknown) + end + end + + describe "#exclusion_set" do + let!(:valid_project) { create_valid_project(name: "Alpha", identifier: "ALPHA") } + + before do + create_problematic_project(name: "Beta", identifier: "beta-project") + end + + context "with default (DB-backed) mode" do + subject(:exclusion) { analysis.exclusion_set } + + it "includes identifiers from non-problematic projects" do + expect(exclusion.include?("ALPHA")).to be true + end + + it "excludes identifiers from problematic projects" do + expect(exclusion.include?("beta-project")).to be false + end + + it "tracks locally added identifiers via <<" do + exclusion << "NEWID" + expect(exclusion.include?("NEWID")).to be true + end + + it "returns a duplicate that does not share local state" do + copy = exclusion.dup + copy << "ONLY_IN_COPY" + expect(exclusion.include?("ONLY_IN_COPY")).to be false + expect(copy.include?("ONLY_IN_COPY")).to be true + end + + it "supports | with a Set" do + merged = exclusion | Set["EXTRA"] + expect(merged.include?("EXTRA")).to be true + expect(merged.include?("ALPHA")).to be true + end + end + + context "with preload: true" do + subject(:exclusion) { analysis.exclusion_set(preload: true) } + + it "returns a plain Set" do + expect(exclusion).to be_a(Set) + end + + it "includes identifiers from non-problematic projects" do + expect(exclusion).to include("ALPHA") + end + + it "excludes identifiers from problematic projects" do + expect(exclusion).not_to include("beta-project") + end + end + end +end From 30f9c7c633ea50167fb4366defbd748f53b45df1 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Fri, 20 Mar 2026 22:57:07 +0300 Subject: [PATCH 005/147] Wire up reserved identifiers with FriendlyId slug history Replace the TODO stub in ProblematicIdentifiers#reserved_identifiers with a real query against the friendly_id_slugs table. Historical slugs (identifiers a project used in the past but has since changed) are now excluded from suggestion generation and classified as :reserved in error_reason output. The query excludes slugs that match a current active project identifier (those are already covered by the in_use exclusion path). --- .../problematic_identifiers.rb | 7 +++++-- .../problematic_identifiers_spec.rb | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/app/services/work_packages/identifier_autofix/problematic_identifiers.rb b/app/services/work_packages/identifier_autofix/problematic_identifiers.rb index 61eb87fd5b6..dbcb3f322e6 100644 --- a/app/services/work_packages/identifier_autofix/problematic_identifiers.rb +++ b/app/services/work_packages/identifier_autofix/problematic_identifiers.rb @@ -110,8 +110,11 @@ module WorkPackages end def reserved_identifiers - # TODO: Wire up with FriendlyId::Slug historical identifiers - Set.new + @reserved_identifiers ||= FriendlyId::Slug + .where(sluggable_type: Project.name) + .where.not(slug: Project.select(:identifier)) + .pluck(:slug) + .to_set end # A Set-like object backed by an ActiveRecord scope that avoids diff --git a/spec/services/work_packages/identifier_autofix/problematic_identifiers_spec.rb b/spec/services/work_packages/identifier_autofix/problematic_identifiers_spec.rb index 773a746f9a1..59013285cbe 100644 --- a/spec/services/work_packages/identifier_autofix/problematic_identifiers_spec.rb +++ b/spec/services/work_packages/identifier_autofix/problematic_identifiers_spec.rb @@ -116,6 +116,13 @@ RSpec.describe WorkPackages::IdentifierAutofix::ProblematicIdentifiers do expect(analysis.error_reason("TAKEN")).to eq(:in_use) end + it "returns :reserved when identifier is a historical slug of another project" do + project = create_valid_project(name: "Gamma", identifier: "GAMMA") + FriendlyId::Slug.create!(slug: "OLDIE", sluggable: Project.find(project.id), sluggable_type: "Project") + + expect(analysis.error_reason("OLDIE")).to eq(:reserved) + end + it "returns :unknown when no classification matches" do expect(analysis.error_reason("VALID")).to eq(:unknown) end @@ -135,6 +142,12 @@ RSpec.describe WorkPackages::IdentifierAutofix::ProblematicIdentifiers do expect(exclusion.include?("ALPHA")).to be true end + it "includes historical slugs (reserved identifiers)" do + FriendlyId::Slug.create!(slug: "OLDALPHA", sluggable_id: valid_project.id, sluggable_type: "Project") + + expect(exclusion.include?("OLDALPHA")).to be true + end + it "excludes identifiers from problematic projects" do expect(exclusion.include?("beta-project")).to be false end @@ -172,6 +185,12 @@ RSpec.describe WorkPackages::IdentifierAutofix::ProblematicIdentifiers do it "excludes identifiers from problematic projects" do expect(exclusion).not_to include("beta-project") end + + it "includes historical slugs (reserved identifiers)" do + FriendlyId::Slug.create!(slug: "OLDALPHA", sluggable_id: valid_project.id, sluggable_type: "Project") + + expect(exclusion).to include("OLDALPHA") + end end end end From 6c8421345a658409e0e0c0bac36c3c65811c7a4f Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Fri, 20 Mar 2026 23:04:26 +0300 Subject: [PATCH 006/147] Simplify exclusion_set to plain Set, remove ExclusionSet class MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Drop the DB-backed ExclusionSet in favour of a simple Set from pluck. This is a one-off admin migration — the brief memory cost of loading all non-problematic identifiers is not worth the added complexity of a custom duck-typed wrapper. Also adds performance notes documenting index considerations for the regex scope conditions and the eager-load trade-off. --- .../problematic_identifiers.rb | 70 +++++-------------- .../problematic_identifiers_spec.rb | 64 ++++------------- 2 files changed, 32 insertions(+), 102 deletions(-) diff --git a/app/services/work_packages/identifier_autofix/problematic_identifiers.rb b/app/services/work_packages/identifier_autofix/problematic_identifiers.rb index dbcb3f322e6..0d4ad6d02d0 100644 --- a/app/services/work_packages/identifier_autofix/problematic_identifiers.rb +++ b/app/services/work_packages/identifier_autofix/problematic_identifiers.rb @@ -34,6 +34,17 @@ module WorkPackages # and provides classification and exclusion sets for suggestion generation. # # For main use by admin UI preview and batch migration job. + # + # == Performance notes + # + # * +#exclusion_set+ loads all non-problematic identifiers and historical slugs + # into memory. Fine for a one-off admin migration; if this ever becomes a hot + # path, consider a DB-backed exclusion check instead. + # + # * The regex scope conditions (+identifier ~ ?+) and +UPPER(identifier)+ won't + # hit a regular index. If queries get slow on large tables, a functional index + # on +UPPER(identifier)+ or a +pg_trgm+ GIN index would help. + # class ProblematicIdentifiers # Priority-ordered format rules for identifier classification. FORMAT_RULES = [ @@ -59,20 +70,11 @@ module WorkPackages format_error_reason(identifier) || collision_error_reason(identifier) || :unknown end - # Returns a Set-like object for excluding already-taken identifiers - # during suggestion generation. - # - # By default returns a DB-backed ExclusionSet that avoids loading all - # identifiers into memory (suitable for preview with few projects). - # - # Pass +preload: true+ to eagerly load all identifiers into a plain Set - # (suitable for batch jobs processing many projects). - def exclusion_set(preload: false) - if preload - reserved_identifiers | in_use_identifiers_set - else - ExclusionSet.new(non_problematic_scope, local: reserved_identifiers) - end + # Returns a Set of identifiers that must not be suggested for new assignments. + # Combines currently active identifiers from non-problematic projects with + # historically reserved identifiers from FriendlyId slug history. + def exclusion_set + reserved_identifiers | in_use_identifiers end private @@ -92,21 +94,15 @@ module WorkPackages end def collision_error_reason(identifier) - # rubocop:disable Rails/WhereEquals, Rails/WhereExists -- raw SQL bypasses Rails normalizes on :identifier - if non_problematic_scope.where("identifier = ?", identifier).exists? - # rubocop:enable Rails/WhereEquals, Rails/WhereExists + if in_use_identifiers.include?(identifier) :in_use elsif reserved_identifiers.include?(identifier) :reserved end end - def non_problematic_scope - @non_problematic_scope ||= Project.where.not(id: scope.select(:id)) - end - - def in_use_identifiers_set - @in_use_identifiers_set ||= non_problematic_scope.pluck(:identifier).to_set + def in_use_identifiers + @in_use_identifiers ||= Project.where.not(id: scope.select(:id)).pluck(:identifier).to_set end def reserved_identifiers @@ -116,34 +112,6 @@ module WorkPackages .pluck(:slug) .to_set end - - # A Set-like object backed by an ActiveRecord scope that avoids - # loading all identifiers into memory. Supports the interface - # required by ProjectIdentifierSuggestionGenerator: include?, <<, dup. - class ExclusionSet - def initialize(scope, local: Set.new) - @scope = scope - @local = local - end - - def include?(identifier) - # Use raw SQL to bypass Rails normalizes on :identifier. - @local.include?(identifier) || @scope.exists?(["identifier = ?", identifier]) - end - - def <<(identifier) - @local << identifier - self - end - - def dup - self.class.new(@scope, local: @local.dup) - end - - def |(other) - self.class.new(@scope, local: @local | other) - end - end end end end diff --git a/spec/services/work_packages/identifier_autofix/problematic_identifiers_spec.rb b/spec/services/work_packages/identifier_autofix/problematic_identifiers_spec.rb index 59013285cbe..a2bd717dcac 100644 --- a/spec/services/work_packages/identifier_autofix/problematic_identifiers_spec.rb +++ b/spec/services/work_packages/identifier_autofix/problematic_identifiers_spec.rb @@ -129,68 +129,30 @@ RSpec.describe WorkPackages::IdentifierAutofix::ProblematicIdentifiers do end describe "#exclusion_set" do + subject(:exclusion) { analysis.exclusion_set } + let!(:valid_project) { create_valid_project(name: "Alpha", identifier: "ALPHA") } before do create_problematic_project(name: "Beta", identifier: "beta-project") end - context "with default (DB-backed) mode" do - subject(:exclusion) { analysis.exclusion_set } - - it "includes identifiers from non-problematic projects" do - expect(exclusion.include?("ALPHA")).to be true - end - - it "includes historical slugs (reserved identifiers)" do - FriendlyId::Slug.create!(slug: "OLDALPHA", sluggable_id: valid_project.id, sluggable_type: "Project") - - expect(exclusion.include?("OLDALPHA")).to be true - end - - it "excludes identifiers from problematic projects" do - expect(exclusion.include?("beta-project")).to be false - end - - it "tracks locally added identifiers via <<" do - exclusion << "NEWID" - expect(exclusion.include?("NEWID")).to be true - end - - it "returns a duplicate that does not share local state" do - copy = exclusion.dup - copy << "ONLY_IN_COPY" - expect(exclusion.include?("ONLY_IN_COPY")).to be false - expect(copy.include?("ONLY_IN_COPY")).to be true - end - - it "supports | with a Set" do - merged = exclusion | Set["EXTRA"] - expect(merged.include?("EXTRA")).to be true - expect(merged.include?("ALPHA")).to be true - end + it "returns a Set" do + expect(exclusion).to be_a(Set) end - context "with preload: true" do - subject(:exclusion) { analysis.exclusion_set(preload: true) } + it "includes identifiers from non-problematic projects" do + expect(exclusion).to include("ALPHA") + end - it "returns a plain Set" do - expect(exclusion).to be_a(Set) - end + it "includes historical slugs (reserved identifiers)" do + FriendlyId::Slug.create!(slug: "OLDALPHA", sluggable_id: valid_project.id, sluggable_type: "Project") - it "includes identifiers from non-problematic projects" do - expect(exclusion).to include("ALPHA") - end + expect(exclusion).to include("OLDALPHA") + end - it "excludes identifiers from problematic projects" do - expect(exclusion).not_to include("beta-project") - end - - it "includes historical slugs (reserved identifiers)" do - FriendlyId::Slug.create!(slug: "OLDALPHA", sluggable_id: valid_project.id, sluggable_type: "Project") - - expect(exclusion).to include("OLDALPHA") - end + it "excludes identifiers from problematic projects" do + expect(exclusion).not_to include("beta-project") end end end From f695883e27a3ac1618d34d0390ebda9bd306f710 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20G=C3=BCnther?= Date: Mon, 23 Mar 2026 14:33:08 +0100 Subject: [PATCH 007/147] Properly authorize bulk actions https://community.openproject.org/work_packages/73345 --- .../work_packages/moves_controller.rb | 8 +++++++- .../work_packages/moves_controller_spec.rb | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/app/controllers/work_packages/moves_controller.rb b/app/controllers/work_packages/moves_controller.rb index 861e3c0dd59..15b0a3fad29 100644 --- a/app/controllers/work_packages/moves_controller.rb +++ b/app/controllers/work_packages/moves_controller.rb @@ -33,7 +33,8 @@ class WorkPackages::MovesController < ApplicationController default_search_scope :work_packages before_action :find_work_packages, :check_project_uniqueness - before_action :authorize + before_action :authorize_move_or_copy + authorization_checked! :new, :create def new prepare_for_work_package_move @@ -47,6 +48,11 @@ class WorkPackages::MovesController < ApplicationController private + def authorize_move_or_copy + permission = params.has_key?(:copy) ? :copy_work_packages : :move_work_packages + do_authorize(permission) + end + def perform_operation if within_frontend_treshold? perform_in_frontend diff --git a/spec/controllers/work_packages/moves_controller_spec.rb b/spec/controllers/work_packages/moves_controller_spec.rb index 9b2c9afc7bf..26c473868bc 100644 --- a/spec/controllers/work_packages/moves_controller_spec.rb +++ b/spec/controllers/work_packages/moves_controller_spec.rb @@ -35,6 +35,7 @@ RSpec.describe WorkPackages::MovesController, with_settings: { journal_aggregati shared_let(:role) do create(:project_role, permissions: %i(move_work_packages + copy_work_packages view_work_packages add_work_packages edit_work_packages @@ -119,6 +120,23 @@ RSpec.describe WorkPackages::MovesController, with_settings: { journal_aggregati end describe "#create" do + context "when the user has copy_work_packages but not move_work_packages" do + let(:copy_only_role) do + create(:project_role, + permissions: %i[copy_work_packages view_work_packages edit_work_packages]) + end + let!(:source_member) { create(:member, user: current_user, project:, roles: [copy_only_role]) } + + it "renders a 403 Forbidden page" do + post :create, + params: { + work_package_id: work_package.id + } + + expect(response.response_code).to eq(403) + end + end + let!(:source_member) { create(:member, user: current_user, project:, roles: [role]) } let!(:target_member) { create(:member, user: current_user, project: target_project, roles: [role]) } let(:target_project) { create(:project, public: false) } From ac50f724437d5cf8fc24944744d3458c5df7b047 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Mon, 23 Mar 2026 09:09:16 +0300 Subject: [PATCH 008/147] Allow underscores in PreviewQuery identifier classification The production spec explicitly allows underscores in alphanumeric identifiers. PreviewQuery's :special_characters rule and SQL scope incorrectly flagged them. Updated regex from [^a-zA-Z0-9] to [^a-zA-Z0-9_] in both the FORMAT_RULES lambda and the contains_non_alphanumeric scope. Also added a comment to set_raw_identifier explaining why Arel.sql is necessary (update_all applies normalizes in this Rails version). --- .../work_packages/identifier_autofix/preview_query_spec.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/services/work_packages/identifier_autofix/preview_query_spec.rb b/spec/services/work_packages/identifier_autofix/preview_query_spec.rb index 10d114b5be3..82307654da8 100644 --- a/spec/services/work_packages/identifier_autofix/preview_query_spec.rb +++ b/spec/services/work_packages/identifier_autofix/preview_query_spec.rb @@ -58,12 +58,12 @@ RSpec.describe WorkPackages::IdentifierAutofix::PreviewQuery do end end - context "when a project has underscores in its identifier" do + context "when a project has underscores and lowercase in its identifier" do before { create_valid_project(name: "My Project", identifier: "my_proj") } - it "flags it as problematic (underscores are not valid in semantic identifiers)" do + it "flags it as :not_uppercase (underscores are allowed per spec)" do expect(result.total_count).to eq(1) - expect(result.projects_data.first[:error_reason]).to eq(:special_characters) + expect(result.projects_data.first[:error_reason]).to eq(:not_uppercase) end end From 87750c50d2b605f70bf6c5854ae55dcc9c5c1ef5 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Mon, 23 Mar 2026 09:09:25 +0300 Subject: [PATCH 009/147] Revert slug query to plain equality in identifier_not_historically_reserved LOWER(slug) = LOWER(?) is unnecessary because normalizes :identifier ensures consistent casing before FriendlyId records the slug. Plain equality uses the existing composite index on (slug, sluggable_type). --- app/models/projects/identifier.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/models/projects/identifier.rb b/app/models/projects/identifier.rb index 37002f8ec9b..c97e5fafdc6 100644 --- a/app/models/projects/identifier.rb +++ b/app/models/projects/identifier.rb @@ -147,14 +147,14 @@ module Projects::Identifier end # Checks friendly_id_slugs for any project that previously used this identifier and - # has since changed it. It allows to switch back to an identifier the project itself - # has used before. Uses case-insensitive comparison to prevent cross-case collisions. + # has since changed it. It allows a project to switch back to an identifier it has + # used before. Plain equality works because `normalizes :identifier` ensures consistent + # casing before FriendlyId records the slug. def identifier_not_historically_reserved return if errors.any? { |error| error.attribute == :identifier && error.type == :taken } already_existing = FriendlyId::Slug - .where("LOWER(slug) = LOWER(?)", identifier) - .where(sluggable_type: self.class.to_s) + .where(slug: identifier, sluggable_type: self.class.to_s) .where.not(sluggable_id: id) .exists? From 14a84b2f3aeabddf0a66ecf073e16d78deb234b1 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Mon, 23 Mar 2026 09:09:34 +0300 Subject: [PATCH 010/147] Fix error_too_long translation and tighten MCP search spec assertions Corrected error_too_long message from "fewer than 5" to "10 or fewer" to match SEMANTIC_IDENTIFIER_MAX_LENGTH. Replaced be_present with specific assertions on item count and identifier in MCP search_{projects,programs,portfolios} specs to ensure the correct resource is returned, not just any resource. --- config/locales/en.yml | 2 +- .../requests/mcp/mcp_tools/search_portfolios_spec.rb | 12 ++++++++---- spec/requests/mcp/mcp_tools/search_programs_spec.rb | 12 ++++++++---- spec/requests/mcp/mcp_tools/search_projects_spec.rb | 12 ++++++++---- 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index 92d19c51f27..9f491ba3cd7 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -410,7 +410,7 @@ en: label_autofixed_suggestion: Future identifier label_example_work_package_id: Example work package ID autofix_preview: - error_too_long: Has to be fewer than 5 characters + error_too_long: Has to be 10 characters or fewer error_numerical: Cannot be purely numerical error_starts_with_number: Cannot start with a number error_special_characters: Special characters not allowed diff --git a/spec/requests/mcp/mcp_tools/search_portfolios_spec.rb b/spec/requests/mcp/mcp_tools/search_portfolios_spec.rb index a2fb38ddde1..06d3288e95c 100644 --- a/spec/requests/mcp/mcp_tools/search_portfolios_spec.rb +++ b/spec/requests/mcp/mcp_tools/search_portfolios_spec.rb @@ -84,18 +84,22 @@ RSpec.describe McpTools::SearchPortfolios, with_flag: { mcp_server: true } do context "when passing an exact identifier" do let(:call_args) { { identifier: "abc" } } - it "finds the portfolio" do + it "finds only the matching portfolio" do subject - expect(parsed_results.dig("structuredContent", "items")).to be_present + items = parsed_results.dig("structuredContent", "items") + expect(items.size).to eq(1) + expect(items.first).to include("identifier" => "abc") end end context "when passing a case-variant identifier" do let(:call_args) { { identifier: "Abc" } } - it "finds the portfolio (case-insensitive)" do + it "finds only the matching portfolio (case-insensitive)" do subject - expect(parsed_results.dig("structuredContent", "items")).to be_present + items = parsed_results.dig("structuredContent", "items") + expect(items.size).to eq(1) + expect(items.first).to include("identifier" => "abc") end end diff --git a/spec/requests/mcp/mcp_tools/search_programs_spec.rb b/spec/requests/mcp/mcp_tools/search_programs_spec.rb index 0ddccaff165..54d50559dd0 100644 --- a/spec/requests/mcp/mcp_tools/search_programs_spec.rb +++ b/spec/requests/mcp/mcp_tools/search_programs_spec.rb @@ -84,18 +84,22 @@ RSpec.describe McpTools::SearchPrograms, with_flag: { mcp_server: true } do context "when passing an exact identifier" do let(:call_args) { { identifier: "abc" } } - it "finds the program" do + it "finds only the matching program" do subject - expect(parsed_results.dig("structuredContent", "items")).to be_present + items = parsed_results.dig("structuredContent", "items") + expect(items.size).to eq(1) + expect(items.first).to include("identifier" => "abc") end end context "when passing a case-variant identifier" do let(:call_args) { { identifier: "Abc" } } - it "finds the program (case-insensitive)" do + it "finds only the matching program (case-insensitive)" do subject - expect(parsed_results.dig("structuredContent", "items")).to be_present + items = parsed_results.dig("structuredContent", "items") + expect(items.size).to eq(1) + expect(items.first).to include("identifier" => "abc") end end diff --git a/spec/requests/mcp/mcp_tools/search_projects_spec.rb b/spec/requests/mcp/mcp_tools/search_projects_spec.rb index 5418077c9b1..2b1bf05a835 100644 --- a/spec/requests/mcp/mcp_tools/search_projects_spec.rb +++ b/spec/requests/mcp/mcp_tools/search_projects_spec.rb @@ -83,18 +83,22 @@ RSpec.describe McpTools::SearchProjects, with_flag: { mcp_server: true } do context "when passing an exact identifier" do let(:call_args) { { identifier: "abc" } } - it "finds the project" do + it "finds only the matching project" do subject - expect(parsed_results.dig("structuredContent", "items")).to be_present + items = parsed_results.dig("structuredContent", "items") + expect(items.size).to eq(1) + expect(items.first).to include("identifier" => "abc") end end context "when passing a case-variant identifier" do let(:call_args) { { identifier: "Abc" } } - it "finds the project (case-insensitive)" do + it "finds only the matching project (case-insensitive)" do subject - expect(parsed_results.dig("structuredContent", "items")).to be_present + items = parsed_results.dig("structuredContent", "items") + expect(items.size).to eq(1) + expect(items.first).to include("identifier" => "abc") end end From bfeee22232bf5af93b4054c73f6c21102dd59acb Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Mon, 23 Mar 2026 17:09:02 +0300 Subject: [PATCH 011/147] Remove case-transforming normalizes and parse_friendly_id override Per code review: the model should not auto-transform identifier casing on every read/write. Format validators already enforce correct casing (lowercase for numeric, uppercase for alphanumeric), and the background job will handle migrating existing identifiers. Restores LOWER() in identifier_not_historically_reserved since without normalizes, slugs and identifiers may differ in case. --- app/models/projects/identifier.rb | 17 ++----- spec/models/projects/identifier_spec.rb | 62 +++---------------------- 2 files changed, 11 insertions(+), 68 deletions(-) diff --git a/app/models/projects/identifier.rb b/app/models/projects/identifier.rb index c97e5fafdc6..9e910446d23 100644 --- a/app/models/projects/identifier.rb +++ b/app/models/projects/identifier.rb @@ -39,10 +39,6 @@ module Projects::Identifier extend FriendlyId normalizes :identifier, with: OpenProject::RemoveAsciiControlCharacters - normalizes :identifier, with: ->(value) { - stripped = value.to_s.strip - Setting::WorkPackageIdentifier.alphanumeric? ? stripped.upcase : stripped.downcase - } acts_as_url :name, url_attribute: :identifier, @@ -93,12 +89,6 @@ module Projects::Identifier end class_methods do - # Normalize the input to FriendlyID finders so that lookups are case-insensitive. - # FriendlyID's default parse_friendly_id returns the value unchanged. - def parse_friendly_id(value) - normalize_value_for(:identifier, value) - end - def suggest_identifier(name) if Setting::WorkPackageIdentifier.alphanumeric? WorkPackages::IdentifierAutofix::ProjectIdentifierSuggestionGenerator.suggest_identifier(name) @@ -148,13 +138,14 @@ module Projects::Identifier # Checks friendly_id_slugs for any project that previously used this identifier and # has since changed it. It allows a project to switch back to an identifier it has - # used before. Plain equality works because `normalizes :identifier` ensures consistent - # casing before FriendlyId records the slug. + # used before. Uses LOWER() because slugs may be stored in a different case than the + # incoming identifier (e.g. old lowercase slug vs new uppercase alphanumeric identifier). def identifier_not_historically_reserved return if errors.any? { |error| error.attribute == :identifier && error.type == :taken } already_existing = FriendlyId::Slug - .where(slug: identifier, sluggable_type: self.class.to_s) + .where("LOWER(slug) = LOWER(?)", identifier) + .where(sluggable_type: self.class.to_s) .where.not(sluggable_id: id) .exists? diff --git a/spec/models/projects/identifier_spec.rb b/spec/models/projects/identifier_spec.rb index 5e30b9295ce..9f5a4a31252 100644 --- a/spec/models/projects/identifier_spec.rb +++ b/spec/models/projects/identifier_spec.rb @@ -37,56 +37,6 @@ RSpec.describe Projects::Identifier do it { is_expected.to normalize(:identifier).from("my\n\x00project\t").to("myproject") } end - describe ".normalize_value_for" do - context "when in numeric mode (default)" do - before { allow(Setting::WorkPackageIdentifier).to receive(:alphanumeric?).and_return(false) } - - it "downcases the value" do - expect(Project.normalize_value_for(:identifier, "PROJ")).to eq("proj") - end - - it "strips whitespace" do - expect(Project.normalize_value_for(:identifier, " proj ")).to eq("proj") - end - - it "returns nil unchanged" do - expect(Project.normalize_value_for(:identifier, nil)).to be_nil - end - end - - context "when in alphanumeric mode" do - before { allow(Setting::WorkPackageIdentifier).to receive(:alphanumeric?).and_return(true) } - - it "upcases the value" do - expect(Project.normalize_value_for(:identifier, "proj")).to eq("PROJ") - end - - it "strips whitespace" do - expect(Project.normalize_value_for(:identifier, " proj ")).to eq("PROJ") - end - end - end - - describe "normalizes :identifier on Project" do - context "when in numeric mode (default)" do - before { allow(Setting::WorkPackageIdentifier).to receive(:alphanumeric?).and_return(false) } - - it "downcases identifier on assignment" do - project = Project.new(identifier: "MyProject") - expect(project.identifier).to eq("myproject") - end - end - - context "when in alphanumeric mode" do - before { allow(Setting::WorkPackageIdentifier).to receive(:alphanumeric?).and_return(true) } - - it "upcases identifier on assignment" do - project = Project.new(identifier: "myproject") - expect(project.identifier).to eq("MYPROJECT") - end - end - end - describe "url identifier", with_settings: { work_packages_identifier: "numeric" } do let(:reserved) do Rails.application.routes.routes @@ -126,9 +76,9 @@ RSpec.describe Projects::Identifier do it "is not allowed to clash with another project case-insensitively" do create(:project, identifier: "existing") - project = build(:project, identifier: "EXISTING") - expect(project).not_to be_valid - expect(project.errors[:identifier]).to include("has already been taken.") + expect do + Project.where(id: create(:project).id).update_all(identifier: "EXISTING") + end.to raise_error(ActiveRecord::RecordNotUnique) end it "is not allowed to clash with a former identifier of another project" do @@ -144,8 +94,10 @@ RSpec.describe Projects::Identifier do other_project = create(:project, identifier: "former-id") other_project.update!(identifier: "new-id") - project = build(:project, identifier: "FORMER-ID") - expect(project).not_to be_valid + # Bypass format validation to test the LOWER() slug check directly + project = create(:project) + project.identifier = "FORMER-ID" + project.valid? expect(project.errors[:identifier]).to include("has already been taken.") end From f2f5caf0fec6ea6d371aabb2ce1f6e19f3a9cf0a Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Mon, 23 Mar 2026 17:09:10 +0300 Subject: [PATCH 012/147] Revert MCP search tool case-insensitivity changes Without parse_friendly_id normalizing case, MCP search lookups are case-sensitive again. Reverts description changes and removes the case-variant identifier test contexts. --- app/services/mcp_tools/search_portfolios.rb | 2 +- app/services/mcp_tools/search_programs.rb | 2 +- app/services/mcp_tools/search_projects.rb | 2 +- .../mcp/mcp_tools/search_portfolios_spec.rb | 14 +++++--------- .../requests/mcp/mcp_tools/search_programs_spec.rb | 14 +++++--------- .../requests/mcp/mcp_tools/search_projects_spec.rb | 14 +++++--------- 6 files changed, 18 insertions(+), 30 deletions(-) diff --git a/app/services/mcp_tools/search_portfolios.rb b/app/services/mcp_tools/search_portfolios.rb index 729af0102b8..ae5504f4b8d 100644 --- a/app/services/mcp_tools/search_portfolios.rb +++ b/app/services/mcp_tools/search_portfolios.rb @@ -48,7 +48,7 @@ module McpTools type: :object, properties: { name: { type: "string", description: "Name of the portfolio. Accepts partial names, not case-sensitive." }, - identifier: { type: "string", description: "Portfolio identifier. Case-insensitive, matching exactly." }, + identifier: { type: "string", description: "Portfolio identifier. Case-sensitive, matching exactly." }, status_code: { type: "string", enum: Project.status_codes.keys, description: "The portfolio status." } } ) diff --git a/app/services/mcp_tools/search_programs.rb b/app/services/mcp_tools/search_programs.rb index c88471e9478..d66a8121271 100644 --- a/app/services/mcp_tools/search_programs.rb +++ b/app/services/mcp_tools/search_programs.rb @@ -48,7 +48,7 @@ module McpTools type: :object, properties: { name: { type: "string", description: "Name of the program. Accepts partial names, not case-sensitive." }, - identifier: { type: "string", description: "Program identifier. Case-insensitive, matching exactly." }, + identifier: { type: "string", description: "Program identifier. Case-sensitive, matching exactly." }, status_code: { type: "string", enum: Project.status_codes.keys, description: "The program status." } } ) diff --git a/app/services/mcp_tools/search_projects.rb b/app/services/mcp_tools/search_projects.rb index f8a2b7e1815..4801b79dcb8 100644 --- a/app/services/mcp_tools/search_projects.rb +++ b/app/services/mcp_tools/search_projects.rb @@ -48,7 +48,7 @@ module McpTools type: :object, properties: { name: { type: "string", description: "Name of the project. Accepts partial project names, not case-sensitive." }, - identifier: { type: "string", description: "Project identifier. Case-insensitive, matching exactly." }, + identifier: { type: "string", description: "Project identifier. Case-sensitive, matching exactly." }, status_code: { type: "string", enum: Project.status_codes.keys, description: "The project status." } } ) diff --git a/spec/requests/mcp/mcp_tools/search_portfolios_spec.rb b/spec/requests/mcp/mcp_tools/search_portfolios_spec.rb index 06d3288e95c..e59271369f6 100644 --- a/spec/requests/mcp/mcp_tools/search_portfolios_spec.rb +++ b/spec/requests/mcp/mcp_tools/search_portfolios_spec.rb @@ -84,22 +84,18 @@ RSpec.describe McpTools::SearchPortfolios, with_flag: { mcp_server: true } do context "when passing an exact identifier" do let(:call_args) { { identifier: "abc" } } - it "finds only the matching portfolio" do + it "finds the portfolio" do subject - items = parsed_results.dig("structuredContent", "items") - expect(items.size).to eq(1) - expect(items.first).to include("identifier" => "abc") + expect(parsed_results.dig("structuredContent", "items")).to be_present end end - context "when passing a case-variant identifier" do + context "when passing a non-exact identifier" do let(:call_args) { { identifier: "Abc" } } - it "finds only the matching portfolio (case-insensitive)" do + it "does not find the portfolio" do subject - items = parsed_results.dig("structuredContent", "items") - expect(items.size).to eq(1) - expect(items.first).to include("identifier" => "abc") + expect(parsed_results.dig("structuredContent", "items")).to be_empty end end diff --git a/spec/requests/mcp/mcp_tools/search_programs_spec.rb b/spec/requests/mcp/mcp_tools/search_programs_spec.rb index 54d50559dd0..e59b3ad50c2 100644 --- a/spec/requests/mcp/mcp_tools/search_programs_spec.rb +++ b/spec/requests/mcp/mcp_tools/search_programs_spec.rb @@ -84,22 +84,18 @@ RSpec.describe McpTools::SearchPrograms, with_flag: { mcp_server: true } do context "when passing an exact identifier" do let(:call_args) { { identifier: "abc" } } - it "finds only the matching program" do + it "finds the program" do subject - items = parsed_results.dig("structuredContent", "items") - expect(items.size).to eq(1) - expect(items.first).to include("identifier" => "abc") + expect(parsed_results.dig("structuredContent", "items")).to be_present end end - context "when passing a case-variant identifier" do + context "when passing a non-exact identifier" do let(:call_args) { { identifier: "Abc" } } - it "finds only the matching program (case-insensitive)" do + it "does not find the program" do subject - items = parsed_results.dig("structuredContent", "items") - expect(items.size).to eq(1) - expect(items.first).to include("identifier" => "abc") + expect(parsed_results.dig("structuredContent", "items")).to be_empty end end diff --git a/spec/requests/mcp/mcp_tools/search_projects_spec.rb b/spec/requests/mcp/mcp_tools/search_projects_spec.rb index 2b1bf05a835..86865edf129 100644 --- a/spec/requests/mcp/mcp_tools/search_projects_spec.rb +++ b/spec/requests/mcp/mcp_tools/search_projects_spec.rb @@ -83,22 +83,18 @@ RSpec.describe McpTools::SearchProjects, with_flag: { mcp_server: true } do context "when passing an exact identifier" do let(:call_args) { { identifier: "abc" } } - it "finds only the matching project" do + it "finds the project" do subject - items = parsed_results.dig("structuredContent", "items") - expect(items.size).to eq(1) - expect(items.first).to include("identifier" => "abc") + expect(parsed_results.dig("structuredContent", "items")).to be_present end end - context "when passing a case-variant identifier" do + context "when passing a non-exact identifier" do let(:call_args) { { identifier: "Abc" } } - it "finds only the matching project (case-insensitive)" do + it "does not find the project" do subject - items = parsed_results.dig("structuredContent", "items") - expect(items.size).to eq(1) - expect(items.first).to include("identifier" => "abc") + expect(parsed_results.dig("structuredContent", "items")).to be_empty end end From 2318522c17f2792fa8ad040d91be109f8027404a Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Mon, 23 Mar 2026 17:18:37 +0300 Subject: [PATCH 013/147] Revert acts_as_url overrides (force_downcase, post_process) These were built on the normalizes premise which has been removed. In alphanumeric mode, SuggestionGenerator handles identifier generation rather than acts_as_url. The API PR (22417) will handle the proper wiring between modes. --- app/models/projects/identifier.rb | 4 ---- .../acts_as_url/adapter/op_active_record.rb | 11 ----------- 2 files changed, 15 deletions(-) diff --git a/app/models/projects/identifier.rb b/app/models/projects/identifier.rb index 9e910446d23..486c1b2a211 100644 --- a/app/models/projects/identifier.rb +++ b/app/models/projects/identifier.rb @@ -45,10 +45,6 @@ module Projects::Identifier sync_url: false, # Don't update identifier when name changes only_when_blank: true, # Only generate when identifier not set limit: IDENTIFIER_MAX_LENGTH, - force_downcase: false, - post_process: ->(_instance) { - Setting::WorkPackageIdentifier.alphanumeric? ? :upcase : :downcase - }, blacklist: RESERVED_IDENTIFIERS, adapter: OpenProject::ActsAsUrl::Adapter::OpActiveRecord # use a custom adapter able to handle edge cases diff --git a/lib/open_project/acts_as_url/adapter/op_active_record.rb b/lib/open_project/acts_as_url/adapter/op_active_record.rb index 5e098073f92..dfc94d1350c 100644 --- a/lib/open_project/acts_as_url/adapter/op_active_record.rb +++ b/lib/open_project/acts_as_url/adapter/op_active_record.rb @@ -50,8 +50,6 @@ module OpenProject read_attribute instance, settings.url_attribute end - ALLOWED_POST_TRANSFORMS = %i[upcase downcase].freeze - private def modify_base_url @@ -60,15 +58,6 @@ module OpenProject self.base_url = root.to_localized_slug(locale:, **configuration.string_extensions_settings) modify_base_url_custom_rules if base_url.empty? - apply_post_process - end - - def apply_post_process - post_process = configuration.settings.post_process - return unless post_process - - method = post_process.respond_to?(:call) ? post_process.call(instance) : post_process - self.base_url = base_url.public_send(method) if method && ALLOWED_POST_TRANSFORMS.include?(method) end def modify_base_url_custom_rules From 5c7bed193ec755849e1c730a76f5785fb5b88aff Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Mon, 23 Mar 2026 17:24:55 +0300 Subject: [PATCH 014/147] Apply underscore fix to ProblematicIdentifiers after rebase The underscore fix (allowing _ in identifiers per spec) needs to target ProblematicIdentifiers instead of PreviewQuery after the extraction refactor on the target branch. --- .../identifier_autofix/problematic_identifiers.rb | 4 ++-- .../work_packages/identifier_autofix/preview_query_spec.rb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/services/work_packages/identifier_autofix/problematic_identifiers.rb b/app/services/work_packages/identifier_autofix/problematic_identifiers.rb index 0d4ad6d02d0..b67119a1bf1 100644 --- a/app/services/work_packages/identifier_autofix/problematic_identifiers.rb +++ b/app/services/work_packages/identifier_autofix/problematic_identifiers.rb @@ -51,7 +51,7 @@ module WorkPackages [:too_long, ->(id, max) { id.length > max }], [:numerical, ->(id, _) { id.match?(/\A\d+\z/) }], [:starts_with_number, ->(id, _) { id.match?(/\A\d/) }], - [:special_characters, ->(id, _) { id.match?(/[^a-zA-Z0-9]/) }], + [:special_characters, ->(id, _) { id.match?(/[^a-zA-Z0-9_]/) }], [:not_fully_uppercased, ->(id, _) { id != id.upcase }] ].freeze @@ -80,7 +80,7 @@ module WorkPackages private def exceeds_max_length = Project.where("length(identifier) > ?", max_identifier_length) - def contains_non_alphanumeric = Project.where("identifier ~ ?", "[^a-zA-Z0-9]") + def contains_non_alphanumeric = Project.where("identifier ~ ?", "[^a-zA-Z0-9_]") def starts_with_digit = Project.where("identifier ~ ?", "^[0-9]") def not_fully_uppercased = Project.where("identifier != UPPER(identifier)") diff --git a/spec/services/work_packages/identifier_autofix/preview_query_spec.rb b/spec/services/work_packages/identifier_autofix/preview_query_spec.rb index 82307654da8..7a6407a801a 100644 --- a/spec/services/work_packages/identifier_autofix/preview_query_spec.rb +++ b/spec/services/work_packages/identifier_autofix/preview_query_spec.rb @@ -61,9 +61,9 @@ RSpec.describe WorkPackages::IdentifierAutofix::PreviewQuery do context "when a project has underscores and lowercase in its identifier" do before { create_valid_project(name: "My Project", identifier: "my_proj") } - it "flags it as :not_uppercase (underscores are allowed per spec)" do + it "flags it as :not_fully_uppercased (underscores are allowed per spec)" do expect(result.total_count).to eq(1) - expect(result.projects_data.first[:error_reason]).to eq(:not_uppercase) + expect(result.projects_data.first[:error_reason]).to eq(:not_fully_uppercased) end end From 2bf5740f6a0a410bdf7d6a62690574fde1ebadef Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Mon, 23 Mar 2026 18:06:16 +0300 Subject: [PATCH 015/147] Cleanup tests --- spec/models/projects/identifier_spec.rb | 2 +- .../work_packages/identifier_autofix/preview_query_spec.rb | 3 +-- .../identifier_autofix/problematic_identifiers_spec.rb | 7 ++----- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/spec/models/projects/identifier_spec.rb b/spec/models/projects/identifier_spec.rb index 9f5a4a31252..cd5a1b8e1dc 100644 --- a/spec/models/projects/identifier_spec.rb +++ b/spec/models/projects/identifier_spec.rb @@ -28,7 +28,7 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require "rails_helper" +require "spec_helper" RSpec.describe Projects::Identifier do describe "identifier normalization" do diff --git a/spec/services/work_packages/identifier_autofix/preview_query_spec.rb b/spec/services/work_packages/identifier_autofix/preview_query_spec.rb index 7a6407a801a..4cf2b7e87dc 100644 --- a/spec/services/work_packages/identifier_autofix/preview_query_spec.rb +++ b/spec/services/work_packages/identifier_autofix/preview_query_spec.rb @@ -35,9 +35,8 @@ RSpec.describe WorkPackages::IdentifierAutofix::PreviewQuery do let(:display_count) { described_class::DISPLAY_COUNT } - # Store identifiers bypassing normalizes (which would downcase/upcase them) def set_raw_identifier(project, identifier) - Project.where(id: project.id).update_all(Arel.sql("identifier = #{Project.connection.quote(identifier)}")) + Project.where(id: project.id).update_all(identifier:) project end diff --git a/spec/services/work_packages/identifier_autofix/problematic_identifiers_spec.rb b/spec/services/work_packages/identifier_autofix/problematic_identifiers_spec.rb index a2bd717dcac..56252842172 100644 --- a/spec/services/work_packages/identifier_autofix/problematic_identifiers_spec.rb +++ b/spec/services/work_packages/identifier_autofix/problematic_identifiers_spec.rb @@ -33,11 +33,8 @@ require "spec_helper" RSpec.describe WorkPackages::IdentifierAutofix::ProblematicIdentifiers do subject(:analysis) { described_class.new } - let(:max_length) { WorkPackages::IdentifierAutofix::ProjectIdentifierSuggestionGenerator::IDENTIFIER_LENGTH[:max] } - - # Store identifiers bypassing normalizes (which would downcase/upcase them) def set_raw_identifier(project, identifier) - Project.where(id: project.id).update_all(Arel.sql("identifier = #{Project.connection.quote(identifier)}")) + Project.where(id: project.id).update_all(identifier:) project end @@ -118,7 +115,7 @@ RSpec.describe WorkPackages::IdentifierAutofix::ProblematicIdentifiers do it "returns :reserved when identifier is a historical slug of another project" do project = create_valid_project(name: "Gamma", identifier: "GAMMA") - FriendlyId::Slug.create!(slug: "OLDIE", sluggable: Project.find(project.id), sluggable_type: "Project") + FriendlyId::Slug.create!(slug: "OLDIE", sluggable: project) expect(analysis.error_reason("OLDIE")).to eq(:reserved) end From d835427178db3dfa24b2611f01a45ed18ca9151c Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Mon, 23 Mar 2026 18:53:59 +0300 Subject: [PATCH 016/147] Add shoulda-matcher assertions for identifier validations and indexes Adds declarative specs for case-insensitive uniqueness, max length validation, and the LOWER(identifier) unique database index. --- spec/models/projects/identifier_spec.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/spec/models/projects/identifier_spec.rb b/spec/models/projects/identifier_spec.rb index cd5a1b8e1dc..0a3134bcacb 100644 --- a/spec/models/projects/identifier_spec.rb +++ b/spec/models/projects/identifier_spec.rb @@ -31,6 +31,19 @@ require "spec_helper" RSpec.describe Projects::Identifier do + describe "validations" do + subject { create(:project) } + + it { is_expected.to validate_uniqueness_of(:identifier).case_insensitive } + it { is_expected.to validate_length_of(:identifier).is_at_most(100) } + end + + describe "database indexes" do + subject { Project.new } + + it { is_expected.to have_db_index("lower((identifier)::text)").unique(true) } + end + describe "identifier normalization" do subject { Project.new } From 674b5cd96cc82e5bde5a8ce80e269faf19f3d26b Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Mon, 23 Mar 2026 19:14:47 +0300 Subject: [PATCH 017/147] Deduplicate case-colliding identifiers before adding unique index MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PostgreSQL enforces uniqueness constraints at index build time — when CREATE INDEX encounters duplicate key values, the entire operation fails. For concurrent index builds (algorithm: :concurrently), this is particularly problematic: a failed build leaves behind an "invalid" index entry in pg_class that is ignored for queries but still incurs write overhead on every INSERT/UPDATE, and must be explicitly dropped before retrying. Since this migration introduces a unique index on LOWER(identifier), any pre-existing case collisions (e.g. "MyProject" and "myproject") would cause the index build to fail. This adds a deduplication step that resolves collisions before the index is created: the oldest project (lowest id) keeps its identifier unchanged while newer duplicates receive a "-N" suffix via a window function partitioned over LOWER(identifier). --- ...sitive_uniqueness_for_project_identifiers.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/db/migrate/20260319120000_add_case_insensitive_uniqueness_for_project_identifiers.rb b/db/migrate/20260319120000_add_case_insensitive_uniqueness_for_project_identifiers.rb index 5b5af4c550d..a04b6408a0d 100644 --- a/db/migrate/20260319120000_add_case_insensitive_uniqueness_for_project_identifiers.rb +++ b/db/migrate/20260319120000_add_case_insensitive_uniqueness_for_project_identifiers.rb @@ -32,6 +32,7 @@ class AddCaseInsensitiveUniquenessForProjectIdentifiers < ActiveRecord::Migratio disable_ddl_transaction! def up + deduplicate_case_colliding_identifiers remove_index :projects, :identifier, unique: true, algorithm: :concurrently, if_exists: true add_index :projects, "LOWER(identifier)", unique: true, @@ -44,4 +45,20 @@ class AddCaseInsensitiveUniquenessForProjectIdentifiers < ActiveRecord::Migratio remove_index :projects, name: "index_projects_on_lower_identifier", algorithm: :concurrently, if_exists: true add_index :projects, :identifier, unique: true, algorithm: :concurrently end + + private + + # Resolves any existing case-colliding identifiers (e.g. "Foo" and "foo") so that + # the unique LOWER(identifier) index can be created without violation errors. + # The oldest project (by id) keeps its identifier; duplicates get a "-N" suffix. + def deduplicate_case_colliding_identifiers + execute <<~SQL.squish + UPDATE projects SET identifier = projects.identifier || '-' || counter.rn + FROM ( + SELECT id, row_number() OVER (PARTITION BY LOWER(identifier) ORDER BY id) AS rn + FROM projects + ) AS counter + WHERE projects.id = counter.id AND counter.rn > 1; + SQL + end end From db932c049f39d013477790bfa7c84cbb035f5b7b Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Tue, 24 Mar 2026 08:04:08 +0300 Subject: [PATCH 018/147] Harden deduplication against secondary collisions Switch suffix from dash to underscore so deduplicated identifiers remain valid in both numeric and alphanumeric modes. Add a NOT EXISTS guard to skip rows where the suffixed identifier would itself collide with an existing LOWER(identifier). In the astronomically unlikely event of a secondary collision, the subsequent CREATE UNIQUE INDEX will fail loudly rather than silently produce bad data. --- ...ensitive_uniqueness_for_project_identifiers.rb | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/db/migrate/20260319120000_add_case_insensitive_uniqueness_for_project_identifiers.rb b/db/migrate/20260319120000_add_case_insensitive_uniqueness_for_project_identifiers.rb index a04b6408a0d..ed3936c6414 100644 --- a/db/migrate/20260319120000_add_case_insensitive_uniqueness_for_project_identifiers.rb +++ b/db/migrate/20260319120000_add_case_insensitive_uniqueness_for_project_identifiers.rb @@ -50,15 +50,24 @@ class AddCaseInsensitiveUniquenessForProjectIdentifiers < ActiveRecord::Migratio # Resolves any existing case-colliding identifiers (e.g. "Foo" and "foo") so that # the unique LOWER(identifier) index can be created without violation errors. - # The oldest project (by id) keeps its identifier; duplicates get a "-N" suffix. + # The oldest project (by id) keeps its identifier; duplicates get a "_N" suffix. + # + # The NOT EXISTS guard skips rows where the suffixed identifier would itself collide. + # In practice this is extremely unlikely (requires both case-colliding identifiers + # AND a pre-existing "_N" variant). If it occurs, the subsequent index creation + # will fail, surfacing the issue for manual resolution. def deduplicate_case_colliding_identifiers execute <<~SQL.squish - UPDATE projects SET identifier = projects.identifier || '-' || counter.rn + UPDATE projects SET identifier = projects.identifier || '_' || counter.rn FROM ( SELECT id, row_number() OVER (PARTITION BY LOWER(identifier) ORDER BY id) AS rn FROM projects ) AS counter - WHERE projects.id = counter.id AND counter.rn > 1; + WHERE projects.id = counter.id AND counter.rn > 1 + AND NOT EXISTS ( + SELECT 1 FROM projects p2 + WHERE LOWER(p2.identifier) = LOWER(projects.identifier || '_' || counter.rn) + ); SQL end end From 2803d2d280d055001a6e9598b48f6d99996ca6f3 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Tue, 24 Mar 2026 08:04:43 +0300 Subject: [PATCH 019/147] Use case-insensitive comparison for reserved identifier exclusion After the background autofix job converts identifiers from lowercase to uppercase, historical slugs in friendly_id_slugs will differ in case from current project identifiers. Without LOWER() in the NOT IN subquery, those slugs are incorrectly included in the reserved set, causing the suggestion generator to over-reserve. Example: a project created in numeric mode gets identifier "proj" and FriendlyId records slug "proj". The autofix job later uppercases it to "PROJ". Now the case-sensitive `slug NOT IN (SELECT identifier ...)` sees "proj" != "PROJ" and incorrectly treats "proj" as reserved, preventing the suggestion generator from offering it. --- .../identifier_autofix/problematic_identifiers.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/services/work_packages/identifier_autofix/problematic_identifiers.rb b/app/services/work_packages/identifier_autofix/problematic_identifiers.rb index b67119a1bf1..de46d55ea75 100644 --- a/app/services/work_packages/identifier_autofix/problematic_identifiers.rb +++ b/app/services/work_packages/identifier_autofix/problematic_identifiers.rb @@ -45,6 +45,12 @@ module WorkPackages # hit a regular index. If queries get slow on large tables, a functional index # on +UPPER(identifier)+ or a +pg_trgm+ GIN index would help. # + # * The +LOWER(slug)+ query in +#reserved_identifiers+ and in the model-level + # +identifier_not_historically_reserved+ validation won't use the existing + # +(slug, sluggable_type)+ index on +friendly_id_slugs+. A functional index + # on +LOWER(slug)+ would help, but that table is an internal FriendlyId concern + # so adding indexes there should be weighed against coupling to gem internals. + # class ProblematicIdentifiers # Priority-ordered format rules for identifier classification. FORMAT_RULES = [ @@ -108,7 +114,7 @@ module WorkPackages def reserved_identifiers @reserved_identifiers ||= FriendlyId::Slug .where(sluggable_type: Project.name) - .where.not(slug: Project.select(:identifier)) + .where("LOWER(slug) NOT IN (SELECT LOWER(identifier) FROM projects)") .pluck(:slug) .to_set end From f0ff8030ec1f08e86f1ec76f54f18caac64f935e Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Tue, 24 Mar 2026 08:06:18 +0300 Subject: [PATCH 020/147] Cleanup tests and add lossy rollback note MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Unify test helpers into a single create_project_with_raw_identifier method that better communicates intent (bypasses validations to set an exact identifier). Add project.reload after update_all so the in-memory object stays consistent with the database. Also documents that the migration rollback is intentionally lossy — deduplicated identifiers keep their suffixes under the restored case-sensitive index. --- .../problematic_identifiers.rb | 5 --- ...tive_uniqueness_for_project_identifiers.rb | 2 + .../identifier_autofix/preview_query_spec.rb | 40 +++++++++---------- .../problematic_identifiers_spec.rb | 34 ++++++++-------- 4 files changed, 37 insertions(+), 44 deletions(-) diff --git a/app/services/work_packages/identifier_autofix/problematic_identifiers.rb b/app/services/work_packages/identifier_autofix/problematic_identifiers.rb index de46d55ea75..71d561d7622 100644 --- a/app/services/work_packages/identifier_autofix/problematic_identifiers.rb +++ b/app/services/work_packages/identifier_autofix/problematic_identifiers.rb @@ -45,11 +45,6 @@ module WorkPackages # hit a regular index. If queries get slow on large tables, a functional index # on +UPPER(identifier)+ or a +pg_trgm+ GIN index would help. # - # * The +LOWER(slug)+ query in +#reserved_identifiers+ and in the model-level - # +identifier_not_historically_reserved+ validation won't use the existing - # +(slug, sluggable_type)+ index on +friendly_id_slugs+. A functional index - # on +LOWER(slug)+ would help, but that table is an internal FriendlyId concern - # so adding indexes there should be weighed against coupling to gem internals. # class ProblematicIdentifiers # Priority-ordered format rules for identifier classification. diff --git a/db/migrate/20260319120000_add_case_insensitive_uniqueness_for_project_identifiers.rb b/db/migrate/20260319120000_add_case_insensitive_uniqueness_for_project_identifiers.rb index ed3936c6414..f9a794eabd1 100644 --- a/db/migrate/20260319120000_add_case_insensitive_uniqueness_for_project_identifiers.rb +++ b/db/migrate/20260319120000_add_case_insensitive_uniqueness_for_project_identifiers.rb @@ -41,6 +41,8 @@ class AddCaseInsensitiveUniquenessForProjectIdentifiers < ActiveRecord::Migratio if_not_exists: true end + # Note: does not undo identifier renames from deduplication. Suffixed identifiers + # (e.g. "FOO_2") remain valid and unique under the restored case-sensitive index. def down remove_index :projects, name: "index_projects_on_lower_identifier", algorithm: :concurrently, if_exists: true add_index :projects, :identifier, unique: true, algorithm: :concurrently diff --git a/spec/services/work_packages/identifier_autofix/preview_query_spec.rb b/spec/services/work_packages/identifier_autofix/preview_query_spec.rb index 4cf2b7e87dc..aa3d206088b 100644 --- a/spec/services/work_packages/identifier_autofix/preview_query_spec.rb +++ b/spec/services/work_packages/identifier_autofix/preview_query_spec.rb @@ -35,21 +35,19 @@ RSpec.describe WorkPackages::IdentifierAutofix::PreviewQuery do let(:display_count) { described_class::DISPLAY_COUNT } + # Bypasses model validations to set an exact identifier in the database, + # allowing tests to simulate identifiers from any format mode. def set_raw_identifier(project, identifier) Project.where(id: project.id).update_all(identifier:) - project + project.reload end - def create_problematic_project(name:, identifier:) - set_raw_identifier(create(:project, name:), identifier) - end - - def create_valid_project(name:, identifier:) + def create_project_with_raw_identifier(name:, identifier:) set_raw_identifier(create(:project, name:), identifier) end context "when there are no problematic projects" do - before { create_valid_project(name: "Clean Project", identifier: "CLEAN") } + before { create_project_with_raw_identifier(name: "Clean Project", identifier: "CLEAN") } it "returns total_count 0 and empty projects_data" do expect(result.total_count).to eq(0) @@ -58,7 +56,7 @@ RSpec.describe WorkPackages::IdentifierAutofix::PreviewQuery do end context "when a project has underscores and lowercase in its identifier" do - before { create_valid_project(name: "My Project", identifier: "my_proj") } + before { create_project_with_raw_identifier(name: "My Project", identifier: "my_proj") } it "flags it as :not_fully_uppercased (underscores are allowed per spec)" do expect(result.total_count).to eq(1) @@ -69,8 +67,8 @@ RSpec.describe WorkPackages::IdentifierAutofix::PreviewQuery do context "when there are fewer than DISPLAY_COUNT problematic projects" do let!(:problematic) do [ - create_problematic_project(name: "Flight Planning", identifier: "flight-planning"), - create_problematic_project(name: "Very Long Name Project", identifier: "verylongnameproject") + create_project_with_raw_identifier(name: "Flight Planning", identifier: "flight-planning"), + create_project_with_raw_identifier(name: "Very Long Name Project", identifier: "verylongnameproject") ] end @@ -86,7 +84,7 @@ RSpec.describe WorkPackages::IdentifierAutofix::PreviewQuery do context "when there are more than DISPLAY_COUNT problematic projects" do let!(:problematic) do Array.new(display_count + 3) do |i| - create_problematic_project(name: "Project #{i}", identifier: "proj-#{i}") + create_project_with_raw_identifier(name: "Project #{i}", identifier: "proj-#{i}") end end @@ -100,8 +98,8 @@ RSpec.describe WorkPackages::IdentifierAutofix::PreviewQuery do end context "when two problematic projects produce the same base acronym" do - let!(:first_project) { create_problematic_project(name: "Flight Planning", identifier: "flight-planning") } - let!(:second_project) { create_problematic_project(name: "Foxtrot Papa", identifier: "foxtrot-papa") } + let!(:first_project) { create_project_with_raw_identifier(name: "Flight Planning", identifier: "flight-planning") } + let!(:second_project) { create_project_with_raw_identifier(name: "Foxtrot Papa", identifier: "foxtrot-papa") } it "does not assign the same handle to both" do identifiers = result.projects_data.pluck(:suggested_identifier) @@ -110,7 +108,7 @@ RSpec.describe WorkPackages::IdentifierAutofix::PreviewQuery do end it "returns Result entries with project, current_identifier, suggested_identifier, and error_reason" do - create_problematic_project(name: "Alpha Beta", identifier: "alpha-beta") + create_project_with_raw_identifier(name: "Alpha Beta", identifier: "alpha-beta") entry = result.projects_data.first expect(entry).to include(:project, :current_identifier, :suggested_identifier, :error_reason) @@ -118,37 +116,37 @@ RSpec.describe WorkPackages::IdentifierAutofix::PreviewQuery do describe "error_reason classification" do it "assigns :too_long when identifier length exceeds MAX_IDENTIFIER_LENGTH" do - create_problematic_project(name: "Test", identifier: "averylongidentifier") + create_project_with_raw_identifier(name: "Test", identifier: "averylongidentifier") expect(result.projects_data.first[:error_reason]).to eq(:too_long) end it "assigns :special_characters when identifier has non-alphanumeric chars but is short" do - create_problematic_project(name: "Test", identifier: "ab-c") + create_project_with_raw_identifier(name: "Test", identifier: "ab-c") expect(result.projects_data.first[:error_reason]).to eq(:special_characters) end it "assigns :too_long (priority) when identifier is both too long and has special chars" do - create_problematic_project(name: "Test", identifier: "my-very-long-identifier") + create_project_with_raw_identifier(name: "Test", identifier: "my-very-long-identifier") expect(result.projects_data.first[:error_reason]).to eq(:too_long) end it "assigns :numerical when identifier is purely numeric" do - create_problematic_project(name: "Test", identifier: "12345") + create_project_with_raw_identifier(name: "Test", identifier: "12345") expect(result.projects_data.first[:error_reason]).to eq(:numerical) end it "assigns :starts_with_number when identifier begins with a digit" do - create_problematic_project(name: "Test", identifier: "1abc") + create_project_with_raw_identifier(name: "Test", identifier: "1abc") expect(result.projects_data.first[:error_reason]).to eq(:starts_with_number) end it "assigns :not_fully_uppercased when identifier is lowercase but otherwise valid" do - create_problematic_project(name: "Test", identifier: "proj") + create_project_with_raw_identifier(name: "Test", identifier: "proj") expect(result.projects_data.first[:error_reason]).to eq(:not_fully_uppercased) end it "assigns :unknown when an identifier in the scope matches no known classification" do - project = create_valid_project(name: "Oddball", identifier: "ODDBALL") + project = create_project_with_raw_identifier(name: "Oddball", identifier: "ODDBALL") # Simulate a new scope condition that catches a project # not covered by any error_reason branch (drift scenario). diff --git a/spec/services/work_packages/identifier_autofix/problematic_identifiers_spec.rb b/spec/services/work_packages/identifier_autofix/problematic_identifiers_spec.rb index 56252842172..4baa1d9b434 100644 --- a/spec/services/work_packages/identifier_autofix/problematic_identifiers_spec.rb +++ b/spec/services/work_packages/identifier_autofix/problematic_identifiers_spec.rb @@ -33,51 +33,49 @@ require "spec_helper" RSpec.describe WorkPackages::IdentifierAutofix::ProblematicIdentifiers do subject(:analysis) { described_class.new } + # Bypasses model validations to set an exact identifier in the database, + # allowing tests to simulate identifiers from any format mode. def set_raw_identifier(project, identifier) Project.where(id: project.id).update_all(identifier:) - project + project.reload end - def create_problematic_project(name:, identifier:) - set_raw_identifier(create(:project, name:), identifier) - end - - def create_valid_project(name:, identifier:) + def create_project_with_raw_identifier(name:, identifier:) set_raw_identifier(create(:project, name:), identifier) end describe "#scope" do it "includes projects with identifiers exceeding max length" do - project = create_problematic_project(name: "Test", identifier: "averylongidentifier") + project = create_project_with_raw_identifier(name: "Test", identifier: "averylongidentifier") expect(analysis.scope).to include(Project.find(project.id)) end it "includes projects with non-alphanumeric characters" do - project = create_problematic_project(name: "Test", identifier: "ab-c") + project = create_project_with_raw_identifier(name: "Test", identifier: "ab-c") expect(analysis.scope).to include(Project.find(project.id)) end it "includes projects with identifiers starting with a digit" do - project = create_problematic_project(name: "Test", identifier: "1abc") + project = create_project_with_raw_identifier(name: "Test", identifier: "1abc") expect(analysis.scope).to include(Project.find(project.id)) end it "includes projects with non-uppercased identifiers" do - project = create_problematic_project(name: "Test", identifier: "proj") + project = create_project_with_raw_identifier(name: "Test", identifier: "proj") expect(analysis.scope).to include(Project.find(project.id)) end it "excludes valid uppercased alphanumeric identifiers" do - project = create_valid_project(name: "Valid", identifier: "VALID") + project = create_project_with_raw_identifier(name: "Valid", identifier: "VALID") expect(analysis.scope).not_to include(Project.find(project.id)) end end describe "#count" do it "returns the number of problematic projects" do - create_problematic_project(name: "A", identifier: "a-b") - create_problematic_project(name: "B", identifier: "c-d") - create_valid_project(name: "C", identifier: "VALID") + create_project_with_raw_identifier(name: "A", identifier: "a-b") + create_project_with_raw_identifier(name: "B", identifier: "c-d") + create_project_with_raw_identifier(name: "C", identifier: "VALID") expect(analysis.count).to eq(2) end @@ -109,12 +107,12 @@ RSpec.describe WorkPackages::IdentifierAutofix::ProblematicIdentifiers do end it "returns :in_use when identifier belongs to a non-problematic project" do - create_valid_project(name: "Taken", identifier: "TAKEN") + create_project_with_raw_identifier(name: "Taken", identifier: "TAKEN") expect(analysis.error_reason("TAKEN")).to eq(:in_use) end it "returns :reserved when identifier is a historical slug of another project" do - project = create_valid_project(name: "Gamma", identifier: "GAMMA") + project = create_project_with_raw_identifier(name: "Gamma", identifier: "GAMMA") FriendlyId::Slug.create!(slug: "OLDIE", sluggable: project) expect(analysis.error_reason("OLDIE")).to eq(:reserved) @@ -128,10 +126,10 @@ RSpec.describe WorkPackages::IdentifierAutofix::ProblematicIdentifiers do describe "#exclusion_set" do subject(:exclusion) { analysis.exclusion_set } - let!(:valid_project) { create_valid_project(name: "Alpha", identifier: "ALPHA") } + let!(:valid_project) { create_project_with_raw_identifier(name: "Alpha", identifier: "ALPHA") } before do - create_problematic_project(name: "Beta", identifier: "beta-project") + create_project_with_raw_identifier(name: "Beta", identifier: "beta-project") end it "returns a Set" do From 4812974de99dad4c3898d73ca915e969a2bfaa6f Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Wed, 25 Mar 2026 12:16:10 +0300 Subject: [PATCH 021/147] Upcase exclusion set for case-insensitive slug matching The suggestion generator produces uppercase candidates and checks exclusions with case-sensitive `include?`. Historical slugs stored in lowercase (e.g. "proj") would not block the generator from suggesting "PROJ", even though `identifier_not_historically_reserved` would reject it on save via LOWER(). Upcasing the exclusion set at the consumption point keeps ProblematicIdentifiers#exclusion_set casing-neutral for other consumers while ensuring the preview never proposes identifiers that collide with historical slugs. --- .../identifier_autofix/preview_query.rb | 2 +- .../identifier_autofix/preview_query_spec.rb | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/app/services/work_packages/identifier_autofix/preview_query.rb b/app/services/work_packages/identifier_autofix/preview_query.rb index d51e2768f81..36cbfeda612 100644 --- a/app/services/work_packages/identifier_autofix/preview_query.rb +++ b/app/services/work_packages/identifier_autofix/preview_query.rb @@ -53,7 +53,7 @@ module WorkPackages def generate_suggestions(analysis) ProjectIdentifierSuggestionGenerator.call( preview_projects(analysis.scope), - exclude: analysis.exclusion_set + exclude: analysis.exclusion_set.to_set(&:upcase) ) end diff --git a/spec/services/work_packages/identifier_autofix/preview_query_spec.rb b/spec/services/work_packages/identifier_autofix/preview_query_spec.rb index aa3d206088b..41813fc7323 100644 --- a/spec/services/work_packages/identifier_autofix/preview_query_spec.rb +++ b/spec/services/work_packages/identifier_autofix/preview_query_spec.rb @@ -114,6 +114,22 @@ RSpec.describe WorkPackages::IdentifierAutofix::PreviewQuery do expect(entry).to include(:project, :current_identifier, :suggested_identifier, :error_reason) end + context "when a historical slug exists in lowercase that matches a candidate" do + let!(:problematic) { create_project_with_raw_identifier(name: "Project", identifier: "project") } + + before do + # Occupy "PRO" so the generator is forced to consider "PROJ" as the next candidate + create_project_with_raw_identifier(name: "Provisions", identifier: "PRO") + # Simulate a retired lowercase slug from a prior identifier rename + FriendlyId::Slug.create!(slug: "proj", sluggable: problematic) + end + + it "excludes the uppercase form from suggestions" do + suggestions = result.projects_data.pluck(:suggested_identifier) + expect(suggestions).not_to include("PROJ") + end + end + describe "error_reason classification" do it "assigns :too_long when identifier length exceeds MAX_IDENTIFIER_LENGTH" do create_project_with_raw_identifier(name: "Test", identifier: "averylongidentifier") From d801728b41f2126b6b8debb695ee5f2ef4b20184 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Wed, 25 Mar 2026 12:30:52 +0300 Subject: [PATCH 022/147] Extract identifier_numeric_format for symmetry with alphanumeric validator The numeric (legacy) format validation was inline as a `validates :format` declaration, while the alphanumeric validator was already a dedicated method. Extract it into `identifier_numeric_format` so both mode-specific validators follow the same pattern, and fix a misleading comment on the shared validators. --- app/models/projects/identifier.rb | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/app/models/projects/identifier.rb b/app/models/projects/identifier.rb index 2cc5f13dc4f..1e1d0007c62 100644 --- a/app/models/projects/identifier.rb +++ b/app/models/projects/identifier.rb @@ -61,20 +61,16 @@ module Projects::Identifier if: -> { Setting::WorkPackageIdentifier.alphanumeric? && identifier.blank? } ### ID validators - # Validators for the legacy underscored identifier format (e.g. "project_one") + # Shared validators for all identifier formats validates :identifier, presence: true, uniqueness: { case_sensitive: false }, length: { maximum: IDENTIFIER_MAX_LENGTH }, if: ->(p) { p.persisted? || p.identifier.present? } - # Validators for the numeric identifier format (e.g. "project_one") - # Contains only a-z, 0-9, dashes and underscores but cannot consist of numbers only as it would clash with the id. - validates :identifier, - format: { with: /\A(?!^\d+\z)[a-z0-9\-_]+\z/ }, - if: ->(p) { - p.identifier_changed? && p.identifier.present? && Setting::WorkPackageIdentifier.numeric? - } + # Validators for the numeric (legacy) identifier format (e.g. "my-project", "project_one") + validate :identifier_numeric_format, + if: ->(p) { p.identifier_changed? && p.identifier.present? && Setting::WorkPackageIdentifier.numeric? } # Validators for the semantic (alphanumeric) identifier format (e.g. "PROJ1") validate :identifier_alphanumeric_format, @@ -128,6 +124,14 @@ module Projects::Identifier private + # Contains only a-z, 0-9, dashes and underscores but cannot consist of numbers only + # as that would clash with the numeric id. + def identifier_numeric_format + unless identifier.match?(/\A(?!^\d+\z)[a-z0-9\-_]+\z/) + errors.add(:identifier, :invalid) + end + end + def identifier_alphanumeric_format unless identifier.match?(/\A[A-Z]/) errors.add(:identifier, :must_start_with_letter) From 243c168a38a01ce42bad06f39cf8390c8995fb16 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Wed, 25 Mar 2026 12:53:37 +0300 Subject: [PATCH 023/147] Fix error path in alphanumeric identifier API specs --- spec/requests/api/v3/projects/copy/copy_resource_spec.rb | 4 ++-- spec/requests/api/v3/projects/create_resource_spec.rb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/spec/requests/api/v3/projects/copy/copy_resource_spec.rb b/spec/requests/api/v3/projects/copy/copy_resource_spec.rb index cc2803f4123..b039ad53173 100644 --- a/spec/requests/api/v3/projects/copy/copy_resource_spec.rb +++ b/spec/requests/api/v3/projects/copy/copy_resource_spec.rb @@ -227,8 +227,8 @@ RSpec.describe "API::V3::Projects::Copy::CopyAPI", content_type: :json, with_goo it "explains the identifier format error" do expect(response.body) - .to be_json_eql("identifier".to_json) - .at_path("_embedded/errors/0/_embedded/details/attribute") + .to be_json_eql("Identifier must start with a letter".to_json) + .at_path("message") end end end diff --git a/spec/requests/api/v3/projects/create_resource_spec.rb b/spec/requests/api/v3/projects/create_resource_spec.rb index 62ff9150b8d..3bb0a050235 100644 --- a/spec/requests/api/v3/projects/create_resource_spec.rb +++ b/spec/requests/api/v3/projects/create_resource_spec.rb @@ -489,8 +489,8 @@ RSpec.describe "API v3 Project resource create", content_type: :json do it "explains the identifier format error" do expect(last_response.body) - .to be_json_eql("identifier".to_json) - .at_path("_embedded/errors/0/_embedded/details/attribute") + .to be_json_eql("Identifier must start with a letter".to_json) + .at_path("message") end end end From d8a5399ea89928cc73b5839869b46f37afce06ae Mon Sep 17 00:00:00 2001 From: Henriette Darge Date: Wed, 25 Mar 2026 13:51:49 +0100 Subject: [PATCH 024/147] Attempt to stabilise test by assuring that the turbo frame finished loading before clicking the field --- spec/support/components/common/inplace_edit_field.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/spec/support/components/common/inplace_edit_field.rb b/spec/support/components/common/inplace_edit_field.rb index 221423a78bc..08e0b1194ba 100644 --- a/spec/support/components/common/inplace_edit_field.rb +++ b/spec/support/components/common/inplace_edit_field.rb @@ -52,6 +52,10 @@ module Components def open_field within_field do + # Wait for the display field to be present before clicking. + # This is necessary when the field is inside a lazy-loading Turbo Frame, + # which may not have loaded yet when this method is called. + find(".op-inplace-edit--display-field") # Link and user type custom fields might contain a clickable link inside the edit container. # Use JavaScript to directly trigger the click event on the container to avoid nested links. selector = "op-inplace-edit-field--#{model_class}-#{model.id}--#{attribute.name}" @@ -111,6 +115,7 @@ module Components def fill_and_submit_value(name:, val:, ckeditor: false) if ckeditor + expect(page).to have_css(".ck-content") find(".ck-content").base.send_keys val else fill_in(name, with: val) From 2bf7d907815a5bf8977f7cbc4cdf08128806e09d Mon Sep 17 00:00:00 2001 From: Jan Sandbrink Date: Wed, 25 Mar 2026 12:55:51 +0100 Subject: [PATCH 025/147] Only show wikis tab when there are wikis Effectively we only want to allow disabling the internal wiki for now, but we'll have to answer certain usability questions on what happens when a provider is deleted/disabled anyways, so we'll make it technically possible to disable any provider, even if we might not offer it for all of them out of the box. The most likely starting scenario to have no wikis tab is that the internal wikis are disabled and no external wiki is configured. --- .../app/core/config/configuration.service.ts | 4 + .../app/common/storages/adapters/registry.rb | 4 +- .../app/models/wikis/internal_provider.rb | 4 + modules/wikis/app/models/wikis/provider.rb | 10 ++ .../wikis/app/models/wikis/xwiki_provider.rb | 4 + .../providers/internal/queries/test.rb | 42 +++++++++ .../adapters/providers/internal/registry.rb | 59 ++++++++++++ .../adapters/providers/xwiki/queries/test.rb | 42 +++++++++ .../adapters/providers/xwiki/registry.rb | 59 ++++++++++++ .../app/services/wikis/adapters/registry.rb | 91 +++++++++++++++++++ .../20260325133701_add_providers_enabled.rb | 35 +++++++ modules/wikis/frontend/module/main.ts | 3 +- .../wikis/lib/open_project/wikis/engine.rb | 11 ++- .../spec/factories/wiki_provider_factory.rb | 1 + .../configuration_representer_spec.rb | 89 ++++++++++++++++++ 15 files changed, 452 insertions(+), 6 deletions(-) create mode 100644 modules/wikis/app/services/wikis/adapters/providers/internal/queries/test.rb create mode 100644 modules/wikis/app/services/wikis/adapters/providers/internal/registry.rb create mode 100644 modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/test.rb create mode 100644 modules/wikis/app/services/wikis/adapters/providers/xwiki/registry.rb create mode 100644 modules/wikis/app/services/wikis/adapters/registry.rb create mode 100644 modules/wikis/db/migrate/20260325133701_add_providers_enabled.rb create mode 100644 modules/wikis/spec/lib/api/v3/configuration/configuration_representer_spec.rb diff --git a/frontend/src/app/core/config/configuration.service.ts b/frontend/src/app/core/config/configuration.service.ts index 56cc854c60b..ee186227657 100644 --- a/frontend/src/app/core/config/configuration.service.ts +++ b/frontend/src/app/core/config/configuration.service.ts @@ -147,6 +147,10 @@ export class ConfigurationService { return moment.localeData(I18n.locale).firstDayOfWeek(); } + public get wikisAvailable():boolean { + return this.systemPreference('wikisAvailable'); + } + public get hostName():string { return this.systemPreference('hostName'); } diff --git a/modules/storages/app/common/storages/adapters/registry.rb b/modules/storages/app/common/storages/adapters/registry.rb index a03cac6bbc5..2d247285c2d 100644 --- a/modules/storages/app/common/storages/adapters/registry.rb +++ b/modules/storages/app/common/storages/adapters/registry.rb @@ -45,14 +45,14 @@ module Storages include TaggedLogging def call(container, key) - with_tagged_logger("Adapters::Registry") do + with_tagged_logger("Storages::Adapters::Registry") do info "Resolving #{key}" super end rescue Dry::Container::KeyError error = Errors.registry_error_for(key) - with_tagged_logger("Adapters::Registry") { error error.message } + with_tagged_logger("Storages::Adapters::Registry") { error error.message } raise error end end diff --git a/modules/wikis/app/models/wikis/internal_provider.rb b/modules/wikis/app/models/wikis/internal_provider.rb index 042bf52762c..d6f3d8d8f28 100644 --- a/modules/wikis/app/models/wikis/internal_provider.rb +++ b/modules/wikis/app/models/wikis/internal_provider.rb @@ -30,6 +30,10 @@ module Wikis class InternalProvider < Provider + class << self + def registry_prefix = "internal" + end + def name model_name.human end diff --git a/modules/wikis/app/models/wikis/provider.rb b/modules/wikis/app/models/wikis/provider.rb index f15b21a5209..57929bbc49d 100644 --- a/modules/wikis/app/models/wikis/provider.rb +++ b/modules/wikis/app/models/wikis/provider.rb @@ -33,5 +33,15 @@ module Wikis self.table_name = "wiki_providers" has_many :page_links, dependent: :destroy + + scope :enabled, -> { where(enabled: true) } + + class << self + def registry_prefix = raise NotImplementedError, "SubclassResponsibility" + end + + def resolve(registry_path) + Adapters::Registry["#{self.class.registry_prefix}.#{registry_path}"].new(self) + end end end diff --git a/modules/wikis/app/models/wikis/xwiki_provider.rb b/modules/wikis/app/models/wikis/xwiki_provider.rb index 18dd3e7e937..d46ec900111 100644 --- a/modules/wikis/app/models/wikis/xwiki_provider.rb +++ b/modules/wikis/app/models/wikis/xwiki_provider.rb @@ -39,5 +39,9 @@ module Wikis store_attribute :options, :authentication_method, :string, default: "two_way_oauth2" store_attribute :options, :wiki_audience, :string store_attribute :options, :token_exchange_scope, :string + + class << self + def registry_prefix = "xwiki" + end end end diff --git a/modules/wikis/app/services/wikis/adapters/providers/internal/queries/test.rb b/modules/wikis/app/services/wikis/adapters/providers/internal/queries/test.rb new file mode 100644 index 00000000000..03d093a8b39 --- /dev/null +++ b/modules/wikis/app/services/wikis/adapters/providers/internal/queries/test.rb @@ -0,0 +1,42 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +# This query is only intended for demo purposes and can be deleted once we have real queries +module Wikis::Adapters::Providers::Internal::Queries + class Test + def initialize(provider) + @provider = provider + end + + def call(*args, **opts) + puts "#{args} and #{opts} passed to internal test query for #{@provider}" # rubocop:disable Rails/Output + end + end +end diff --git a/modules/wikis/app/services/wikis/adapters/providers/internal/registry.rb b/modules/wikis/app/services/wikis/adapters/providers/internal/registry.rb new file mode 100644 index 00000000000..61b5f698bc1 --- /dev/null +++ b/modules/wikis/app/services/wikis/adapters/providers/internal/registry.rb @@ -0,0 +1,59 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +module Wikis + module Adapters + module Providers + module Internal + Registry = Dry::Container::Namespace.new("internal") do + namespace("authentication") do + # ... + end + + namespace("commands") do + # ... + end + + namespace("components") do + # ... + end + + namespace("contracts") do + # ... + end + + namespace("queries") do + register(:test, Queries::Test) + end + end + end + end + end +end diff --git a/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/test.rb b/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/test.rb new file mode 100644 index 00000000000..e46355fcc7d --- /dev/null +++ b/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/test.rb @@ -0,0 +1,42 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +# This query is only intended for demo purposes and can be deleted once we have real queries +module Wikis::Adapters::Providers::XWiki::Queries + class Test + def initialize(provider) + @provider = provider + end + + def call(*args, **opts) + puts "#{args} and #{opts} passed to internal test query for #{@provider}" # rubocop:disable Rails/Output + end + end +end diff --git a/modules/wikis/app/services/wikis/adapters/providers/xwiki/registry.rb b/modules/wikis/app/services/wikis/adapters/providers/xwiki/registry.rb new file mode 100644 index 00000000000..3f4d30888cd --- /dev/null +++ b/modules/wikis/app/services/wikis/adapters/providers/xwiki/registry.rb @@ -0,0 +1,59 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +module Wikis + module Adapters + module Providers + module XWiki + Registry = Dry::Container::Namespace.new("xwiki") do + namespace("authentication") do + # ... + end + + namespace("commands") do + # ... + end + + namespace("components") do + # ... + end + + namespace("contracts") do + # ... + end + + namespace("queries") do + register(:test, Queries::Test) + end + end + end + end + end +end diff --git a/modules/wikis/app/services/wikis/adapters/registry.rb b/modules/wikis/app/services/wikis/adapters/registry.rb new file mode 100644 index 00000000000..df57ef01321 --- /dev/null +++ b/modules/wikis/app/services/wikis/adapters/registry.rb @@ -0,0 +1,91 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +require "dry/container" + +module Wikis + module Adapters + class Registry + extend Dry::Container::Mixin + + class Error < StandardError + end + + class MissingContract < Error + end + + class OperationNotSupported < Error + end + + class UnknownProvider < Error + end + + def self.known_providers + keys.map { it.split(".").first }.uniq + end + + class Resolver < Dry::Container::Resolver + def call(container, key) + Rails.logger.tagged("Wikis::Adapters::Registry") do + Rails.logger.info "Resolving #{key}" + super + end + rescue Dry::Container::KeyError => e + error = registry_error_for(key) + + Rails.logger.tagged("Wikis::Adapters::Registry") { Rails.logger.error (error || e).message } + raise if error.nil? + + raise error + end + + private + + def registry_error_for(key) + case key.split(".") + in [provider, *] if Registry.known_providers.exclude?(provider) + UnknownProvider.new(provider) + in [provider, "contracts", model] + MissingContract.new("No #{model} contract defined for provider: #{provider.camelize}") + in [provider, "commands" | "queries" => type, operation] + OperationNotSupported.new( + "#{type.singularize.capitalize} #{operation} not supported by provider: #{provider.camelize}" + ) + end + end + end + + config.resolver = Resolver.new + + import Providers::Internal::Registry + import Providers::XWiki::Registry + end + end +end diff --git a/modules/wikis/db/migrate/20260325133701_add_providers_enabled.rb b/modules/wikis/db/migrate/20260325133701_add_providers_enabled.rb new file mode 100644 index 00000000000..d625ffc9753 --- /dev/null +++ b/modules/wikis/db/migrate/20260325133701_add_providers_enabled.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +class AddProvidersEnabled < ActiveRecord::Migration[8.0] + def change + add_column :wiki_providers, :enabled, :boolean, null: false, default: true + end +end diff --git a/modules/wikis/frontend/module/main.ts b/modules/wikis/frontend/module/main.ts index e009e59ea36..7a4f3d22d88 100644 --- a/modules/wikis/frontend/module/main.ts +++ b/modules/wikis/frontend/module/main.ts @@ -44,8 +44,7 @@ export function initializeWikiPlugin(injector:Injector) { component: WikisTabComponent, name: I18n.t('js.work_packages.tabs.wikis'), id: 'wikis', - // TODO: only display if there are wiki providers available - displayable: (workPackage) => configService.activeFeatureFlags.includes("wikiEnhancements"), + displayable: (workPackage) => configService.wikisAvailable && configService.activeFeatureFlags.includes("wikiEnhancements"), }, ); } diff --git a/modules/wikis/lib/open_project/wikis/engine.rb b/modules/wikis/lib/open_project/wikis/engine.rb index 2b6748612b4..7bdbd4f53da 100644 --- a/modules/wikis/lib/open_project/wikis/engine.rb +++ b/modules/wikis/lib/open_project/wikis/engine.rb @@ -46,8 +46,8 @@ module OpenProject::Wikis skip_permissions_check: true, after: :relations, if: ->(_project) { - # TODO: only display if there are wiki providers available - OpenProject::FeatureDecisions.wiki_enhancements_active? + Wikis::Provider.enabled.exists? && + OpenProject::FeatureDecisions.wiki_enhancements_active? } end @@ -66,6 +66,13 @@ module OpenProject::Wikis end end + config.to_prepare do + API::V3::Configuration::ConfigurationRepresenter.property( + :wikisAvailable, + getter: ->(*) { ::Wikis::Provider.enabled.exists? } + ) + end + replace_principal_references "Wikis::PageLink" => %i[author_id] end end diff --git a/modules/wikis/spec/factories/wiki_provider_factory.rb b/modules/wikis/spec/factories/wiki_provider_factory.rb index 7ac84a5bf63..bc7af84b388 100644 --- a/modules/wikis/spec/factories/wiki_provider_factory.rb +++ b/modules/wikis/spec/factories/wiki_provider_factory.rb @@ -32,6 +32,7 @@ FactoryBot.define do factory :wiki_provider, class: "Wikis::Provider" do sequence(:name) { |i| "The Wiki Provider ##{i}" } universal_identifier { SecureRandom.uuid } + enabled { true } end factory :internal_wiki_provider, class: "Wikis::InternalProvider", parent: :wiki_provider do diff --git a/modules/wikis/spec/lib/api/v3/configuration/configuration_representer_spec.rb b/modules/wikis/spec/lib/api/v3/configuration/configuration_representer_spec.rb new file mode 100644 index 00000000000..a188533fe02 --- /dev/null +++ b/modules/wikis/spec/lib/api/v3/configuration/configuration_representer_spec.rb @@ -0,0 +1,89 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +require "spec_helper" + +RSpec.describe API::V3::Configuration::ConfigurationRepresenter do + include API::V3::Utilities::PathHelper + + let(:represented) { Setting } + let(:current_user) do + build_stubbed(:user).tap do |user| + allow(user) + .to receive(:preference) + .and_return(build_stubbed(:user_preference)) + end + end + let(:embed_links) { false } + let(:representer) do + described_class.new(represented, current_user:, embed_links:) + end + + subject { representer.to_json } + + describe "wikisAvailable" do + context "when there is at least one enabled wiki" do + before do + create(:internal_wiki_provider, enabled: false) + create(:xwiki_provider) + end + + it "is true" do + expect(subject).to be_json_eql(true.to_json).at_path("wikisAvailable") + end + end + + context "when there is no enabled wiki" do + before do + create(:internal_wiki_provider, enabled: false) + end + + it "is false" do + expect(subject).to be_json_eql(false.to_json).at_path("wikisAvailable") + end + end + + context "when only the internal wiki provider exists and is enabled (default database state)" do + before do + create(:internal_wiki_provider) + end + + it "is true" do + expect(subject).to be_json_eql(true.to_json).at_path("wikisAvailable") + end + end + + context "when there are no wikis at all (unexpected database state)" do + it "is false" do + expect(subject).to be_json_eql(false.to_json).at_path("wikisAvailable") + end + end + end +end From 9617b069e9dc3e5d82480f8322afbb080b8f84ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20G=C3=BCnther?= Date: Thu, 26 Mar 2026 07:14:46 +0100 Subject: [PATCH 026/147] Bumped version to 17.4.0 [ci skip] --- lib/open_project/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/open_project/version.rb b/lib/open_project/version.rb index 338b47873cb..00cc8051491 100644 --- a/lib/open_project/version.rb +++ b/lib/open_project/version.rb @@ -32,7 +32,7 @@ require "open3" module OpenProject module VERSION # :nodoc: MAJOR = 17 - MINOR = 3 + MINOR = 4 PATCH = 0 class << self From 33a83f7a7e979a2fd0ceb9a4ff948332c0a723f0 Mon Sep 17 00:00:00 2001 From: Madhu Reddy Date: Thu, 26 Mar 2026 12:32:32 +0530 Subject: [PATCH 027/147] [#73431] SCIM User API return duplicate records https://community.openproject.org/work_packages/73431 From 9ba727d45ea6c1c9e32f65230275f7373f71b94a Mon Sep 17 00:00:00 2001 From: Henriette Darge Date: Thu, 26 Mar 2026 08:13:34 +0100 Subject: [PATCH 028/147] Use fieldsetgroup in myAccount interface page --- app/forms/my/alerts_form.rb | 14 +-- app/forms/my/look_and_feel_form.rb | 94 ++++++++++--------- app/views/my/interface.html.erb | 10 -- .../backlogs/app/forms/my/backlogs_form.rb | 22 +++-- .../views/shared/_view_my_settings.html.erb | 5 - 5 files changed, 68 insertions(+), 77 deletions(-) diff --git a/app/forms/my/alerts_form.rb b/app/forms/my/alerts_form.rb index c666a6ca054..0416a6e5cf8 100644 --- a/app/forms/my/alerts_form.rb +++ b/app/forms/my/alerts_form.rb @@ -30,13 +30,15 @@ class My::AlertsForm < ApplicationForm form do |f| - f.check_box name: :warn_on_leaving_unsaved, - label: I18n.t("activerecord.attributes.user_preference.warn_on_leaving_unsaved") + f.fieldset_group(title: helpers.t("activerecord.attributes.user_preference.header_alerts"), mt: 4) do |fg| + fg.check_box name: :warn_on_leaving_unsaved, + label: helpers.t("activerecord.attributes.user_preference.warn_on_leaving_unsaved") - f.check_box name: :auto_hide_popups, - label: I18n.t("activerecord.attributes.user_preference.auto_hide_popups"), - caption: I18n.t("activerecord.attributes.user_preference.auto_hide_popups_caption") + fg.check_box name: :auto_hide_popups, + label: helpers.t("activerecord.attributes.user_preference.auto_hide_popups"), + caption: helpers.t("activerecord.attributes.user_preference.auto_hide_popups_caption") - f.submit(name: :submit, label: I18n.t("activerecord.attributes.user_preference.button_update_alerts"), scheme: :default) + fg.submit(name: :submit, label: helpers.t("activerecord.attributes.user_preference.button_update_alerts"), scheme: :default) + end end end diff --git a/app/forms/my/look_and_feel_form.rb b/app/forms/my/look_and_feel_form.rb index 5d3904d930c..eccbe3c79ec 100644 --- a/app/forms/my/look_and_feel_form.rb +++ b/app/forms/my/look_and_feel_form.rb @@ -32,53 +32,55 @@ class My::LookAndFeelForm < ApplicationForm include ApplicationHelper form do |f| - f.select_list( - name: :theme, - label: attribute_name(:theme), - caption: attribute_name(:mode_guideline), - required: true, - include_blank: false, - input_width: :small, - data: { - my__look_and_feel_target: "themeSelect", - action: "my--look-and-feel#updateContrastOptions" - } - ) do |select| - theme_options_for_select.each { |(label, value)| select.option(value:, label:) } + f.fieldset_group(title: helpers.t("activerecord.attributes.user_preference.header_look_and_feel")) do |fg| + fg.select_list( + name: :theme, + label: attribute_name(:theme), + caption: attribute_name(:mode_guideline), + required: true, + include_blank: false, + input_width: :small, + data: { + my__look_and_feel_target: "themeSelect", + action: "my--look-and-feel#updateContrastOptions" + } + ) do |select| + theme_options_for_select.each { |(label, value)| select.option(value:, label:) } + end + + fg.check_box_group(data: { my__look_and_feel_target: "autoThemeContrast" }) do |group| + group.check_box name: :force_light_theme_contrast, + label: attribute_name(:force_light_theme_contrast), + caption: attribute_name(:force_light_theme_contrast_caption) + group.check_box name: :force_dark_theme_contrast, + label: attribute_name(:force_dark_theme_contrast), + caption: attribute_name(:force_dark_theme_contrast_caption) + end + + fg.check_box_group(data: { my__look_and_feel_target: "singleThemeContrast" }) do |group| + group.check_box name: :increase_theme_contrast, + label: attribute_name(:increase_contrast), + caption: attribute_name(:increase_contrast_caption) + end + + fg.select_list( + name: :comments_sorting, + label: attribute_name(:comments_sorting), + required: true, + include_blank: false, + input_width: :small + ) do |select| + comment_sort_order_options.each { |(label, value)| select.option(value:, label:) } + end + + fg.check_box name: :disable_keyboard_shortcuts, + label: attribute_name(:disable_keyboard_shortcuts), + caption: disable_keyboard_shortcuts_caption + + fg.submit(name: :submit, + label: attribute_name(:button_update_look_and_feel), + scheme: :default) end - - f.check_box_group(data: { my__look_and_feel_target: "autoThemeContrast" }) do |group| - group.check_box name: :force_light_theme_contrast, - label: attribute_name(:force_light_theme_contrast), - caption: attribute_name(:force_light_theme_contrast_caption) - group.check_box name: :force_dark_theme_contrast, - label: attribute_name(:force_dark_theme_contrast), - caption: attribute_name(:force_dark_theme_contrast_caption) - end - - f.check_box_group(data: { my__look_and_feel_target: "singleThemeContrast" }) do |group| - group.check_box name: :increase_theme_contrast, - label: attribute_name(:increase_contrast), - caption: attribute_name(:increase_contrast_caption) - end - - f.select_list( - name: :comments_sorting, - label: attribute_name(:comments_sorting), - required: true, - include_blank: false, - input_width: :small - ) do |select| - comment_sort_order_options.each { |(label, value)| select.option(value:, label:) } - end - - f.check_box name: :disable_keyboard_shortcuts, - label: attribute_name(:disable_keyboard_shortcuts), - caption: disable_keyboard_shortcuts_caption - - f.submit(name: :submit, - label: attribute_name(:button_update_look_and_feel), - scheme: :default) end private diff --git a/app/views/my/interface.html.erb b/app/views/my/interface.html.erb index 3bc01fb9f44..dddb9c37ec4 100644 --- a/app/views/my/interface.html.erb +++ b/app/views/my/interface.html.erb @@ -41,11 +41,6 @@ See COPYRIGHT and LICENSE files for more details. <%= error_messages_for "user" %> -<%= - render(Primer::Beta::Subhead.new) do |component| - component.with_heading(tag: :h3, size: :medium) { I18n.t("activerecord.attributes.user_preference.header_look_and_feel") } - end -%> <%= settings_primer_form_with( model: @user.pref, @@ -58,11 +53,6 @@ See COPYRIGHT and LICENSE files for more details. end %> -<%= - render(Primer::Beta::Subhead.new(mt: 3)) do |component| - component.with_heading(tag: :h3, size: :medium) { I18n.t("activerecord.attributes.user_preference.header_alerts") } - end -%> <%= settings_primer_form_with(model: @user.pref, scope: :pref, url: { action: "update_settings" }, data: { turbo: false }) do |form| render(My::AlertsForm.new(form)) diff --git a/modules/backlogs/app/forms/my/backlogs_form.rb b/modules/backlogs/app/forms/my/backlogs_form.rb index 15de7a3eddd..5a25687a64a 100644 --- a/modules/backlogs/app/forms/my/backlogs_form.rb +++ b/modules/backlogs/app/forms/my/backlogs_form.rb @@ -30,18 +30,20 @@ class My::BacklogsForm < ApplicationForm form do |f| - f.text_field name: :task_color, - label: I18n.t("backlogs.task_color"), - value: @color, - input_width: :xsmall + f.fieldset_group(title: helpers.t("backlogs.user_preference.header_backlogs"), mt: 4) do |fg| + fg.text_field name: :task_color, + label: helpers.t("backlogs.task_color"), + value: @color, + input_width: :xsmall - f.check_box name: :versions_default_fold_state, - value: DEFAULT_FOLD_STATE, - checked: default_fold_state_checked?, - label: I18n.t("backlogs.label_versions_default_fold_state"), - caption: I18n.t("backlogs.caption_versions_default_fold_state") + fg.check_box name: :versions_default_fold_state, + value: DEFAULT_FOLD_STATE, + checked: default_fold_state_checked?, + label: helpers.t("backlogs.label_versions_default_fold_state"), + caption: helpers.t("backlogs.caption_versions_default_fold_state") - f.submit(name: :submit, label: I18n.t("backlogs.user_preference.button_update_backlogs"), scheme: :default) + fg.submit(name: :submit, label: helpers.t("backlogs.user_preference.button_update_backlogs"), scheme: :default) + end end DEFAULT_FOLD_STATE = "closed" diff --git a/modules/backlogs/app/views/shared/_view_my_settings.html.erb b/modules/backlogs/app/views/shared/_view_my_settings.html.erb index c878554ece4..356735cb68c 100644 --- a/modules/backlogs/app/views/shared/_view_my_settings.html.erb +++ b/modules/backlogs/app/views/shared/_view_my_settings.html.erb @@ -27,11 +27,6 @@ See COPYRIGHT and LICENSE files for more details. ++#%> -<%= - render(Primer::Beta::Subhead.new(mt: 3)) do |component| - component.with_heading(tag: :h3, size: :medium) { I18n.t("backlogs.user_preference.header_backlogs") } - end -%> <%= settings_primer_form_with(model: user.pref, scope: :backlogs, url: { action: "update_settings" }, data: { turbo: false }) do |form| render(My::BacklogsForm.new(form, color:, versions_default_fold_state:)) From 11e6f2a9e0f6a5dd6162e325d1b8ae884686fc2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20G=C3=BCnther?= Date: Thu, 26 Mar 2026 08:43:20 +0100 Subject: [PATCH 029/147] Update write permissions for new folders in crowdin --- script/i18n/fix_crowdin_pt_language_root_key | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/script/i18n/fix_crowdin_pt_language_root_key b/script/i18n/fix_crowdin_pt_language_root_key index 0237262f142..6254e34c2b7 100755 --- a/script/i18n/fix_crowdin_pt_language_root_key +++ b/script/i18n/fix_crowdin_pt_language_root_key @@ -1,6 +1,10 @@ #!/usr/bin/env bash echo "Fixing language root key in pt-BR and pt-PT crowdin files to match the filename" + +# Ensure crowdin directories are writable (they may be created with restrictive permissions by the Crowdin action) +chmod -R u+w config/locales/crowdin/ modules/*/config/locales/crowdin/ 2>/dev/null || true + if [ "$(uname -s)" = "Darwin" ]; then sed -i '' 's/^pt:/pt-BR:/' config/locales/crowdin/*pt-BR*.yml modules/*/config/locales/crowdin/*pt-BR*.yml sed -i '' 's/^pt:/pt-PT:/' config/locales/crowdin/*pt-PT*.yml modules/*/config/locales/crowdin/*pt-PT*.yml From 905cc4f8731776c55085e07f1a919de14078c871 Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Thu, 26 Mar 2026 07:50:33 +0000 Subject: [PATCH 030/147] update locales from crowdin [ci skip] --- config/locales/crowdin/af.yml | 311 ++++++++++++-- config/locales/crowdin/ar.yml | 335 +++++++++++++-- config/locales/crowdin/az.yml | 311 ++++++++++++-- config/locales/crowdin/be.yml | 323 ++++++++++++-- config/locales/crowdin/bg.yml | 315 ++++++++++++-- config/locales/crowdin/ca.yml | 316 ++++++++++++-- config/locales/crowdin/ckb-IR.yml | 311 ++++++++++++-- config/locales/crowdin/cs.yml | 402 ++++++++++++++---- config/locales/crowdin/da.yml | 313 ++++++++++++-- config/locales/crowdin/de.yml | 320 +++++++++++--- config/locales/crowdin/el.yml | 314 ++++++++++++-- config/locales/crowdin/eo.yml | 311 ++++++++++++-- config/locales/crowdin/es.yml | 321 +++++++++++--- config/locales/crowdin/et.yml | 311 ++++++++++++-- config/locales/crowdin/eu.yml | 311 ++++++++++++-- config/locales/crowdin/fa.yml | 311 ++++++++++++-- config/locales/crowdin/fi.yml | 311 ++++++++++++-- config/locales/crowdin/fil.yml | 311 ++++++++++++-- config/locales/crowdin/fr.yml | 316 ++++++++++++-- config/locales/crowdin/he.yml | 323 ++++++++++++-- config/locales/crowdin/hi.yml | 311 ++++++++++++-- config/locales/crowdin/hr.yml | 317 ++++++++++++-- config/locales/crowdin/hu.yml | 316 ++++++++++++-- config/locales/crowdin/id.yml | 311 ++++++++++++-- config/locales/crowdin/it.yml | 320 +++++++++++--- config/locales/crowdin/ja.yml | 319 +++++++++++--- config/locales/crowdin/js-af.yml | 6 +- config/locales/crowdin/js-ar.yml | 6 +- config/locales/crowdin/js-az.yml | 6 +- config/locales/crowdin/js-be.yml | 6 +- config/locales/crowdin/js-bg.yml | 6 +- config/locales/crowdin/js-ca.yml | 6 +- config/locales/crowdin/js-ckb-IR.yml | 6 +- config/locales/crowdin/js-cs.yml | 12 +- config/locales/crowdin/js-da.yml | 6 +- config/locales/crowdin/js-de.yml | 6 +- config/locales/crowdin/js-el.yml | 6 +- config/locales/crowdin/js-eo.yml | 6 +- config/locales/crowdin/js-es.yml | 6 +- config/locales/crowdin/js-et.yml | 6 +- config/locales/crowdin/js-eu.yml | 6 +- config/locales/crowdin/js-fa.yml | 6 +- config/locales/crowdin/js-fi.yml | 6 +- config/locales/crowdin/js-fil.yml | 6 +- config/locales/crowdin/js-fr.yml | 6 +- config/locales/crowdin/js-he.yml | 6 +- config/locales/crowdin/js-hi.yml | 6 +- config/locales/crowdin/js-hr.yml | 6 +- config/locales/crowdin/js-hu.yml | 6 +- config/locales/crowdin/js-id.yml | 6 +- config/locales/crowdin/js-it.yml | 6 +- config/locales/crowdin/js-ja.yml | 6 +- config/locales/crowdin/js-ka.yml | 6 +- config/locales/crowdin/js-kk.yml | 6 +- config/locales/crowdin/js-ko.yml | 6 +- config/locales/crowdin/js-lt.yml | 6 +- config/locales/crowdin/js-lv.yml | 6 +- config/locales/crowdin/js-mn.yml | 6 +- config/locales/crowdin/js-ms.yml | 6 +- config/locales/crowdin/js-ne.yml | 6 +- config/locales/crowdin/js-nl.yml | 6 +- config/locales/crowdin/js-no.yml | 6 +- config/locales/crowdin/js-pl.yml | 6 +- config/locales/crowdin/js-pt-BR.yml | 6 +- config/locales/crowdin/js-pt-PT.yml | 6 +- config/locales/crowdin/js-ro.yml | 6 +- config/locales/crowdin/js-ru.yml | 6 +- config/locales/crowdin/js-rw.yml | 6 +- config/locales/crowdin/js-si.yml | 6 +- config/locales/crowdin/js-sk.yml | 6 +- config/locales/crowdin/js-sl.yml | 6 +- config/locales/crowdin/js-sr.yml | 6 +- config/locales/crowdin/js-sv.yml | 6 +- config/locales/crowdin/js-th.yml | 6 +- config/locales/crowdin/js-tr.yml | 6 +- config/locales/crowdin/js-uk.yml | 6 +- config/locales/crowdin/js-uz.yml | 6 +- config/locales/crowdin/js-vi.yml | 6 +- config/locales/crowdin/js-zh-CN.yml | 6 +- config/locales/crowdin/js-zh-TW.yml | 6 +- config/locales/crowdin/ka.yml | 311 ++++++++++++-- config/locales/crowdin/kk.yml | 311 ++++++++++++-- config/locales/crowdin/ko.yml | 315 +++++++++++--- config/locales/crowdin/lt.yml | 329 ++++++++++++-- config/locales/crowdin/lv.yml | 317 ++++++++++++-- config/locales/crowdin/mn.yml | 311 ++++++++++++-- config/locales/crowdin/ms.yml | 315 +++++++++++--- config/locales/crowdin/ne.yml | 311 ++++++++++++-- config/locales/crowdin/nl.yml | 319 ++++++++++++-- config/locales/crowdin/no.yml | 321 +++++++++++--- config/locales/crowdin/pl.yml | 332 ++++++++++++--- config/locales/crowdin/pt-BR.yml | 320 +++++++++++--- config/locales/crowdin/pt-PT.yml | 320 +++++++++++--- config/locales/crowdin/ro.yml | 322 ++++++++++++-- config/locales/crowdin/ru.yml | 331 ++++++++++++-- config/locales/crowdin/rw.yml | 311 ++++++++++++-- config/locales/crowdin/si.yml | 315 ++++++++++++-- config/locales/crowdin/sk.yml | 326 ++++++++++++-- config/locales/crowdin/sl.yml | 329 ++++++++++++-- config/locales/crowdin/sr.yml | 317 ++++++++++++-- config/locales/crowdin/sv.yml | 315 ++++++++++++-- config/locales/crowdin/th.yml | 307 +++++++++++-- config/locales/crowdin/tr.yml | 320 +++++++++++--- config/locales/crowdin/uk.yml | 332 ++++++++++++--- config/locales/crowdin/uz.yml | 311 ++++++++++++-- config/locales/crowdin/vi.yml | 313 ++++++++++++-- config/locales/crowdin/zh-CN.yml | 313 ++++++++++++-- config/locales/crowdin/zh-TW.yml | 313 ++++++++++++-- .../auth_saml/config/locales/crowdin/cs.yml | 2 +- .../auth_saml/config/locales/crowdin/el.yml | 200 ++++----- modules/avatars/config/locales/crowdin/cs.yml | 4 +- .../avatars/config/locales/crowdin/js-cs.yml | 4 +- .../backlogs/config/locales/crowdin/af.yml | 89 +++- .../backlogs/config/locales/crowdin/ar.yml | 97 ++++- .../backlogs/config/locales/crowdin/az.yml | 89 +++- .../backlogs/config/locales/crowdin/be.yml | 93 +++- .../backlogs/config/locales/crowdin/bg.yml | 89 +++- .../backlogs/config/locales/crowdin/ca.yml | 89 +++- .../config/locales/crowdin/ckb-IR.yml | 89 +++- .../backlogs/config/locales/crowdin/cs.yml | 113 ++++- .../backlogs/config/locales/crowdin/da.yml | 89 +++- .../backlogs/config/locales/crowdin/de.yml | 91 +++- .../backlogs/config/locales/crowdin/el.yml | 113 ++++- .../backlogs/config/locales/crowdin/eo.yml | 89 +++- .../backlogs/config/locales/crowdin/es.yml | 91 +++- .../backlogs/config/locales/crowdin/et.yml | 89 +++- .../backlogs/config/locales/crowdin/eu.yml | 89 +++- .../backlogs/config/locales/crowdin/fa.yml | 89 +++- .../backlogs/config/locales/crowdin/fi.yml | 89 +++- .../backlogs/config/locales/crowdin/fil.yml | 89 +++- .../backlogs/config/locales/crowdin/fr.yml | 89 +++- .../backlogs/config/locales/crowdin/he.yml | 93 +++- .../backlogs/config/locales/crowdin/hi.yml | 89 +++- .../backlogs/config/locales/crowdin/hr.yml | 91 +++- .../backlogs/config/locales/crowdin/hu.yml | 89 +++- .../backlogs/config/locales/crowdin/id.yml | 87 +++- .../backlogs/config/locales/crowdin/it.yml | 91 +++- .../backlogs/config/locales/crowdin/ja.yml | 111 ++++- .../backlogs/config/locales/crowdin/ka.yml | 89 +++- .../backlogs/config/locales/crowdin/kk.yml | 89 +++- .../backlogs/config/locales/crowdin/ko.yml | 89 +++- .../backlogs/config/locales/crowdin/lt.yml | 93 +++- .../backlogs/config/locales/crowdin/lv.yml | 91 +++- .../backlogs/config/locales/crowdin/mn.yml | 89 +++- .../backlogs/config/locales/crowdin/ms.yml | 87 +++- .../backlogs/config/locales/crowdin/ne.yml | 91 +++- .../backlogs/config/locales/crowdin/nl.yml | 89 +++- .../backlogs/config/locales/crowdin/no.yml | 89 +++- .../backlogs/config/locales/crowdin/pl.yml | 95 ++++- .../backlogs/config/locales/crowdin/pt-BR.yml | 91 +++- .../backlogs/config/locales/crowdin/pt-PT.yml | 91 +++- .../backlogs/config/locales/crowdin/ro.yml | 91 +++- .../backlogs/config/locales/crowdin/ru.yml | 121 +++++- .../backlogs/config/locales/crowdin/rw.yml | 89 +++- .../backlogs/config/locales/crowdin/si.yml | 89 +++- .../backlogs/config/locales/crowdin/sk.yml | 93 +++- .../backlogs/config/locales/crowdin/sl.yml | 93 +++- .../backlogs/config/locales/crowdin/sr.yml | 91 +++- .../backlogs/config/locales/crowdin/sv.yml | 89 +++- .../backlogs/config/locales/crowdin/th.yml | 87 +++- .../backlogs/config/locales/crowdin/tr.yml | 89 +++- .../backlogs/config/locales/crowdin/uk.yml | 95 ++++- .../backlogs/config/locales/crowdin/uz.yml | 89 +++- .../backlogs/config/locales/crowdin/vi.yml | 87 +++- .../backlogs/config/locales/crowdin/zh-CN.yml | 89 +++- .../backlogs/config/locales/crowdin/zh-TW.yml | 109 ++++- modules/budgets/config/locales/crowdin/cs.yml | 2 +- modules/costs/config/locales/crowdin/cs.yml | 2 +- .../costs/config/locales/crowdin/zh-TW.yml | 2 +- .../config/locales/crowdin/cs.seeders.yml | 10 +- .../documents/config/locales/crowdin/cs.yml | 123 +++--- .../documents/config/locales/crowdin/ja.yml | 4 +- .../config/locales/crowdin/cs.yml | 22 +- modules/grids/config/locales/crowdin/cs.yml | 6 +- .../job_status/config/locales/crowdin/af.yml | 3 +- .../job_status/config/locales/crowdin/ar.yml | 3 +- .../job_status/config/locales/crowdin/az.yml | 3 +- .../job_status/config/locales/crowdin/be.yml | 3 +- .../job_status/config/locales/crowdin/bg.yml | 3 +- .../job_status/config/locales/crowdin/ca.yml | 3 +- .../config/locales/crowdin/ckb-IR.yml | 3 +- .../job_status/config/locales/crowdin/cs.yml | 3 +- .../job_status/config/locales/crowdin/da.yml | 3 +- .../job_status/config/locales/crowdin/de.yml | 3 +- .../job_status/config/locales/crowdin/el.yml | 3 +- .../job_status/config/locales/crowdin/eo.yml | 3 +- .../job_status/config/locales/crowdin/es.yml | 3 +- .../job_status/config/locales/crowdin/et.yml | 3 +- .../job_status/config/locales/crowdin/eu.yml | 3 +- .../job_status/config/locales/crowdin/fa.yml | 3 +- .../job_status/config/locales/crowdin/fi.yml | 3 +- .../job_status/config/locales/crowdin/fil.yml | 3 +- .../job_status/config/locales/crowdin/fr.yml | 3 +- .../job_status/config/locales/crowdin/he.yml | 3 +- .../job_status/config/locales/crowdin/hi.yml | 3 +- .../job_status/config/locales/crowdin/hr.yml | 3 +- .../job_status/config/locales/crowdin/hu.yml | 3 +- .../job_status/config/locales/crowdin/id.yml | 3 +- .../job_status/config/locales/crowdin/it.yml | 3 +- .../job_status/config/locales/crowdin/ja.yml | 3 +- .../job_status/config/locales/crowdin/ka.yml | 3 +- .../job_status/config/locales/crowdin/kk.yml | 3 +- .../job_status/config/locales/crowdin/ko.yml | 3 +- .../job_status/config/locales/crowdin/lt.yml | 3 +- .../job_status/config/locales/crowdin/lv.yml | 3 +- .../job_status/config/locales/crowdin/mn.yml | 3 +- .../job_status/config/locales/crowdin/ms.yml | 3 +- .../job_status/config/locales/crowdin/ne.yml | 3 +- .../job_status/config/locales/crowdin/nl.yml | 3 +- .../job_status/config/locales/crowdin/no.yml | 3 +- .../job_status/config/locales/crowdin/pl.yml | 3 +- .../config/locales/crowdin/pt-BR.yml | 3 +- .../config/locales/crowdin/pt-PT.yml | 3 +- .../job_status/config/locales/crowdin/ro.yml | 3 +- .../job_status/config/locales/crowdin/ru.yml | 3 +- .../job_status/config/locales/crowdin/rw.yml | 3 +- .../job_status/config/locales/crowdin/si.yml | 3 +- .../job_status/config/locales/crowdin/sk.yml | 3 +- .../job_status/config/locales/crowdin/sl.yml | 3 +- .../job_status/config/locales/crowdin/sr.yml | 3 +- .../job_status/config/locales/crowdin/sv.yml | 3 +- .../job_status/config/locales/crowdin/th.yml | 3 +- .../job_status/config/locales/crowdin/tr.yml | 3 +- .../job_status/config/locales/crowdin/uk.yml | 3 +- .../job_status/config/locales/crowdin/uz.yml | 3 +- .../job_status/config/locales/crowdin/vi.yml | 3 +- .../config/locales/crowdin/zh-CN.yml | 3 +- .../config/locales/crowdin/zh-TW.yml | 3 +- .../ldap_groups/config/locales/crowdin/af.yml | 4 +- .../ldap_groups/config/locales/crowdin/ar.yml | 4 +- .../ldap_groups/config/locales/crowdin/az.yml | 4 +- .../ldap_groups/config/locales/crowdin/be.yml | 4 +- .../ldap_groups/config/locales/crowdin/bg.yml | 4 +- .../ldap_groups/config/locales/crowdin/ca.yml | 4 +- .../config/locales/crowdin/ckb-IR.yml | 4 +- .../ldap_groups/config/locales/crowdin/cs.yml | 6 +- .../ldap_groups/config/locales/crowdin/da.yml | 4 +- .../ldap_groups/config/locales/crowdin/de.yml | 4 +- .../ldap_groups/config/locales/crowdin/el.yml | 4 +- .../ldap_groups/config/locales/crowdin/eo.yml | 4 +- .../ldap_groups/config/locales/crowdin/es.yml | 4 +- .../ldap_groups/config/locales/crowdin/et.yml | 4 +- .../ldap_groups/config/locales/crowdin/eu.yml | 4 +- .../ldap_groups/config/locales/crowdin/fa.yml | 4 +- .../ldap_groups/config/locales/crowdin/fi.yml | 4 +- .../config/locales/crowdin/fil.yml | 4 +- .../ldap_groups/config/locales/crowdin/fr.yml | 4 +- .../ldap_groups/config/locales/crowdin/he.yml | 4 +- .../ldap_groups/config/locales/crowdin/hi.yml | 4 +- .../ldap_groups/config/locales/crowdin/hr.yml | 4 +- .../ldap_groups/config/locales/crowdin/hu.yml | 4 +- .../ldap_groups/config/locales/crowdin/id.yml | 4 +- .../ldap_groups/config/locales/crowdin/it.yml | 4 +- .../ldap_groups/config/locales/crowdin/ja.yml | 4 +- .../ldap_groups/config/locales/crowdin/ka.yml | 4 +- .../ldap_groups/config/locales/crowdin/kk.yml | 4 +- .../ldap_groups/config/locales/crowdin/ko.yml | 4 +- .../ldap_groups/config/locales/crowdin/lt.yml | 4 +- .../ldap_groups/config/locales/crowdin/lv.yml | 4 +- .../ldap_groups/config/locales/crowdin/mn.yml | 4 +- .../ldap_groups/config/locales/crowdin/ms.yml | 4 +- .../ldap_groups/config/locales/crowdin/ne.yml | 4 +- .../ldap_groups/config/locales/crowdin/nl.yml | 4 +- .../ldap_groups/config/locales/crowdin/no.yml | 4 +- .../ldap_groups/config/locales/crowdin/pl.yml | 4 +- .../config/locales/crowdin/pt-BR.yml | 4 +- .../config/locales/crowdin/pt-PT.yml | 4 +- .../ldap_groups/config/locales/crowdin/ro.yml | 4 +- .../ldap_groups/config/locales/crowdin/ru.yml | 4 +- .../ldap_groups/config/locales/crowdin/rw.yml | 4 +- .../ldap_groups/config/locales/crowdin/si.yml | 4 +- .../ldap_groups/config/locales/crowdin/sk.yml | 4 +- .../ldap_groups/config/locales/crowdin/sl.yml | 4 +- .../ldap_groups/config/locales/crowdin/sr.yml | 4 +- .../ldap_groups/config/locales/crowdin/sv.yml | 4 +- .../ldap_groups/config/locales/crowdin/th.yml | 4 +- .../ldap_groups/config/locales/crowdin/tr.yml | 4 +- .../ldap_groups/config/locales/crowdin/uk.yml | 4 +- .../ldap_groups/config/locales/crowdin/uz.yml | 4 +- .../ldap_groups/config/locales/crowdin/vi.yml | 4 +- .../config/locales/crowdin/zh-CN.yml | 4 +- .../config/locales/crowdin/zh-TW.yml | 4 +- modules/meeting/config/locales/crowdin/cs.yml | 158 +++---- modules/meeting/config/locales/crowdin/ja.yml | 4 +- .../config/locales/crowdin/af.yml | 4 +- .../config/locales/crowdin/ar.yml | 4 +- .../config/locales/crowdin/az.yml | 4 +- .../config/locales/crowdin/be.yml | 4 +- .../config/locales/crowdin/bg.yml | 4 +- .../config/locales/crowdin/ca.yml | 4 +- .../config/locales/crowdin/ckb-IR.yml | 4 +- .../config/locales/crowdin/cs.yml | 4 +- .../config/locales/crowdin/da.yml | 4 +- .../config/locales/crowdin/de.yml | 4 +- .../config/locales/crowdin/el.yml | 4 +- .../config/locales/crowdin/eo.yml | 4 +- .../config/locales/crowdin/es.yml | 4 +- .../config/locales/crowdin/et.yml | 4 +- .../config/locales/crowdin/eu.yml | 4 +- .../config/locales/crowdin/fa.yml | 4 +- .../config/locales/crowdin/fi.yml | 4 +- .../config/locales/crowdin/fil.yml | 4 +- .../config/locales/crowdin/fr.yml | 4 +- .../config/locales/crowdin/he.yml | 4 +- .../config/locales/crowdin/hi.yml | 4 +- .../config/locales/crowdin/hr.yml | 4 +- .../config/locales/crowdin/hu.yml | 4 +- .../config/locales/crowdin/id.yml | 4 +- .../config/locales/crowdin/it.yml | 4 +- .../config/locales/crowdin/ja.yml | 4 +- .../config/locales/crowdin/ka.yml | 4 +- .../config/locales/crowdin/kk.yml | 4 +- .../config/locales/crowdin/ko.yml | 4 +- .../config/locales/crowdin/lt.yml | 4 +- .../config/locales/crowdin/lv.yml | 4 +- .../config/locales/crowdin/mn.yml | 4 +- .../config/locales/crowdin/ms.yml | 4 +- .../config/locales/crowdin/ne.yml | 4 +- .../config/locales/crowdin/nl.yml | 4 +- .../config/locales/crowdin/no.yml | 4 +- .../config/locales/crowdin/pl.yml | 4 +- .../config/locales/crowdin/pt-BR.yml | 4 +- .../config/locales/crowdin/pt-PT.yml | 4 +- .../config/locales/crowdin/ro.yml | 4 +- .../config/locales/crowdin/ru.yml | 4 +- .../config/locales/crowdin/rw.yml | 4 +- .../config/locales/crowdin/si.yml | 4 +- .../config/locales/crowdin/sk.yml | 4 +- .../config/locales/crowdin/sl.yml | 4 +- .../config/locales/crowdin/sr.yml | 4 +- .../config/locales/crowdin/sv.yml | 4 +- .../config/locales/crowdin/th.yml | 4 +- .../config/locales/crowdin/tr.yml | 4 +- .../config/locales/crowdin/uk.yml | 4 +- .../config/locales/crowdin/uz.yml | 4 +- .../config/locales/crowdin/vi.yml | 4 +- .../config/locales/crowdin/zh-CN.yml | 4 +- .../config/locales/crowdin/zh-TW.yml | 4 +- .../storages/config/locales/crowdin/af.yml | 16 +- .../storages/config/locales/crowdin/ar.yml | 16 +- .../storages/config/locales/crowdin/az.yml | 16 +- .../storages/config/locales/crowdin/be.yml | 16 +- .../storages/config/locales/crowdin/bg.yml | 16 +- .../storages/config/locales/crowdin/ca.yml | 16 +- .../config/locales/crowdin/ckb-IR.yml | 16 +- .../storages/config/locales/crowdin/cs.yml | 34 +- .../storages/config/locales/crowdin/da.yml | 16 +- .../storages/config/locales/crowdin/de.yml | 16 +- .../storages/config/locales/crowdin/el.yml | 16 +- .../storages/config/locales/crowdin/eo.yml | 16 +- .../storages/config/locales/crowdin/es.yml | 16 +- .../storages/config/locales/crowdin/et.yml | 16 +- .../storages/config/locales/crowdin/eu.yml | 16 +- .../storages/config/locales/crowdin/fa.yml | 16 +- .../storages/config/locales/crowdin/fi.yml | 16 +- .../storages/config/locales/crowdin/fil.yml | 16 +- .../storages/config/locales/crowdin/fr.yml | 22 +- .../storages/config/locales/crowdin/he.yml | 16 +- .../storages/config/locales/crowdin/hi.yml | 16 +- .../storages/config/locales/crowdin/hr.yml | 16 +- .../storages/config/locales/crowdin/hu.yml | 16 +- .../storages/config/locales/crowdin/id.yml | 16 +- .../storages/config/locales/crowdin/it.yml | 16 +- .../storages/config/locales/crowdin/ja.yml | 16 +- .../storages/config/locales/crowdin/ka.yml | 16 +- .../storages/config/locales/crowdin/kk.yml | 16 +- .../storages/config/locales/crowdin/ko.yml | 16 +- .../storages/config/locales/crowdin/lt.yml | 16 +- .../storages/config/locales/crowdin/lv.yml | 16 +- .../storages/config/locales/crowdin/mn.yml | 16 +- .../storages/config/locales/crowdin/ms.yml | 16 +- .../storages/config/locales/crowdin/ne.yml | 16 +- .../storages/config/locales/crowdin/nl.yml | 16 +- .../storages/config/locales/crowdin/no.yml | 16 +- .../storages/config/locales/crowdin/pl.yml | 16 +- .../storages/config/locales/crowdin/pt-BR.yml | 16 +- .../storages/config/locales/crowdin/pt-PT.yml | 16 +- .../storages/config/locales/crowdin/ro.yml | 16 +- .../storages/config/locales/crowdin/ru.yml | 16 +- .../storages/config/locales/crowdin/rw.yml | 16 +- .../storages/config/locales/crowdin/si.yml | 16 +- .../storages/config/locales/crowdin/sk.yml | 16 +- .../storages/config/locales/crowdin/sl.yml | 16 +- .../storages/config/locales/crowdin/sr.yml | 16 +- .../storages/config/locales/crowdin/sv.yml | 16 +- .../storages/config/locales/crowdin/th.yml | 16 +- .../storages/config/locales/crowdin/tr.yml | 16 +- .../storages/config/locales/crowdin/uk.yml | 16 +- .../storages/config/locales/crowdin/uz.yml | 16 +- .../storages/config/locales/crowdin/vi.yml | 16 +- .../storages/config/locales/crowdin/zh-CN.yml | 16 +- .../storages/config/locales/crowdin/zh-TW.yml | 16 +- .../config/locales/crowdin/af.yml | 7 +- .../config/locales/crowdin/ar.yml | 7 +- .../config/locales/crowdin/az.yml | 7 +- .../config/locales/crowdin/be.yml | 7 +- .../config/locales/crowdin/bg.yml | 7 +- .../config/locales/crowdin/ca.yml | 7 +- .../config/locales/crowdin/ckb-IR.yml | 7 +- .../config/locales/crowdin/cs.yml | 9 +- .../config/locales/crowdin/da.yml | 7 +- .../config/locales/crowdin/de.yml | 7 +- .../config/locales/crowdin/el.yml | 7 +- .../config/locales/crowdin/eo.yml | 7 +- .../config/locales/crowdin/es.yml | 7 +- .../config/locales/crowdin/et.yml | 7 +- .../config/locales/crowdin/eu.yml | 7 +- .../config/locales/crowdin/fa.yml | 7 +- .../config/locales/crowdin/fi.yml | 7 +- .../config/locales/crowdin/fil.yml | 7 +- .../config/locales/crowdin/fr.yml | 7 +- .../config/locales/crowdin/he.yml | 7 +- .../config/locales/crowdin/hi.yml | 7 +- .../config/locales/crowdin/hr.yml | 7 +- .../config/locales/crowdin/hu.yml | 7 +- .../config/locales/crowdin/id.yml | 7 +- .../config/locales/crowdin/it.yml | 7 +- .../config/locales/crowdin/ja.yml | 7 +- .../config/locales/crowdin/ka.yml | 7 +- .../config/locales/crowdin/kk.yml | 7 +- .../config/locales/crowdin/ko.yml | 7 +- .../config/locales/crowdin/lt.yml | 7 +- .../config/locales/crowdin/lv.yml | 7 +- .../config/locales/crowdin/mn.yml | 7 +- .../config/locales/crowdin/ms.yml | 7 +- .../config/locales/crowdin/ne.yml | 7 +- .../config/locales/crowdin/nl.yml | 7 +- .../config/locales/crowdin/no.yml | 7 +- .../config/locales/crowdin/pl.yml | 7 +- .../config/locales/crowdin/pt-BR.yml | 7 +- .../config/locales/crowdin/pt-PT.yml | 7 +- .../config/locales/crowdin/ro.yml | 7 +- .../config/locales/crowdin/ru.yml | 7 +- .../config/locales/crowdin/rw.yml | 7 +- .../config/locales/crowdin/si.yml | 7 +- .../config/locales/crowdin/sk.yml | 7 +- .../config/locales/crowdin/sl.yml | 7 +- .../config/locales/crowdin/sr.yml | 7 +- .../config/locales/crowdin/sv.yml | 7 +- .../config/locales/crowdin/th.yml | 7 +- .../config/locales/crowdin/tr.yml | 7 +- .../config/locales/crowdin/uk.yml | 7 +- .../config/locales/crowdin/uz.yml | 7 +- .../config/locales/crowdin/vi.yml | 7 +- .../config/locales/crowdin/zh-CN.yml | 7 +- .../config/locales/crowdin/zh-TW.yml | 7 +- .../webhooks/config/locales/crowdin/af.yml | 6 +- .../webhooks/config/locales/crowdin/ar.yml | 6 +- .../webhooks/config/locales/crowdin/az.yml | 6 +- .../webhooks/config/locales/crowdin/be.yml | 6 +- .../webhooks/config/locales/crowdin/bg.yml | 6 +- .../webhooks/config/locales/crowdin/ca.yml | 6 +- .../config/locales/crowdin/ckb-IR.yml | 6 +- .../webhooks/config/locales/crowdin/cs.yml | 6 +- .../webhooks/config/locales/crowdin/da.yml | 6 +- .../webhooks/config/locales/crowdin/de.yml | 6 +- .../webhooks/config/locales/crowdin/el.yml | 6 +- .../webhooks/config/locales/crowdin/eo.yml | 6 +- .../webhooks/config/locales/crowdin/es.yml | 6 +- .../webhooks/config/locales/crowdin/et.yml | 6 +- .../webhooks/config/locales/crowdin/eu.yml | 6 +- .../webhooks/config/locales/crowdin/fa.yml | 6 +- .../webhooks/config/locales/crowdin/fi.yml | 6 +- .../webhooks/config/locales/crowdin/fil.yml | 6 +- .../webhooks/config/locales/crowdin/fr.yml | 6 +- .../webhooks/config/locales/crowdin/he.yml | 6 +- .../webhooks/config/locales/crowdin/hi.yml | 6 +- .../webhooks/config/locales/crowdin/hr.yml | 6 +- .../webhooks/config/locales/crowdin/hu.yml | 6 +- .../webhooks/config/locales/crowdin/id.yml | 6 +- .../webhooks/config/locales/crowdin/it.yml | 6 +- .../webhooks/config/locales/crowdin/ja.yml | 6 +- .../webhooks/config/locales/crowdin/ka.yml | 6 +- .../webhooks/config/locales/crowdin/kk.yml | 6 +- .../webhooks/config/locales/crowdin/ko.yml | 6 +- .../webhooks/config/locales/crowdin/lt.yml | 6 +- .../webhooks/config/locales/crowdin/lv.yml | 6 +- .../webhooks/config/locales/crowdin/mn.yml | 6 +- .../webhooks/config/locales/crowdin/ms.yml | 6 +- .../webhooks/config/locales/crowdin/ne.yml | 6 +- .../webhooks/config/locales/crowdin/nl.yml | 6 +- .../webhooks/config/locales/crowdin/no.yml | 6 +- .../webhooks/config/locales/crowdin/pl.yml | 6 +- .../webhooks/config/locales/crowdin/pt-BR.yml | 6 +- .../webhooks/config/locales/crowdin/pt-PT.yml | 6 +- .../webhooks/config/locales/crowdin/ro.yml | 6 +- .../webhooks/config/locales/crowdin/ru.yml | 6 +- .../webhooks/config/locales/crowdin/rw.yml | 6 +- .../webhooks/config/locales/crowdin/si.yml | 6 +- .../webhooks/config/locales/crowdin/sk.yml | 6 +- .../webhooks/config/locales/crowdin/sl.yml | 6 +- .../webhooks/config/locales/crowdin/sr.yml | 6 +- .../webhooks/config/locales/crowdin/sv.yml | 6 +- .../webhooks/config/locales/crowdin/th.yml | 6 +- .../webhooks/config/locales/crowdin/tr.yml | 6 +- .../webhooks/config/locales/crowdin/uk.yml | 6 +- .../webhooks/config/locales/crowdin/uz.yml | 6 +- .../webhooks/config/locales/crowdin/vi.yml | 6 +- .../webhooks/config/locales/crowdin/zh-CN.yml | 6 +- .../webhooks/config/locales/crowdin/zh-TW.yml | 6 +- modules/wikis/config/locales/crowdin/af.yml | 23 + modules/wikis/config/locales/crowdin/ar.yml | 31 ++ modules/wikis/config/locales/crowdin/az.yml | 23 + modules/wikis/config/locales/crowdin/be.yml | 27 ++ modules/wikis/config/locales/crowdin/bg.yml | 23 + modules/wikis/config/locales/crowdin/ca.yml | 23 + .../wikis/config/locales/crowdin/ckb-IR.yml | 23 + modules/wikis/config/locales/crowdin/cs.yml | 27 ++ modules/wikis/config/locales/crowdin/da.yml | 23 + modules/wikis/config/locales/crowdin/de.yml | 23 + modules/wikis/config/locales/crowdin/el.yml | 23 + modules/wikis/config/locales/crowdin/eo.yml | 23 + modules/wikis/config/locales/crowdin/es.yml | 23 + modules/wikis/config/locales/crowdin/et.yml | 23 + modules/wikis/config/locales/crowdin/eu.yml | 23 + modules/wikis/config/locales/crowdin/fa.yml | 23 + modules/wikis/config/locales/crowdin/fi.yml | 23 + modules/wikis/config/locales/crowdin/fil.yml | 23 + modules/wikis/config/locales/crowdin/fr.yml | 23 + modules/wikis/config/locales/crowdin/he.yml | 27 ++ modules/wikis/config/locales/crowdin/hi.yml | 23 + modules/wikis/config/locales/crowdin/hr.yml | 25 ++ modules/wikis/config/locales/crowdin/hu.yml | 23 + modules/wikis/config/locales/crowdin/id.yml | 21 + modules/wikis/config/locales/crowdin/it.yml | 23 + modules/wikis/config/locales/crowdin/ja.yml | 21 + .../wikis/config/locales/crowdin/js-af.yml | 26 ++ .../wikis/config/locales/crowdin/js-ar.yml | 26 ++ .../wikis/config/locales/crowdin/js-az.yml | 26 ++ .../wikis/config/locales/crowdin/js-be.yml | 26 ++ .../wikis/config/locales/crowdin/js-bg.yml | 26 ++ .../wikis/config/locales/crowdin/js-ca.yml | 26 ++ .../config/locales/crowdin/js-ckb-IR.yml | 26 ++ .../wikis/config/locales/crowdin/js-cs.yml | 26 ++ .../wikis/config/locales/crowdin/js-da.yml | 26 ++ .../wikis/config/locales/crowdin/js-de.yml | 26 ++ .../wikis/config/locales/crowdin/js-el.yml | 26 ++ .../wikis/config/locales/crowdin/js-eo.yml | 26 ++ .../wikis/config/locales/crowdin/js-es.yml | 26 ++ .../wikis/config/locales/crowdin/js-et.yml | 26 ++ .../wikis/config/locales/crowdin/js-eu.yml | 26 ++ .../wikis/config/locales/crowdin/js-fa.yml | 26 ++ .../wikis/config/locales/crowdin/js-fi.yml | 26 ++ .../wikis/config/locales/crowdin/js-fil.yml | 26 ++ .../wikis/config/locales/crowdin/js-fr.yml | 26 ++ .../wikis/config/locales/crowdin/js-he.yml | 26 ++ .../wikis/config/locales/crowdin/js-hi.yml | 26 ++ .../wikis/config/locales/crowdin/js-hr.yml | 26 ++ .../wikis/config/locales/crowdin/js-hu.yml | 26 ++ .../wikis/config/locales/crowdin/js-id.yml | 26 ++ .../wikis/config/locales/crowdin/js-it.yml | 26 ++ .../wikis/config/locales/crowdin/js-ja.yml | 26 ++ .../wikis/config/locales/crowdin/js-ka.yml | 26 ++ .../wikis/config/locales/crowdin/js-kk.yml | 26 ++ .../wikis/config/locales/crowdin/js-ko.yml | 26 ++ .../wikis/config/locales/crowdin/js-lt.yml | 26 ++ .../wikis/config/locales/crowdin/js-lv.yml | 26 ++ .../wikis/config/locales/crowdin/js-mn.yml | 26 ++ .../wikis/config/locales/crowdin/js-ms.yml | 26 ++ .../wikis/config/locales/crowdin/js-ne.yml | 26 ++ .../wikis/config/locales/crowdin/js-nl.yml | 26 ++ .../wikis/config/locales/crowdin/js-no.yml | 26 ++ .../wikis/config/locales/crowdin/js-pl.yml | 26 ++ .../wikis/config/locales/crowdin/js-pt-BR.yml | 26 ++ .../wikis/config/locales/crowdin/js-pt-PT.yml | 26 ++ .../wikis/config/locales/crowdin/js-ro.yml | 26 ++ .../wikis/config/locales/crowdin/js-ru.yml | 26 ++ .../wikis/config/locales/crowdin/js-rw.yml | 26 ++ .../wikis/config/locales/crowdin/js-si.yml | 26 ++ .../wikis/config/locales/crowdin/js-sk.yml | 26 ++ .../wikis/config/locales/crowdin/js-sl.yml | 26 ++ .../wikis/config/locales/crowdin/js-sr.yml | 26 ++ .../wikis/config/locales/crowdin/js-sv.yml | 26 ++ .../wikis/config/locales/crowdin/js-th.yml | 26 ++ .../wikis/config/locales/crowdin/js-tr.yml | 26 ++ .../wikis/config/locales/crowdin/js-uk.yml | 26 ++ .../wikis/config/locales/crowdin/js-uz.yml | 26 ++ .../wikis/config/locales/crowdin/js-vi.yml | 26 ++ .../wikis/config/locales/crowdin/js-zh-CN.yml | 26 ++ .../wikis/config/locales/crowdin/js-zh-TW.yml | 26 ++ modules/wikis/config/locales/crowdin/ka.yml | 23 + modules/wikis/config/locales/crowdin/kk.yml | 23 + modules/wikis/config/locales/crowdin/ko.yml | 21 + modules/wikis/config/locales/crowdin/lt.yml | 27 ++ modules/wikis/config/locales/crowdin/lv.yml | 25 ++ modules/wikis/config/locales/crowdin/mn.yml | 23 + modules/wikis/config/locales/crowdin/ms.yml | 21 + modules/wikis/config/locales/crowdin/ne.yml | 23 + modules/wikis/config/locales/crowdin/nl.yml | 23 + modules/wikis/config/locales/crowdin/no.yml | 23 + modules/wikis/config/locales/crowdin/pl.yml | 27 ++ .../wikis/config/locales/crowdin/pt-BR.yml | 23 + .../wikis/config/locales/crowdin/pt-PT.yml | 23 + modules/wikis/config/locales/crowdin/ro.yml | 25 ++ modules/wikis/config/locales/crowdin/ru.yml | 27 ++ modules/wikis/config/locales/crowdin/rw.yml | 23 + modules/wikis/config/locales/crowdin/si.yml | 23 + modules/wikis/config/locales/crowdin/sk.yml | 27 ++ modules/wikis/config/locales/crowdin/sl.yml | 27 ++ modules/wikis/config/locales/crowdin/sr.yml | 25 ++ modules/wikis/config/locales/crowdin/sv.yml | 23 + modules/wikis/config/locales/crowdin/th.yml | 21 + modules/wikis/config/locales/crowdin/tr.yml | 23 + modules/wikis/config/locales/crowdin/uk.yml | 27 ++ modules/wikis/config/locales/crowdin/uz.yml | 23 + modules/wikis/config/locales/crowdin/vi.yml | 21 + .../wikis/config/locales/crowdin/zh-CN.yml | 21 + .../wikis/config/locales/crowdin/zh-TW.yml | 21 + 608 files changed, 23593 insertions(+), 4328 deletions(-) create mode 100644 modules/wikis/config/locales/crowdin/af.yml create mode 100644 modules/wikis/config/locales/crowdin/ar.yml create mode 100644 modules/wikis/config/locales/crowdin/az.yml create mode 100644 modules/wikis/config/locales/crowdin/be.yml create mode 100644 modules/wikis/config/locales/crowdin/bg.yml create mode 100644 modules/wikis/config/locales/crowdin/ca.yml create mode 100644 modules/wikis/config/locales/crowdin/ckb-IR.yml create mode 100644 modules/wikis/config/locales/crowdin/cs.yml create mode 100644 modules/wikis/config/locales/crowdin/da.yml create mode 100644 modules/wikis/config/locales/crowdin/de.yml create mode 100644 modules/wikis/config/locales/crowdin/el.yml create mode 100644 modules/wikis/config/locales/crowdin/eo.yml create mode 100644 modules/wikis/config/locales/crowdin/es.yml create mode 100644 modules/wikis/config/locales/crowdin/et.yml create mode 100644 modules/wikis/config/locales/crowdin/eu.yml create mode 100644 modules/wikis/config/locales/crowdin/fa.yml create mode 100644 modules/wikis/config/locales/crowdin/fi.yml create mode 100644 modules/wikis/config/locales/crowdin/fil.yml create mode 100644 modules/wikis/config/locales/crowdin/fr.yml create mode 100644 modules/wikis/config/locales/crowdin/he.yml create mode 100644 modules/wikis/config/locales/crowdin/hi.yml create mode 100644 modules/wikis/config/locales/crowdin/hr.yml create mode 100644 modules/wikis/config/locales/crowdin/hu.yml create mode 100644 modules/wikis/config/locales/crowdin/id.yml create mode 100644 modules/wikis/config/locales/crowdin/it.yml create mode 100644 modules/wikis/config/locales/crowdin/ja.yml create mode 100644 modules/wikis/config/locales/crowdin/js-af.yml create mode 100644 modules/wikis/config/locales/crowdin/js-ar.yml create mode 100644 modules/wikis/config/locales/crowdin/js-az.yml create mode 100644 modules/wikis/config/locales/crowdin/js-be.yml create mode 100644 modules/wikis/config/locales/crowdin/js-bg.yml create mode 100644 modules/wikis/config/locales/crowdin/js-ca.yml create mode 100644 modules/wikis/config/locales/crowdin/js-ckb-IR.yml create mode 100644 modules/wikis/config/locales/crowdin/js-cs.yml create mode 100644 modules/wikis/config/locales/crowdin/js-da.yml create mode 100644 modules/wikis/config/locales/crowdin/js-de.yml create mode 100644 modules/wikis/config/locales/crowdin/js-el.yml create mode 100644 modules/wikis/config/locales/crowdin/js-eo.yml create mode 100644 modules/wikis/config/locales/crowdin/js-es.yml create mode 100644 modules/wikis/config/locales/crowdin/js-et.yml create mode 100644 modules/wikis/config/locales/crowdin/js-eu.yml create mode 100644 modules/wikis/config/locales/crowdin/js-fa.yml create mode 100644 modules/wikis/config/locales/crowdin/js-fi.yml create mode 100644 modules/wikis/config/locales/crowdin/js-fil.yml create mode 100644 modules/wikis/config/locales/crowdin/js-fr.yml create mode 100644 modules/wikis/config/locales/crowdin/js-he.yml create mode 100644 modules/wikis/config/locales/crowdin/js-hi.yml create mode 100644 modules/wikis/config/locales/crowdin/js-hr.yml create mode 100644 modules/wikis/config/locales/crowdin/js-hu.yml create mode 100644 modules/wikis/config/locales/crowdin/js-id.yml create mode 100644 modules/wikis/config/locales/crowdin/js-it.yml create mode 100644 modules/wikis/config/locales/crowdin/js-ja.yml create mode 100644 modules/wikis/config/locales/crowdin/js-ka.yml create mode 100644 modules/wikis/config/locales/crowdin/js-kk.yml create mode 100644 modules/wikis/config/locales/crowdin/js-ko.yml create mode 100644 modules/wikis/config/locales/crowdin/js-lt.yml create mode 100644 modules/wikis/config/locales/crowdin/js-lv.yml create mode 100644 modules/wikis/config/locales/crowdin/js-mn.yml create mode 100644 modules/wikis/config/locales/crowdin/js-ms.yml create mode 100644 modules/wikis/config/locales/crowdin/js-ne.yml create mode 100644 modules/wikis/config/locales/crowdin/js-nl.yml create mode 100644 modules/wikis/config/locales/crowdin/js-no.yml create mode 100644 modules/wikis/config/locales/crowdin/js-pl.yml create mode 100644 modules/wikis/config/locales/crowdin/js-pt-BR.yml create mode 100644 modules/wikis/config/locales/crowdin/js-pt-PT.yml create mode 100644 modules/wikis/config/locales/crowdin/js-ro.yml create mode 100644 modules/wikis/config/locales/crowdin/js-ru.yml create mode 100644 modules/wikis/config/locales/crowdin/js-rw.yml create mode 100644 modules/wikis/config/locales/crowdin/js-si.yml create mode 100644 modules/wikis/config/locales/crowdin/js-sk.yml create mode 100644 modules/wikis/config/locales/crowdin/js-sl.yml create mode 100644 modules/wikis/config/locales/crowdin/js-sr.yml create mode 100644 modules/wikis/config/locales/crowdin/js-sv.yml create mode 100644 modules/wikis/config/locales/crowdin/js-th.yml create mode 100644 modules/wikis/config/locales/crowdin/js-tr.yml create mode 100644 modules/wikis/config/locales/crowdin/js-uk.yml create mode 100644 modules/wikis/config/locales/crowdin/js-uz.yml create mode 100644 modules/wikis/config/locales/crowdin/js-vi.yml create mode 100644 modules/wikis/config/locales/crowdin/js-zh-CN.yml create mode 100644 modules/wikis/config/locales/crowdin/js-zh-TW.yml create mode 100644 modules/wikis/config/locales/crowdin/ka.yml create mode 100644 modules/wikis/config/locales/crowdin/kk.yml create mode 100644 modules/wikis/config/locales/crowdin/ko.yml create mode 100644 modules/wikis/config/locales/crowdin/lt.yml create mode 100644 modules/wikis/config/locales/crowdin/lv.yml create mode 100644 modules/wikis/config/locales/crowdin/mn.yml create mode 100644 modules/wikis/config/locales/crowdin/ms.yml create mode 100644 modules/wikis/config/locales/crowdin/ne.yml create mode 100644 modules/wikis/config/locales/crowdin/nl.yml create mode 100644 modules/wikis/config/locales/crowdin/no.yml create mode 100644 modules/wikis/config/locales/crowdin/pl.yml create mode 100644 modules/wikis/config/locales/crowdin/pt-BR.yml create mode 100644 modules/wikis/config/locales/crowdin/pt-PT.yml create mode 100644 modules/wikis/config/locales/crowdin/ro.yml create mode 100644 modules/wikis/config/locales/crowdin/ru.yml create mode 100644 modules/wikis/config/locales/crowdin/rw.yml create mode 100644 modules/wikis/config/locales/crowdin/si.yml create mode 100644 modules/wikis/config/locales/crowdin/sk.yml create mode 100644 modules/wikis/config/locales/crowdin/sl.yml create mode 100644 modules/wikis/config/locales/crowdin/sr.yml create mode 100644 modules/wikis/config/locales/crowdin/sv.yml create mode 100644 modules/wikis/config/locales/crowdin/th.yml create mode 100644 modules/wikis/config/locales/crowdin/tr.yml create mode 100644 modules/wikis/config/locales/crowdin/uk.yml create mode 100644 modules/wikis/config/locales/crowdin/uz.yml create mode 100644 modules/wikis/config/locales/crowdin/vi.yml create mode 100644 modules/wikis/config/locales/crowdin/zh-CN.yml create mode 100644 modules/wikis/config/locales/crowdin/zh-TW.yml diff --git a/config/locales/crowdin/af.yml b/config/locales/crowdin/af.yml index 31462553e6a..3c8ff9ee44b 100644 --- a/config/locales/crowdin/af.yml +++ b/config/locales/crowdin/af.yml @@ -108,7 +108,7 @@ af: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ af: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -607,6 +667,14 @@ af: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -767,6 +835,11 @@ af: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -999,9 +1072,9 @@ af: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: This user is currently not a member of a project. open_profile: "Open profile" @@ -1056,6 +1129,64 @@ af: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Teks" placeholder_users: @@ -1063,11 +1194,11 @@ af: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1099,8 +1230,8 @@ af: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1365,7 +1496,7 @@ af: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "of teken in met jou bestaande rekening" signup_with_auth_provider: "or sign up using" - auth_source_login: Please login as %{login} to activate your account. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Please login to activate your account. actionview_instancetag_blank_option: "Kies asseblief" activemodel: @@ -1636,6 +1767,11 @@ af: consented_at: "Consented at" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1644,8 +1780,6 @@ af: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Toeganklikheid modus" auto_hide_popups: "Automatically hide success banners" @@ -1666,6 +1800,28 @@ af: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Finish date" sharing: "Meedeling" @@ -1720,6 +1876,8 @@ af: before: "must be before %{date}." before_or_equal_to: "must be before or equal to %{date}." blank: "can't be blank." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1756,8 +1914,9 @@ af: less_than_or_equal_to: "must be less than or equal to %{count}." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is not the current user." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "is not a valid date." not_a_datetime: "is not a valid date time." @@ -1788,6 +1947,10 @@ af: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "is the wrong length (should be %{count} characters)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1898,6 +2061,9 @@ af: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "still in use by work packages: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2103,6 +2269,10 @@ af: description: "'Wagwoord bevestiging' moet ooreenstem met die insette in die 'Nuwe wagwoord' gebied." status: invalid_on_create: "is not a valid status for new users." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Kies asseblief ten minste een gebruiker of groep." role_blank: "need to be assigned." @@ -2369,7 +2539,7 @@ af: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: create @@ -2809,7 +2979,7 @@ af: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2826,10 +2996,8 @@ af: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2917,8 +3085,8 @@ af: work_package_edit: "Werkspakket geredigeer" work_package_note: "Werkspakket nota bygevoeg" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Uitvoer" @@ -3169,6 +3337,7 @@ af: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3176,9 +3345,9 @@ af: links: configuration_guide: "Configuration guide" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "Jy kan inteken sodra jou rekening geaktiveer is deur %{signin} te kliek." - instructions_after_logout: "Jy kan weer inteken deur %{signin} te kliek." - instructions_after_error: "Jy kan weer probeer inteken deur %{signin} te kliek. As die probleem voortduur, vra jou admin vir hulp." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3370,6 +3539,8 @@ af: label_calendar_show: "Wys Kalender" label_category: "Kategorie" label_completed: Completed + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "User Consent" label_wiki_menu_item: Wiki kieslysitem label_select_main_menu_item: Kies nuwe hoofkieslysitem @@ -3536,6 +3707,7 @@ af: label_subject_or_id: "Subject or ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Identifiseerder" + label_project_identifier: "Project identifier" label_in: "in" label_in_less_than: "in minder as" label_in_more_than: "in meer as" @@ -3669,11 +3841,13 @@ af: label_news_view_all: "View all news" label_next: "Volgende" label_next_week: "Volgende week" + label_next_year: "Next year" label_no_change_option: "(Geen verandering)" label_no_data: "Geen data om te wys" label_no_due_date: "no finish date" label_no_start_date: "no start date" label_no_parent_page: "No parent page" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Nothing to display" label_nobody: "niemand" @@ -3702,6 +3876,8 @@ af: label_overall_activity: "Algehele aktiwiteit" label_overview: "Oorsig" label_page_title: "Page title" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "part of" label_password_lost: "Jou wagwoord vergeet?" label_password_rule_lowercase: "Kleinletters" @@ -3728,6 +3904,7 @@ af: label_preview_not_available: "Preview not available" label_previous: "Vorige" label_previous_week: "Vorige week" + label_previous_year: "Previous year" label_principal_invite_via_email: " or invite new users via email" label_principal_search: "Add existing users or groups" label_privacy_policy: "Data privacy and security policy" @@ -3839,6 +4016,7 @@ af: label_start_to_start: "start to start" label_statistics: "Statistiek" label_status: "Status" + label_status_plural: "Statuses" label_storage_free_space: "Remaining disk space" label_storage_used_space: "Used disk space" label_storage_group: "Storage filesystem %{identifier}" @@ -3867,6 +4045,7 @@ af: label_title: "Titel" label_projects_menu: "Projekte" label_today: "vandag" + label_today_capitalized: "Today" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3887,7 +4066,7 @@ af: label_user: "Gebruiker" label_user_and_permission: "Users and permissions" label_user_named: "User %{name}" - label_user_activity: "%{value}'s activity" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anoniem" label_user_menu: "User menu" label_user_new: "New user" @@ -3974,6 +4153,15 @@ af: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "gister" label_zen_mode: "Zen mode" label_role_type: "Soort" @@ -3982,6 +4170,22 @@ af: label_not_changeable: "(not changeable)" label_global: "Global" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Error executing the macro %{macro_name}" macro_unavailable: "Macro %{macro_name} cannot be displayed." macros: @@ -4016,7 +4220,7 @@ af: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4046,7 +4250,7 @@ af: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4145,7 +4349,7 @@ af: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: User activation limit reached - message: | + message_html: | A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). The user cannot activate their account since the user limit has been reached. steps: @@ -4331,6 +4535,12 @@ af: permission_manage_versions: "Manage versions" permission_manage_wiki: "Manage wiki" permission_manage_wiki_menu: "Manage wiki menu" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Move work packages" permission_protect_wiki_pages: "Protect wiki pages" permission_rename_wiki_pages: "Rename wiki pages" @@ -4476,10 +4686,10 @@ af: info: "Deleting the repository is an irreversible action." info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." managed_path_note: "The following directory will be erased: %{path}" - repository_verification: "Enter the project's identifier %{identifier} to verify the deletion of its repository." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Do you really want to delete the %{repository_type} of the project %{project_name}?" - subtitle_not_managed: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" - title: "Delete the %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Remove the linked %{repository_type}?" errors: build_failed: "Unable to create the repository with the selected configuration. %{reason}" @@ -4529,7 +4739,7 @@ af: storage: not_available: "Disk storage consumption is not available for this repository." update_timeout: "Keep the last required disk space information for a repository for N minutes.\nAs counting the required disk space of a repository may be costly, increase this value to reduce performance impact." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4574,15 +4784,15 @@ af: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4679,7 +4889,7 @@ af: setting_work_package_properties: "Work package properties" setting_work_package_startdate_is_adddate: "Use current date as start date for new work packages" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Log user login, name, and mail address for all requests" setting_login_required: "Authentication required" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4760,6 +4970,12 @@ af: setting_welcome_text: "Welcome block text" setting_welcome_title: "Welcome block title" setting_welcome_on_homescreen: "Display welcome block on homescreen" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Working days" @@ -4926,10 +5142,12 @@ af: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Plain text" @@ -5051,6 +5269,10 @@ af: text_plugin_assets_writable: "Plugin assets directory writable" text_powered_by: "Powered by %{link}" text_project_identifier_info: "Only lower case letters (a-z), numbers, dashes and underscores are allowed, must start with a lower case letter." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassign to work package:" text_regexp_multiline: 'Die regex is toegepas in ''n multi-lyn manier. bv. ^---\s+' text_repository_usernames_mapping: "Select or update the OpenProject user mapped to each username found in the repository log.\nUsers with the same OpenProject and repository username or email are automatically mapped." @@ -5158,18 +5380,18 @@ af: version_status_locked: "locked" version_status_open: "maak oop" note: Note - note_password_login_disabled: "Password login has been disabled by %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Warning warning_attachments_not_saved: "%{count} file(s) could not be saved." - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5229,7 +5451,7 @@ af: reminders: label_remind_at: "Datum" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5260,8 +5482,8 @@ af: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5381,6 +5603,7 @@ af: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/ar.yml b/config/locales/crowdin/ar.yml index 8e09304a361..f6d4a755e34 100644 --- a/config/locales/crowdin/ar.yml +++ b/config/locales/crowdin/ar.yml @@ -108,7 +108,7 @@ ar: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -403,11 +403,79 @@ ar: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + zero: "... %{count} more projects" + one: "... 1 more project" + two: "... %{count} more projects" + few: "... %{count} more projects" + many: "... %{count} more projects" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + zero: "Remove %{count} statuses?" + one: "Remove 1 status?" + two: "Remove %{count} statuses?" + few: "Remove %{count} statuses?" + many: "Remove %{count} statuses?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -631,6 +699,14 @@ ar: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -795,6 +871,11 @@ ar: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -1051,9 +1132,9 @@ ar: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: هذا المستخدم حالياً ليس عضواً في المشروع. open_profile: "Open profile" @@ -1108,6 +1189,68 @@ ar: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + zero: "%{count} working days" + one: "1 working day" + two: "%{count} working days" + few: "%{count} working days" + many: "%{count} working days" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "النص" placeholder_users: @@ -1115,11 +1258,11 @@ ar: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1155,8 +1298,8 @@ ar: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1425,7 +1568,7 @@ ar: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "أو سجل دخولك من خلال حسابك الموجود مسبقا" signup_with_auth_provider: "أو قم بالتسجيل مستخدماً" - auth_source_login: الرجاء الدخول ك %{login}لتفعيل حسابك. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: الرجاء تسجيل الدخول لتفعيل حسابك. actionview_instancetag_blank_option: "من فضلك اختر" activemodel: @@ -1696,6 +1839,11 @@ ar: consented_at: "Consented at" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1704,8 +1852,6 @@ ar: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "نمط إمكانية الدخول" auto_hide_popups: "Automatically hide success banners" @@ -1726,6 +1872,28 @@ ar: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Finish date" sharing: "مشاركة" @@ -1780,6 +1948,8 @@ ar: before: "يجب أن يكون قبل %{date}." before_or_equal_to: "يجب أن يكون قبل أو يساوي %{date}." blank: "لا يمكن أن يكون فارغا." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1816,8 +1986,9 @@ ar: less_than_or_equal_to: "يجب أن يكون أقل من أو يساوي %{count}." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is not the current user." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "is not a valid date." not_a_datetime: "is not a valid date time." @@ -1848,6 +2019,10 @@ ar: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "هو طول خاطئ (يجب أن تكون الأحرف %{count})." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1962,6 +2137,9 @@ ar: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "لا يزال قيد الاستخدام من قبل مجموعات العمل: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2171,6 +2349,10 @@ ar: description: "'تأكيد كلمة المرور' يجب أن يطابق الإدخال في حقل 'كلمة المرور الجديدة'." status: invalid_on_create: "ليس حالة صحيحة للمستخدمين الجدد." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "يرجى اختيار مستخدم واحد على الأقل أو مجموعة." role_blank: "need to be assigned." @@ -2509,7 +2691,7 @@ ar: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: create @@ -3033,7 +3215,7 @@ ar: few: "%{count} days left of %{trial_plan} trial token" many: "%{count} days left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -3050,10 +3232,8 @@ ar: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -3141,8 +3321,8 @@ ar: work_package_edit: "تم تحريرمجموعة العمل" work_package_note: "لم يتم اضافة مجموعة العمل" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "تصدير" @@ -3393,6 +3573,7 @@ ar: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3400,9 +3581,9 @@ ar: links: configuration_guide: "Configuration guide" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "يمكنك تسجيل الدخول بمجرد أن تم تنشيط الحساب الخاص بك عن طريق النقر فوق %{signin}." - instructions_after_logout: "يمكنك تسجيل الدخول مرة أخرى بواسطة النقر فوق %{signin}." - instructions_after_error: "يمكنك محاولة تسجيل الدخول مرة أخرى بواسطة النقر فوق %{signin}. إذا استمر الخطأ، اسأل المسؤول الخاص بك للحصول على تعليمات." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3594,6 +3775,8 @@ ar: label_calendar_show: "إظهار التقويم" label_category: "الفئة" label_completed: اكتمل + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "User Consent" label_wiki_menu_item: عنصر القائمة wiki label_select_main_menu_item: حدد عنصر القائمة الرئيسية الجديد @@ -3760,6 +3943,7 @@ ar: label_subject_or_id: "Subject or ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "المعرّف" + label_project_identifier: "Project identifier" label_in: "في" label_in_less_than: "في أقل من" label_in_more_than: "في أكثر من" @@ -3893,11 +4077,13 @@ ar: label_news_view_all: "عرض جميع الأحداث" label_next: "التالي" label_next_week: "الأسبوع القادم" + label_next_year: "Next year" label_no_change_option: "(بدون تغيير)" label_no_data: "لا يوجد بيانات لعرضها" label_no_due_date: "no finish date" label_no_start_date: "لا يوجد تاريخ بدء" label_no_parent_page: "No parent page" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "لا يوجد شيء لعرضه" label_nobody: "لا أحد" @@ -3926,6 +4112,8 @@ ar: label_overall_activity: "النشاط الإجمالي" label_overview: "نظرة عامة" label_page_title: "Page title" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "جزء من" label_password_lost: "هل نسيت كلمة المرور ؟" label_password_rule_lowercase: "أحرف صغيرة" @@ -3952,6 +4140,7 @@ ar: label_preview_not_available: "Preview not available" label_previous: "السابق" label_previous_week: "الأسبوع الماضي" + label_previous_year: "Previous year" label_principal_invite_via_email: " أو دعوة المستخدمين الجدد عبر البريد الالكتروني" label_principal_search: "إضافة مستخدمين أو مجموعات موجودة" label_privacy_policy: "Data privacy and security policy" @@ -4063,6 +4252,7 @@ ar: label_start_to_start: "البداية إلى البداية" label_statistics: "إحصائيات" label_status: "الحالة" + label_status_plural: "Statuses" label_storage_free_space: "المساحة المتبقية من القرص" label_storage_used_space: "استخدام مساحة القرص" label_storage_group: "تخزين نظام الملفات %{identifier}" @@ -4091,6 +4281,7 @@ ar: label_title: "العنوان" label_projects_menu: "المشاريع" label_today: "اليوم" + label_today_capitalized: "اليوم" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -4111,7 +4302,7 @@ ar: label_user: "المستخدم" label_user_and_permission: "Users and permissions" label_user_named: "User %{name}" - label_user_activity: "نشاط %{value}'s" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "مجهول" label_user_menu: "User menu" label_user_new: "مستخدم جديد" @@ -4198,6 +4389,27 @@ ar: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + zero: "%{count} days" + one: "1 day" + two: "%{count} days" + few: "%{count} days" + many: "%{count} days" + other: "%{count} days" + label_x_working_days: + zero: "%{count} working days" + one: "1 working day" + two: "%{count} working days" + few: "%{count} working days" + many: "%{count} working days" + other: "%{count} working days" + label_x_working_days_time_off: + zero: "Time off: %{count} working days" + one: "Time off: 1 working day" + two: "Time off: %{count} working days" + few: "Time off: %{count} working days" + many: "Time off: %{count} working days" + other: "Time off: %{count} working days" label_yesterday: "الأمس" label_zen_mode: "Zen mode" label_role_type: "النّوع" @@ -4206,6 +4418,22 @@ ar: label_not_changeable: "(غير قابل للتغيير)" label_global: "عالمي" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "خطأ في تنفيذ %{macro_name} الماكرو" macro_unavailable: "لا يمكن عرض الماكرو %{macro_name}." macros: @@ -4240,7 +4468,7 @@ ar: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4274,7 +4502,7 @@ ar: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4373,7 +4601,7 @@ ar: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: User activation limit reached - message: | + message_html: | A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). The user cannot activate their account since the user limit has been reached. steps: @@ -4563,6 +4791,12 @@ ar: permission_manage_versions: "إدارة الإصدارات" permission_manage_wiki: "إدارة wiki" permission_manage_wiki_menu: "إدارة قائمة wiki" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "نقل مجموعات العمل" permission_protect_wiki_pages: "حماية صفحات wiki" permission_rename_wiki_pages: "قم بإعادة تسمية صفحات wiki" @@ -4706,10 +4940,10 @@ ar: info: "حذف حساب المستخدم إجراء لا يمكن التراجع عنه." info_not_managed: "ملاحظة: هذا ليس حذف محتويات هذا المستودع، كما أنه لا يقوم بإدارة open project." managed_path_note: "سيتم مسح الدليل التالي: %{path}" - repository_verification: "أدخل %{identifier} المعرف للمشروع للتحقق من الحذف في المستودع." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "هل تريد حقاً حذف %{repository_type} %{project_name} المشروع؟" - subtitle_not_managed: "هل تريد حقاً لإزالة %{url} المرتبطة %{repository_type} من %{project_name} المشروع؟" - title: "حذف %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "إزالة %{repository_type} مرتبط؟" errors: build_failed: "غير قادر على إنشاء المستودع مع التكوين الذي تم تحديده. %{reason}" @@ -4759,7 +4993,7 @@ ar: storage: not_available: "استهلاك تخزين القرص غير متوفر لهذا المستودع." update_timeout: "الاحتفاظ بآخر المعلومات مساحة القرص المطلوبة لمستودع لدقائق ن. العد القرص المطلوب مساحة مستودع قد يكون مكلفاً، بزيادة هذه القيمة الحد من تأثير على الأداء." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4804,15 +5038,15 @@ ar: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4909,7 +5143,7 @@ ar: setting_work_package_properties: "خصائص مجموعة العمل" setting_work_package_startdate_is_adddate: "استخدام التاريخ الحالي كتاريخ البدء لمجموعات العمل الجديدة" setting_work_packages_projects_export_limit: "حد تصدير حزم العمل / المشاريع" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "تسجيل الدخول تسجيل دخول المستخدم واسم وعنوان البريد لجميع الطلبات" setting_login_required: "مطلوب مصادقة" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4990,6 +5224,12 @@ ar: setting_welcome_text: "نص كتلة الترجيب" setting_welcome_title: "عنوان كتلة الترحيب" setting_welcome_on_homescreen: "كتلة الترحيب عرض على الشاشة الرئيسية" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Working days" @@ -5156,10 +5396,12 @@ ar: section_work_week: "أسبوع العمل" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Plain text" @@ -5281,6 +5523,10 @@ ar: text_plugin_assets_writable: "دليل أصول البرنامج المساعدة القابل للكتابة" text_powered_by: "بواسطة %{link}" text_project_identifier_info: "يتم السماح فقط رسائل الحالة الأدنى (أ-ي) وأرقام، والشرطات وتسطير، يجب أن تبدأ بحرف حالة الأدنى." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "تعيين أن تعمل الحزمة:" text_regexp_multiline: 'يتم تطبيق التعبير الاعتيادي في وضع متعدد الأسطر. على سبيل المثال: ^---\s+' text_repository_usernames_mapping: "قم باختيار أو تحديث مستخدم \"OpenProject: المشروع المفتوح\" الذي تم تعيينه لكل اسم مستخدم وُجِد في سجل المستودع.\nالمستخدمون الذين لديهم نفس اسم المستخدم أو عنوان البريد الإلكتروني في المشروع المفتوح OpenProject والمستودع يتم تعيينهم تلقائيًّا." @@ -5392,18 +5638,18 @@ ar: version_status_locked: "مقفل" version_status_open: "افتح" note: ملاحظة - note_password_login_disabled: "تم تعطيل تسجيل دخول كلمة المرور بواسطة %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: تحذير warning_attachments_not_saved: "تعذر حفظ الملف (الملفات) %{count}." - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > لقد وصلت إلى حد المستخدمين الخاص بك (%{current}/%{max} مستخدمين نشطين). يرجى الاتصال بـ sales@openproject.com لترقية خطة النسخة المؤسسية الخاصة بك وإضافة مستخدمين إضافيين. warning_protocol_mismatch_html: > @@ -5463,7 +5709,7 @@ ar: reminders: label_remind_at: "التاريخ" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5494,8 +5740,8 @@ ar: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "المستخدم %{user} مقفل ولا يمكن مشاركته" user_details: @@ -5615,6 +5861,7 @@ ar: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/az.yml b/config/locales/crowdin/az.yml index 49b97ec5e7b..45b7ba812ee 100644 --- a/config/locales/crowdin/az.yml +++ b/config/locales/crowdin/az.yml @@ -108,7 +108,7 @@ az: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ az: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -607,6 +667,14 @@ az: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -767,6 +835,11 @@ az: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -999,9 +1072,9 @@ az: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: This user is currently not a member of a project. open_profile: "Open profile" @@ -1056,6 +1129,64 @@ az: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Text" placeholder_users: @@ -1063,11 +1194,11 @@ az: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1099,8 +1230,8 @@ az: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1365,7 +1496,7 @@ az: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "or sign in with your existing account" signup_with_auth_provider: "or sign up using" - auth_source_login: Please login as %{login} to activate your account. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Please login to activate your account. actionview_instancetag_blank_option: "Please select" activemodel: @@ -1636,6 +1767,11 @@ az: consented_at: "Consented at" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1644,8 +1780,6 @@ az: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Accessibility mode" auto_hide_popups: "Automatically hide success banners" @@ -1666,6 +1800,28 @@ az: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Finish date" sharing: "Sharing" @@ -1720,6 +1876,8 @@ az: before: "must be before %{date}." before_or_equal_to: "must be before or equal to %{date}." blank: "can't be blank." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1756,8 +1914,9 @@ az: less_than_or_equal_to: "must be less than or equal to %{count}." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is not the current user." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "is not a valid date." not_a_datetime: "is not a valid date time." @@ -1788,6 +1947,10 @@ az: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "is the wrong length (should be %{count} characters)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1898,6 +2061,9 @@ az: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "still in use by work packages: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2103,6 +2269,10 @@ az: description: "'Password confirmation' should match the input in the 'New password' field." status: invalid_on_create: "is not a valid status for new users." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Please choose at least one user or group." role_blank: "need to be assigned." @@ -2369,7 +2539,7 @@ az: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: create @@ -2809,7 +2979,7 @@ az: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2826,10 +2996,8 @@ az: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2917,8 +3085,8 @@ az: work_package_edit: "Work Package edited" work_package_note: "Work Package note added" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "İxrac et" @@ -3169,6 +3337,7 @@ az: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3176,9 +3345,9 @@ az: links: configuration_guide: "Configuration guide" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "You can sign in as soon as your account has been activated by clicking %{signin}." - instructions_after_logout: "You can sign in again by clicking %{signin}." - instructions_after_error: "You can try to sign in again by clicking %{signin}. If the error persists, ask your admin for help." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3370,6 +3539,8 @@ az: label_calendar_show: "Show Calendar" label_category: "Category" label_completed: Completed + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "User Consent" label_wiki_menu_item: Wiki menu item label_select_main_menu_item: Select new main menu item @@ -3536,6 +3707,7 @@ az: label_subject_or_id: "Subject or ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Identifier" + label_project_identifier: "Project identifier" label_in: "in" label_in_less_than: "in less than" label_in_more_than: "in more than" @@ -3669,11 +3841,13 @@ az: label_news_view_all: "View all news" label_next: "Next" label_next_week: "Next week" + label_next_year: "Next year" label_no_change_option: "(No change)" label_no_data: "No data to display" label_no_due_date: "no finish date" label_no_start_date: "başlama tarixi yoxdur" label_no_parent_page: "No parent page" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Nothing to display" label_nobody: "nobody" @@ -3702,6 +3876,8 @@ az: label_overall_activity: "Overall activity" label_overview: "Overview" label_page_title: "Page title" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "part of" label_password_lost: "Forgot your password?" label_password_rule_lowercase: "Lowercase" @@ -3728,6 +3904,7 @@ az: label_preview_not_available: "Preview not available" label_previous: "Previous" label_previous_week: "Previous week" + label_previous_year: "Previous year" label_principal_invite_via_email: " or invite new users via email" label_principal_search: "Add existing users or groups" label_privacy_policy: "Data privacy and security policy" @@ -3839,6 +4016,7 @@ az: label_start_to_start: "start to start" label_statistics: "Statistics" label_status: "Status" + label_status_plural: "Statuses" label_storage_free_space: "Remaining disk space" label_storage_used_space: "Used disk space" label_storage_group: "Storage filesystem %{identifier}" @@ -3867,6 +4045,7 @@ az: label_title: "Title" label_projects_menu: "Projects" label_today: "today" + label_today_capitalized: "Today" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3887,7 +4066,7 @@ az: label_user: "User" label_user_and_permission: "Users and permissions" label_user_named: "User %{name}" - label_user_activity: "%{value}'s activity" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonymous" label_user_menu: "User menu" label_user_new: "New user" @@ -3974,6 +4153,15 @@ az: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "yesterday" label_zen_mode: "Zen mode" label_role_type: "Type" @@ -3982,6 +4170,22 @@ az: label_not_changeable: "(not changeable)" label_global: "Global" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Error executing the macro %{macro_name}" macro_unavailable: "Macro %{macro_name} cannot be displayed." macros: @@ -4016,7 +4220,7 @@ az: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4046,7 +4250,7 @@ az: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4145,7 +4349,7 @@ az: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: User activation limit reached - message: | + message_html: | A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). The user cannot activate their account since the user limit has been reached. steps: @@ -4331,6 +4535,12 @@ az: permission_manage_versions: "Manage versions" permission_manage_wiki: "Manage wiki" permission_manage_wiki_menu: "Manage wiki menu" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Move work packages" permission_protect_wiki_pages: "Protect wiki pages" permission_rename_wiki_pages: "Rename wiki pages" @@ -4476,10 +4686,10 @@ az: info: "Deleting the repository is an irreversible action." info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." managed_path_note: "The following directory will be erased: %{path}" - repository_verification: "Enter the project's identifier %{identifier} to verify the deletion of its repository." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Do you really want to delete the %{repository_type} of the project %{project_name}?" - subtitle_not_managed: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" - title: "Delete the %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Remove the linked %{repository_type}?" errors: build_failed: "Unable to create the repository with the selected configuration. %{reason}" @@ -4529,7 +4739,7 @@ az: storage: not_available: "Disk storage consumption is not available for this repository." update_timeout: "Keep the last required disk space information for a repository for N minutes.\nAs counting the required disk space of a repository may be costly, increase this value to reduce performance impact." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4574,15 +4784,15 @@ az: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4679,7 +4889,7 @@ az: setting_work_package_properties: "Work package properties" setting_work_package_startdate_is_adddate: "Use current date as start date for new work packages" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Log user login, name, and mail address for all requests" setting_login_required: "Authentication required" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4760,6 +4970,12 @@ az: setting_welcome_text: "Welcome block text" setting_welcome_title: "Welcome block title" setting_welcome_on_homescreen: "Display welcome block on homescreen" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Working days" @@ -4926,10 +5142,12 @@ az: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Plain text" @@ -5051,6 +5269,10 @@ az: text_plugin_assets_writable: "Plugin assets directory writable" text_powered_by: "Powered by %{link}" text_project_identifier_info: "Only lower case letters (a-z), numbers, dashes and underscores are allowed, must start with a lower case letter." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassign to work package:" text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' text_repository_usernames_mapping: "Select or update the OpenProject user mapped to each username found in the repository log.\nUsers with the same OpenProject and repository username or email are automatically mapped." @@ -5158,18 +5380,18 @@ az: version_status_locked: "locked" version_status_open: "open" note: Note - note_password_login_disabled: "Password login has been disabled by %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Warning warning_attachments_not_saved: "%{count} file(s) could not be saved." - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5229,7 +5451,7 @@ az: reminders: label_remind_at: "Date" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5260,8 +5482,8 @@ az: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5381,6 +5603,7 @@ az: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/be.yml b/config/locales/crowdin/be.yml index 4a8565f774f..23331b845da 100644 --- a/config/locales/crowdin/be.yml +++ b/config/locales/crowdin/be.yml @@ -108,7 +108,7 @@ be: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -391,11 +391,75 @@ be: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + few: "... %{count} more projects" + many: "... %{count} more projects" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + few: "Remove %{count} statuses?" + many: "Remove %{count} statuses?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -619,6 +683,14 @@ be: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -781,6 +853,11 @@ be: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -1025,9 +1102,9 @@ be: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: This user is currently not a member of a project. open_profile: "Open profile" @@ -1082,6 +1159,66 @@ be: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + few: "%{count} working days" + many: "%{count} working days" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Text" placeholder_users: @@ -1089,11 +1226,11 @@ be: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1127,8 +1264,8 @@ be: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1395,7 +1532,7 @@ be: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "or sign in with your existing account" signup_with_auth_provider: "or sign up using" - auth_source_login: Please login as %{login} to activate your account. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Please login to activate your account. actionview_instancetag_blank_option: "Please select" activemodel: @@ -1666,6 +1803,11 @@ be: consented_at: "Consented at" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1674,8 +1816,6 @@ be: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Accessibility mode" auto_hide_popups: "Automatically hide success banners" @@ -1696,6 +1836,28 @@ be: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Finish date" sharing: "Sharing" @@ -1750,6 +1912,8 @@ be: before: "must be before %{date}." before_or_equal_to: "must be before or equal to %{date}." blank: "can't be blank." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1786,8 +1950,9 @@ be: less_than_or_equal_to: "must be less than or equal to %{count}." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is not the current user." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "is not a valid date." not_a_datetime: "is not a valid date time." @@ -1818,6 +1983,10 @@ be: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "is the wrong length (should be %{count} characters)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1930,6 +2099,9 @@ be: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "still in use by work packages: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2137,6 +2309,10 @@ be: description: "'Password confirmation' should match the input in the 'New password' field." status: invalid_on_create: "is not a valid status for new users." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Please choose at least one user or group." role_blank: "need to be assigned." @@ -2439,7 +2615,7 @@ be: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: create @@ -2921,7 +3097,7 @@ be: few: "%{count} days left of %{trial_plan} trial token" many: "%{count} days left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2938,10 +3114,8 @@ be: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -3029,8 +3203,8 @@ be: work_package_edit: "Work Package edited" work_package_note: "Work Package note added" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Export" @@ -3281,6 +3455,7 @@ be: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3288,9 +3463,9 @@ be: links: configuration_guide: "Configuration guide" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "You can sign in as soon as your account has been activated by clicking %{signin}." - instructions_after_logout: "You can sign in again by clicking %{signin}." - instructions_after_error: "You can try to sign in again by clicking %{signin}. If the error persists, ask your admin for help." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3482,6 +3657,8 @@ be: label_calendar_show: "Show Calendar" label_category: "Category" label_completed: Completed + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "User Consent" label_wiki_menu_item: Wiki menu item label_select_main_menu_item: Select new main menu item @@ -3648,6 +3825,7 @@ be: label_subject_or_id: "Subject or ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Identifier" + label_project_identifier: "Project identifier" label_in: "in" label_in_less_than: "in less than" label_in_more_than: "in more than" @@ -3781,11 +3959,13 @@ be: label_news_view_all: "View all news" label_next: "Next" label_next_week: "Next week" + label_next_year: "Next year" label_no_change_option: "(No change)" label_no_data: "No data to display" label_no_due_date: "no finish date" label_no_start_date: "no start date" label_no_parent_page: "No parent page" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Nothing to display" label_nobody: "nobody" @@ -3814,6 +3994,8 @@ be: label_overall_activity: "Overall activity" label_overview: "Overview" label_page_title: "Page title" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "part of" label_password_lost: "Forgot your password?" label_password_rule_lowercase: "Lowercase" @@ -3840,6 +4022,7 @@ be: label_preview_not_available: "Preview not available" label_previous: "Previous" label_previous_week: "Previous week" + label_previous_year: "Previous year" label_principal_invite_via_email: " or invite new users via email" label_principal_search: "Add existing users or groups" label_privacy_policy: "Data privacy and security policy" @@ -3951,6 +4134,7 @@ be: label_start_to_start: "start to start" label_statistics: "Statistics" label_status: "Status" + label_status_plural: "Statuses" label_storage_free_space: "Remaining disk space" label_storage_used_space: "Used disk space" label_storage_group: "Storage filesystem %{identifier}" @@ -3979,6 +4163,7 @@ be: label_title: "Title" label_projects_menu: "Projects" label_today: "today" + label_today_capitalized: "Today" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3999,7 +4184,7 @@ be: label_user: "User" label_user_and_permission: "Users and permissions" label_user_named: "User %{name}" - label_user_activity: "%{value}'s activity" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonymous" label_user_menu: "User menu" label_user_new: "New user" @@ -4086,6 +4271,21 @@ be: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + few: "%{count} days" + many: "%{count} days" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + few: "%{count} working days" + many: "%{count} working days" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + few: "Time off: %{count} working days" + many: "Time off: %{count} working days" + other: "Time off: %{count} working days" label_yesterday: "yesterday" label_zen_mode: "Zen mode" label_role_type: "Type" @@ -4094,6 +4294,22 @@ be: label_not_changeable: "(not changeable)" label_global: "Global" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Error executing the macro %{macro_name}" macro_unavailable: "Macro %{macro_name} cannot be displayed." macros: @@ -4128,7 +4344,7 @@ be: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4160,7 +4376,7 @@ be: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4259,7 +4475,7 @@ be: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: User activation limit reached - message: | + message_html: | A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). The user cannot activate their account since the user limit has been reached. steps: @@ -4447,6 +4663,12 @@ be: permission_manage_versions: "Manage versions" permission_manage_wiki: "Manage wiki" permission_manage_wiki_menu: "Manage wiki menu" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Move work packages" permission_protect_wiki_pages: "Protect wiki pages" permission_rename_wiki_pages: "Rename wiki pages" @@ -4592,10 +4814,10 @@ be: info: "Deleting the repository is an irreversible action." info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." managed_path_note: "The following directory will be erased: %{path}" - repository_verification: "Enter the project's identifier %{identifier} to verify the deletion of its repository." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Do you really want to delete the %{repository_type} of the project %{project_name}?" - subtitle_not_managed: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" - title: "Delete the %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Remove the linked %{repository_type}?" errors: build_failed: "Unable to create the repository with the selected configuration. %{reason}" @@ -4645,7 +4867,7 @@ be: storage: not_available: "Disk storage consumption is not available for this repository." update_timeout: "Keep the last required disk space information for a repository for N minutes.\nAs counting the required disk space of a repository may be costly, increase this value to reduce performance impact." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4690,15 +4912,15 @@ be: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4795,7 +5017,7 @@ be: setting_work_package_properties: "Work package properties" setting_work_package_startdate_is_adddate: "Use current date as start date for new work packages" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Log user login, name, and mail address for all requests" setting_login_required: "Authentication required" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4876,6 +5098,12 @@ be: setting_welcome_text: "Welcome block text" setting_welcome_title: "Welcome block title" setting_welcome_on_homescreen: "Display welcome block on homescreen" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Working days" @@ -5042,10 +5270,12 @@ be: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Plain text" @@ -5167,6 +5397,10 @@ be: text_plugin_assets_writable: "Plugin assets directory writable" text_powered_by: "Powered by %{link}" text_project_identifier_info: "Only lower case letters (a-z), numbers, dashes and underscores are allowed, must start with a lower case letter." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassign to work package:" text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' text_repository_usernames_mapping: "Select or update the OpenProject user mapped to each username found in the repository log.\nUsers with the same OpenProject and repository username or email are automatically mapped." @@ -5276,18 +5510,18 @@ be: version_status_locked: "locked" version_status_open: "open" note: Note - note_password_login_disabled: "Password login has been disabled by %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Warning warning_attachments_not_saved: "%{count} file(s) could not be saved." - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5347,7 +5581,7 @@ be: reminders: label_remind_at: "Дата" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5378,8 +5612,8 @@ be: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5499,6 +5733,7 @@ be: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/bg.yml b/config/locales/crowdin/bg.yml index c40eadfd279..1b338566953 100644 --- a/config/locales/crowdin/bg.yml +++ b/config/locales/crowdin/bg.yml @@ -108,7 +108,7 @@ bg: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ bg: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -607,6 +667,14 @@ bg: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -767,6 +835,11 @@ bg: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Промяна на идентификатора + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -999,9 +1072,9 @@ bg: groups: member_in_these_groups: "В момента този потребител е член на следните групи:" no_results_title_text: В момента този потребител не е член на нито една група. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Този потребител в момента не е член на проекта. open_profile: "Open profile" @@ -1056,6 +1129,64 @@ bg: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Текст" placeholder_users: @@ -1063,11 +1194,11 @@ bg: Нямате право да изтривате заместващия потребител. Нямате право да менажирате членове всички проекти, на които е член и заместващия потребител. delete_tooltip: "Изтриване на заместващ потребител" deletion_info: - heading: "Изтриване на потребител на заместител %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > Всички повторения на потребителя на резервоар (напр. Като правоприемник, отговорник или други потребителски стойности) ще бъдат преназначени към акаунт, наречен „Изтрит потребител“. Тъй като данните от всеки изтрит акаунт се пренасочват към този акаунт, няма да е възможно да се разграничат данните, създадени от потребителя, от данните на друг изтрит акаунт. irreversible: "Това действие е необратимо" - confirmation: "Въведете заместващото потребителско име %{name} , за да потвърдите изтриването." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1099,8 +1230,8 @@ bg: status_excluded_from_totals_text: |- Отбележете тази опция, за да изключите работните пакети с този статус от общите стойности на Работа, Оставаща работа и % Завършено в йерархията. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1365,7 +1496,7 @@ bg: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "или влезте със съществуващ акаунт" signup_with_auth_provider: "или се регистрирайте за използване" - auth_source_login: Моля, влезте като %{login} да активирате профила си. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Моля влезте за да активирате профила си. actionview_instancetag_blank_option: "Моля изберете" activemodel: @@ -1636,6 +1767,11 @@ bg: consented_at: "Съгласие в" group: identity_url: "URL адрес на идентичност" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1644,8 +1780,6 @@ bg: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Достъпен режим" auto_hide_popups: "Automatically hide success banners" @@ -1666,6 +1800,28 @@ bg: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Крайна дата" sharing: "Споделяне" @@ -1720,6 +1876,8 @@ bg: before: "трябва да бъде преди %{date}." before_or_equal_to: "трябва да бъде преди или е равно на %{date}." blank: "не може да бъде празно." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "трябва да бъде зададено свойството '%{property}'." cannot_delete_mapping: "е необходимо. Не може да бъде изтрит." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1756,8 +1914,9 @@ bg: less_than_or_equal_to: "трябва да бъде по-малка или равна на %{count}." not_available: "не е наличен поради системна конфигурация." not_deletable: "не може да бъде изтрито." + not_editable: "cannot be edited because it is already in effect." not_current_user: "не е текущият потребител." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "е невалидна дата" not_a_datetime: "не е валидна дата и час." @@ -1788,6 +1947,10 @@ bg: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "е грешна дължина (трябва да бъде %{count} знаци)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1898,6 +2061,9 @@ bg: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "все още се използва от работни пакети: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2103,6 +2269,10 @@ bg: description: "\"Потвърждаване на паролата\" трябва да съответства на въведеното в поле \"нова парола\"." status: invalid_on_create: "не е валиден статус за нови потребители." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Моля изберете поне един потребител или група." role_blank: "е необходимо да бъдат назначени." @@ -2369,7 +2539,7 @@ bg: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: create @@ -2809,7 +2979,7 @@ bg: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2826,10 +2996,8 @@ bg: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2917,8 +3085,8 @@ bg: work_package_edit: "Работният пакет е редактиран" work_package_note: "Добавена бележка за работен пакет" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Експортиране" @@ -3169,6 +3337,7 @@ bg: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Автоматично премахване на общите суми за работа и напредък за работни пакети, които не са родителски, при актуализиране на версията. Това е задача по поддръжката и може спокойно да бъде пренебрегната. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3176,9 +3345,9 @@ bg: links: configuration_guide: "Ръководство за конфигуриране" get_in_touch: "Имате въпроси? Свържете се с нас." - instructions_after_registration: "Можете да влезете веднага след като вашият акаунт е бил активиран като щракнете %{signin}." - instructions_after_logout: "Можете да влезете в отново като щракнете %{signin}." - instructions_after_error: "Можете да опитате да влезете отново като щракнете %{signin}. Ако грешката продължава, помолете вашия администратор за помощ." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3370,6 +3539,8 @@ bg: label_calendar_show: "Показване на календар" label_category: "Категория" label_completed: Completed + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Съгласие на потребителя" label_wiki_menu_item: Wiki елемент от меню label_select_main_menu_item: Изберете нов елемент от главното меню @@ -3536,6 +3707,7 @@ bg: label_subject_or_id: "Тема или №" label_calendar_subscriptions: "Абонаменти за календари" label_identifier: "Идентификатор" + label_project_identifier: "Project identifier" label_in: "в" label_in_less_than: "в по-малко от" label_in_more_than: "в повече от" @@ -3669,11 +3841,13 @@ bg: label_news_view_all: "Покажи всички новини" label_next: "Следващо" label_next_week: "Следващата седмица" + label_next_year: "Next year" label_no_change_option: "(Без промяна)" label_no_data: "Няма данни за показване" label_no_due_date: "без крайна дата" label_no_start_date: "няма начална дата" label_no_parent_page: "Няма родителска страница" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Нищо за показване" label_nobody: "nobody" @@ -3702,6 +3876,8 @@ bg: label_overall_activity: "Overall activity" label_overview: "Общ преглед" label_page_title: "Page title" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "part of" label_password_lost: "Forgot your password?" label_password_rule_lowercase: "Lowercase" @@ -3728,6 +3904,7 @@ bg: label_preview_not_available: "Preview not available" label_previous: "Предишен" label_previous_week: "Предишната седмица" + label_previous_year: "Previous year" label_principal_invite_via_email: " или покани нови потребители по имейл" label_principal_search: "Добавяне на съществуващи потребители или групи" label_privacy_policy: "Data privacy and security policy" @@ -3839,6 +4016,7 @@ bg: label_start_to_start: "start to start" label_statistics: "Статистика" label_status: "Състояние" + label_status_plural: "Statuses" label_storage_free_space: "Оставащо дисково пространство" label_storage_used_space: "Използвано дисково пространство" label_storage_group: "Файлова система на хранилището %{identifier}" @@ -3867,6 +4045,7 @@ bg: label_title: "Заглавие" label_projects_menu: "Проекти" label_today: "днес" + label_today_capitalized: "Днес" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3887,7 +4066,7 @@ bg: label_user: "Потребител" label_user_and_permission: "Потребители и правомощия" label_user_named: "Потребител %{name}" - label_user_activity: "дейност на %{value}" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Анонимен" label_user_menu: "User menu" label_user_new: "Нов потребител" @@ -3974,6 +4153,15 @@ bg: one: "1 файл" other: "%{count} файла" zero: "няма файлове" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "вчера" label_zen_mode: "Режим Дзен" label_role_type: "Тип" @@ -3982,6 +4170,22 @@ bg: label_not_changeable: "(не може да се променя)" label_global: "Глобален" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Грешка при изпълнението на макроса %{macro_name}" macro_unavailable: "Не може да се покаже макрос %{macro_name} ." macros: @@ -4016,7 +4220,7 @@ bg: center: "Към центъра за известия" see_in_center: "Вижте коментар в центъра за уведомяване" settings: "Промяна на настройките за имейл" - salutation: "Здравейте %{user}" + salutation: "Hello %{user}," salutation_full_name: "Пълно име" work_packages: created_at: "Създадено в %{timestamp} от %{user} " @@ -4046,7 +4250,7 @@ bg: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4145,9 +4349,9 @@ bg: roles: "Сега имате следните роли:" mail_user_activation_limit_reached: subject: Достигнат лимит за активиране на потребители - message: | - Нов потребител (%{email}) се опита да създаде акаунт в среда на OpenProject, която управлявате (%{host}). - Потребителят не може да активира своя акаунт, тъй като лимитът на потребителите е достигнат. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "За да разрешите на потребителя да влезе, можете да: " a: "Актуализирайте плана си за плащане ([тук](upgrade_url))" #here turned into a link @@ -4331,6 +4535,12 @@ bg: permission_manage_versions: "Управление на версиите" permission_manage_wiki: "Управление на уикипедия" permission_manage_wiki_menu: "Управление на менюто на уикипедия" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Преместване на работни пакети" permission_protect_wiki_pages: "Защита на страници в уикипедия" permission_rename_wiki_pages: "Преименуване на страници в уикипедия" @@ -4476,10 +4686,10 @@ bg: info: "Deleting the repository is an irreversible action." info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." managed_path_note: "The following directory will be erased: %{path}" - repository_verification: "Enter the project's identifier %{identifier} to verify the deletion of its repository." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Наистина ли искате да изтриете %{repository_type} на проекта %{project_name}?" - subtitle_not_managed: "Наистина ли искате да премахнете свързаните %{repository_type} %{url} от %{project_name} проект?" - title: "Изтриване на %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Премахнете свързаните %{repository_type}?" errors: build_failed: "Не може да създаде хранилище с избраната конфигурация. %{reason}" @@ -4529,7 +4739,7 @@ bg: storage: not_available: "Диск за съхранение на потреблението не е наличен за това хранилище." update_timeout: "Запази последният изисква информация за дисково пространство за хранилище за N минути. Като броим нужното пространство на хранилище може да бъде скъпо, увеличи тази стойност да се намали влиянието върху производителността." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4574,15 +4784,15 @@ bg: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Активирайте CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) позволява разрешения" - setting_apiv3_cors_origins_text_html: > - Ако CORS е активиран, това са източниците, на които е разрешен достъп до API на OpenProject.
Моля, проверете Документацията в заглавието Origin за това как да посочите очакваните стойности. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4679,7 +4889,7 @@ bg: setting_work_package_properties: "Work package properties" setting_work_package_startdate_is_adddate: "Use current date as start date for new work packages" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Log user login, name, and mail address for all requests" setting_login_required: "Authentication required" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4760,6 +4970,12 @@ bg: setting_welcome_text: "Welcome block text" setting_welcome_title: "Welcome block title" setting_welcome_on_homescreen: "Display welcome block on homescreen" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Работни дни" @@ -4926,10 +5142,12 @@ bg: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Plain text" @@ -5051,6 +5269,10 @@ bg: text_plugin_assets_writable: "Plugin assets directory writable" text_powered_by: "Powered by %{link}" text_project_identifier_info: "Only lower case letters (a-z), numbers, dashes and underscores are allowed, must start with a lower case letter." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassign to work package:" text_regexp_multiline: 'Уеднаквяването се прилага в многоредов режим. например ^---\s+' text_repository_usernames_mapping: "Select or update the OpenProject user mapped to each username found in the repository log.\nUsers with the same OpenProject and repository username or email are automatically mapped." @@ -5158,18 +5380,18 @@ bg: version_status_locked: "locked" version_status_open: "отворен" note: Note - note_password_login_disabled: "Password login has been disabled by %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Предупреждение warning_attachments_not_saved: "%{count} file(s) could not be saved." - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5229,7 +5451,7 @@ bg: reminders: label_remind_at: "Дата" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5260,8 +5482,8 @@ bg: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5381,6 +5603,7 @@ bg: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/ca.yml b/config/locales/crowdin/ca.yml index a3840f9b274..07adcf443ca 100644 --- a/config/locales/crowdin/ca.yml +++ b/config/locales/crowdin/ca.yml @@ -108,7 +108,7 @@ ca: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ ca: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -604,6 +664,14 @@ ca: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -764,6 +832,11 @@ ca: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Canvia l'identificador + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -996,9 +1069,9 @@ ca: groups: member_in_these_groups: "Aquest usuari és actualment membre dels següents grups:" no_results_title_text: Aquest usuari no és actualment membre de cap grup. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Aquest usuari no és actualment membre de cap projecte. open_profile: "Open profile" @@ -1053,6 +1126,64 @@ ca: user: "L'usuari ara pot iniciar sessió per accedir a %{project}. Per tant, ja pots planejar amb aquest usuari i assignar-li paquets de treball." placeholder_user: "L'usuari de marcador de posició ara pot ser utilitzat a %{project}. Per tant, ja pots planejar amb aquest usuari i assignar-li paquets de treball." group: "El grup és ara part de %{project}. Per tant, ja pots planejar amb aquest grup i assignar-li paquets de treball." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Text" placeholder_users: @@ -1060,11 +1191,11 @@ ca: No pots eliminar un usuari de marcador de posició. No tens permís per administrar membres per tots els projectes dels quals l'usuari de marcador de posició és membre. delete_tooltip: "Elimina usuari de marcador de posició" deletion_info: - heading: "Elimina l'usuari de marcador de posició %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > Tots els rols de l'usuari de marcador de posició (ex. assignat, responsable o altres valors d'usuari) seran reassignats a un compte anomenat "Usuari eliminat". Com que les dades de totes les comptes eliminades seran assignades a aquest compte no serà possible distingir les dades que l'usuari ha creat de les que altres usuaris eliminats han creat. irreversible: "Aquesta acció és irreversible" - confirmation: "Introdueix el nom de l'usuari de marcador de posició %{name} per confirmar l'eliminació." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1096,8 +1227,8 @@ ca: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1362,7 +1493,7 @@ ca: El registre d'usuari està limitat per al proveïdor d'inici de sessió únic '%{name}'. Si us plau, demaneu a un administrador que us activi el compte o que canviï el límit d'autoregistre d'aquest proveïdor. login_with_auth_provider: "o inicia la sessió amb el teu compte" signup_with_auth_provider: "o registra't mitjançant" - auth_source_login: Si us plau, entra com a %{login} per activar el teu compte. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Si us plau, entra per activar el teu compte. actionview_instancetag_blank_option: "Si us plau, selecciona" activemodel: @@ -1633,6 +1764,11 @@ ca: consented_at: "Consentit a" group: identity_url: "URL d'identitat" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1641,8 +1777,6 @@ ca: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Mode d'accessibilitat" auto_hide_popups: "Automatically hide success banners" @@ -1663,6 +1797,28 @@ ca: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Nom o adreça de correu electrònic" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Data de finalització" sharing: "Compartint" @@ -1717,6 +1873,8 @@ ca: before: "ha de ser abans de %{date}." before_or_equal_to: "ha de ser igual o abans de %{date}." blank: "no pot estar en blanc." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "és necessari de definir la propietat '%{property}' ." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1753,8 +1911,9 @@ ca: less_than_or_equal_to: "ha de ser menor o igual a %{count}." not_available: "no és disponible degut a la configuració del sistema." not_deletable: "no es pot eliminar." + not_editable: "cannot be edited because it is already in effect." not_current_user: "no és l'usuari actual." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "no és una data vàlida." not_a_datetime: "no és una data-i-hora vàlida." @@ -1785,6 +1944,10 @@ ca: no està proveint un "Context Segur". Utilitza HTTPS o bé una adreça de retroalimentació, com un host local. wrong_length: "la longitud és incorrecta (haurien de ser %{count} caràcters)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1895,6 +2058,9 @@ ca: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "encara en ús pels paquets de treball: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "El mòdul \"%{dependency}\" necessita ser activat també, ja que el mòdul \"%{module}\" en depèn." format: "%{message}" @@ -2100,6 +2266,10 @@ ca: description: "'Confirmació de la contrasenya' ha de coincidir amb la introduïda al camp 'Nova contrasenya'." status: invalid_on_create: "no és un valor vàlid per a nous usuaris." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Trieu com a mínim un usuari o grup." role_blank: "s'ha d'assignar." @@ -2366,8 +2536,8 @@ ca: Activar les còpies de seguretat permetrà a qualsevol usuari amb els permisos adients i aquest token de còpia de seguretat descarregar-lo i obtenir totes les dades d'aquesta instal·lació d'OpenProject. Això, inclou les dades de tots els altres usuaris. info: > Hauràs de generar un token de còpia de seguretat per tal de crear la còpia de seguretat. Cada vegada que demanis una còpia de seguretat hauràs de validar aquest token. Pots eliminar el token de còpia de seguretat per desactivar les còpies de seguretat per aquest usuari. - verification: > - Escriu %{word} per confirmar que vols %{action} del token de la còpia de seguretat. + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reinicia verification_word_create: crear warning: > @@ -2806,7 +2976,7 @@ ca: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2823,10 +2993,8 @@ ca: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2914,8 +3082,8 @@ ca: work_package_edit: "Paquet de treball editat" work_package_note: "Afegida nota al paquet de treball" title: - project: "Projecte: %{name}" - subproject: "Subprojecte: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Exportar" @@ -3166,6 +3334,7 @@ ca: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3173,9 +3342,9 @@ ca: links: configuration_guide: "Guia de configuració" get_in_touch: "Tens preguntes? Posa't en contacte amb nosaltres." - instructions_after_registration: "Podràs entrar tan aviat com hagis activat el teu compte fent clic a %{signin}." - instructions_after_logout: "Pots inscriure't de not fent clic a %{signin}." - instructions_after_error: "Pots intentar iniciar sessió fent clic a %{signin}. Si l'error continua, demana ajuda al teu administrador." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3367,6 +3536,8 @@ ca: label_calendar_show: "Mostreu el calendari" label_category: "Categoria" label_completed: Completat + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Consentiment d'usuari" label_wiki_menu_item: Element de menú Wiki label_select_main_menu_item: Seleccioneu nou element de menú principal @@ -3533,6 +3704,7 @@ ca: label_subject_or_id: "Subjecte o ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Identificador" + label_project_identifier: "Project identifier" label_in: "en" label_in_less_than: "en menys de" label_in_more_than: "en més de" @@ -3666,11 +3838,13 @@ ca: label_news_view_all: "Visualitza totes les notícies" label_next: "Següent" label_next_week: "Setmana següent" + label_next_year: "Next year" label_no_change_option: "(sense canvis)" label_no_data: "No hi ha dades per mostrar" label_no_due_date: "sense data de final" label_no_start_date: "no hi ha data d'inici" label_no_parent_page: "Sense pàgina pare" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notificacions" label_nothing_display: "Res a mostrar" label_nobody: "ningú" @@ -3699,6 +3873,8 @@ ca: label_overall_activity: "Activitat global" label_overview: "Visió general" label_page_title: "Títol de pàgina" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "part de" label_password_lost: "Has oblidat la teva contrasenya?" label_password_rule_lowercase: "Minúscula" @@ -3725,6 +3901,7 @@ ca: label_preview_not_available: "Previsualització no disponible" label_previous: "Anterior" label_previous_week: "Setmana anterior" + label_previous_year: "Previous year" label_principal_invite_via_email: " o convidar a nous usuaris per correu electrònic" label_principal_search: "Afegir usuaris o grups existents" label_privacy_policy: "Privacitat de dades i política de seguretat" @@ -3836,6 +4013,7 @@ ca: label_start_to_start: "de principi a principi" label_statistics: "Estadí­stiques" label_status: "Estat" + label_status_plural: "Statuses" label_storage_free_space: "Espai de disc restant" label_storage_used_space: "Espai de disc utilitzat" label_storage_group: "Sistema de fitxers %{identifier}" @@ -3864,6 +4042,7 @@ ca: label_title: "Títol" label_projects_menu: "Projectes" label_today: "avui" + label_today_capitalized: "Avui" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3884,7 +4063,7 @@ ca: label_user: "Usuari" label_user_and_permission: "Usuaris i permisos" label_user_named: "Usuari %{name}" - label_user_activity: "Activitat de %{value}" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anònim" label_user_menu: "User menu" label_user_new: "Nou usuari" @@ -3971,6 +4150,15 @@ ca: one: "1 file" other: "%{count} fitxers" zero: "sense fitxers" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "ahir" label_zen_mode: "Zen mode" label_role_type: "Classe" @@ -3979,6 +4167,22 @@ ca: label_not_changeable: "(no variable)" label_global: "Global" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Error en l'execució de la macro %{macro_name}" macro_unavailable: "No es pot mostrar la macro %{macro_name}." macros: @@ -4013,7 +4217,7 @@ ca: center: "Anar al Centre de notificacions" see_in_center: "Veure el comentari en el centre de notificacions" settings: "Canvia la configuració dels correus electrònics" - salutation: "Hola %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Creat a les %{timestamp} per %{user}" @@ -4043,7 +4247,7 @@ ca: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4140,8 +4344,9 @@ ca: roles: "Ara tens els següents rols:" mail_user_activation_limit_reached: subject: S'ha arribat al límit d'activació d'usuaris - message: | - Un nou usuari (%{email}) ha intentat crear un compte d'OpenProject en el sistema que tu administres (%{host}). L'usuari no pot activar el seu compte, ja que s'ha assolit el límit d'usuaris. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "Per permetre a l'usuari iniciar sessió pots:" a: "Actualitza el teu pla de pagament ([here](upgrade_url))" #here turned into a link @@ -4324,6 +4529,12 @@ ca: permission_manage_versions: "Gestionar les versions" permission_manage_wiki: "Gestionar la wiki" permission_manage_wiki_menu: "Gestionar el menú wiki" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Moure paquets de treball" permission_protect_wiki_pages: "Protegir les pàgines wiki" permission_rename_wiki_pages: "Canviar el nom de les pàgines wiki" @@ -4467,10 +4678,10 @@ ca: info: "Eliminar el repositori és una acció irreversible." info_not_managed: "Nota: Això no suprimirà el contingut d'aquest repositori perquè no és administrat per OpenProject." managed_path_note: "S'esborrarà el directori següent: %{path}" - repository_verification: "Introduir l'identificador del projecte %{identifier} per verificar la supressió del seu repositori." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Estàs segur que vols eliminar el %{repository_type} del %{project_name} projecte?" - subtitle_not_managed: "Estàs segur que vols treure l'enllaç %{repository_type} %{url} del projecte %{project_name}?" - title: "Suprimir el %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Eliminar la %{repository_type} enllaçat?" errors: build_failed: "No es pot crear el repositori amb la configuració seleccionada. %{reason}" @@ -4520,7 +4731,7 @@ ca: storage: not_available: "El consum d'emmagatzematge de disc no està disponible per a aquest repositori." update_timeout: "Mantenir la darrera informació d'espai de disc necessari per a un dipòsit durant N minuts. Ja que comptar l'espai de disc necessari per un repostori pot ser costós, augmenteu aquest valor per reduir l'impacte en el rendiment." - oauth_application_details: "El valor secret de client no serà accessible de nou un cop tanquis aquesta pestanya. Si us plau, còpia aquests valors a la configuració de \"Nextcloud OpenProject Integration\":" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Ves a la pàgina de configuracions" setup_documentation_details: "Si necessites ajuda configurant un nou emmagatzematge de fitxer si us plau, comprova la nostra documentació:" setup_documentation_details_link_text: "File storages setup" @@ -4565,15 +4776,15 @@ ca: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Habilitar CORS" setting_apiv3_cors_origins: "\"API V3 Cross-Origin Resource Sharing (CORS)\" orígens permesos" - setting_apiv3_cors_origins_text_html: > - Si s'activa el CORS, aquests són els orígens que tenen permís per accedir a l'API d'OpenProject.
Si us plau, valida la Documentació en l'encapçalament d'Origin en com s'ha d'especificar els valors esperats. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Màxima mida de pàgina API" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4670,7 +4881,7 @@ ca: setting_work_package_properties: "Propietats de paquet de treball" setting_work_package_startdate_is_adddate: "Utilitzar la data actual com a data d'inici dels paquets de treball nous" setting_work_packages_projects_export_limit: "Límit d'exportació de paquets de treball/projectes" - setting_journal_aggregation_time_minutes: "Accions de l'usuari agrupades en" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Registrar login d'usuari, nom i adreça de correu electrònic de totes les sol·licituds" setting_login_required: "Es necessita autenticació" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4751,6 +4962,12 @@ ca: setting_welcome_text: "Bloc de text de benvinguda" setting_welcome_title: "Títol del bloc de benvinguda" setting_welcome_on_homescreen: "Mostrar el bloc de benvinguda a la pàgina d'inici" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Mètode de destacament per defecte" setting_work_package_list_default_highlighted_attributes: "Atributs de destacament en línia per defecte" setting_working_days: "Dies laborals" @@ -4917,10 +5134,12 @@ ca: section_work_week: "Setmana laboral" section_holidays_and_closures: "Vacances i tancaments" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Text sense format" @@ -5042,6 +5261,10 @@ ca: text_plugin_assets_writable: "Es pot escriure als complements actius" text_powered_by: "Desenvolupat per %{link}" text_project_identifier_info: "Només es permeten lletres minúscules (a-z), números, guions i guions baixos, i ha de començar amb una lletra minúscula." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassigna al paquet de treball:" text_regexp_multiline: 'S''aplica l''expressió regular en mode de múltilínia. Per exemple, ^---\s+' text_repository_usernames_mapping: "Seleccioneu l'assignació entre els usuaris del OpenProject i cada nom d'usuari trobat al repositori.\nEls usuaris amb el mateix nom d'usuari o correu del OpenProject i del repositori s'assignaran automàticament." @@ -5149,18 +5372,18 @@ ca: version_status_locked: "bloquejat" version_status_open: "obrir" note: Nota - note_password_login_disabled: "La connexió amb contrasenya s'ha deshabilitat per %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Alerta warning_attachments_not_saved: "No s'han pogut desar %{count} fitxer(s)." - warning_imminent_user_limit: > - Has convidat a més usuaris dels permesos en el teu pla actual. Pot ser que els usuaris convidats no puguin unir-se al teu OpenProject. Si us plau, actualitza el teu pla o bloqueja a usuaris per permetre als usuaris convidats registrar-se i unir-se. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | El correu electrònic d'activació ha caducat. N'enviarem un de nou a %{email}. Si us plau, fes clic a l'enllaç dins del correu per activar el teu compte. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > Has assolit el nombre d'usuaris límit (%{current}/%{max} usuaris actius. Si us plau, posa't en contacte amb sales@openproject.com per actualitzar la teva edició Enterpirse i afegir nous usuaris. warning_protocol_mismatch_html: > @@ -5220,7 +5443,7 @@ ca: reminders: label_remind_at: "Data" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5251,8 +5474,8 @@ ca: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5372,6 +5595,7 @@ ca: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: No revelat - L'ancestre és invisible per falta de permisos. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-autorització" diff --git a/config/locales/crowdin/ckb-IR.yml b/config/locales/crowdin/ckb-IR.yml index 5e172c2fb8c..5c46368a790 100644 --- a/config/locales/crowdin/ckb-IR.yml +++ b/config/locales/crowdin/ckb-IR.yml @@ -108,7 +108,7 @@ ckb-IR: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ ckb-IR: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -607,6 +667,14 @@ ckb-IR: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -767,6 +835,11 @@ ckb-IR: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -999,9 +1072,9 @@ ckb-IR: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: This user is currently not a member of a project. open_profile: "Open profile" @@ -1056,6 +1129,64 @@ ckb-IR: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Text" placeholder_users: @@ -1063,11 +1194,11 @@ ckb-IR: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1099,8 +1230,8 @@ ckb-IR: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1365,7 +1496,7 @@ ckb-IR: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "or sign in with your existing account" signup_with_auth_provider: "or sign up using" - auth_source_login: Please login as %{login} to activate your account. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Please login to activate your account. actionview_instancetag_blank_option: "Please select" activemodel: @@ -1636,6 +1767,11 @@ ckb-IR: consented_at: "Consented at" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1644,8 +1780,6 @@ ckb-IR: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Accessibility mode" auto_hide_popups: "Automatically hide success banners" @@ -1666,6 +1800,28 @@ ckb-IR: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Finish date" sharing: "Sharing" @@ -1720,6 +1876,8 @@ ckb-IR: before: "must be before %{date}." before_or_equal_to: "must be before or equal to %{date}." blank: "can't be blank." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1756,8 +1914,9 @@ ckb-IR: less_than_or_equal_to: "must be less than or equal to %{count}." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is not the current user." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "is not a valid date." not_a_datetime: "is not a valid date time." @@ -1788,6 +1947,10 @@ ckb-IR: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "is the wrong length (should be %{count} characters)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1898,6 +2061,9 @@ ckb-IR: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "still in use by work packages: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2103,6 +2269,10 @@ ckb-IR: description: "'Password confirmation' should match the input in the 'New password' field." status: invalid_on_create: "is not a valid status for new users." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Please choose at least one user or group." role_blank: "need to be assigned." @@ -2369,7 +2539,7 @@ ckb-IR: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: create @@ -2809,7 +2979,7 @@ ckb-IR: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2826,10 +2996,8 @@ ckb-IR: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2917,8 +3085,8 @@ ckb-IR: work_package_edit: "Work Package edited" work_package_note: "Work Package note added" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Export" @@ -3169,6 +3337,7 @@ ckb-IR: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3176,9 +3345,9 @@ ckb-IR: links: configuration_guide: "Configuration guide" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "You can sign in as soon as your account has been activated by clicking %{signin}." - instructions_after_logout: "You can sign in again by clicking %{signin}." - instructions_after_error: "You can try to sign in again by clicking %{signin}. If the error persists, ask your admin for help." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3370,6 +3539,8 @@ ckb-IR: label_calendar_show: "Show Calendar" label_category: "Category" label_completed: Completed + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "User Consent" label_wiki_menu_item: Wiki menu item label_select_main_menu_item: Select new main menu item @@ -3536,6 +3707,7 @@ ckb-IR: label_subject_or_id: "Subject or ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Identifier" + label_project_identifier: "Project identifier" label_in: "in" label_in_less_than: "in less than" label_in_more_than: "in more than" @@ -3669,11 +3841,13 @@ ckb-IR: label_news_view_all: "View all news" label_next: "Next" label_next_week: "Next week" + label_next_year: "Next year" label_no_change_option: "(No change)" label_no_data: "No data to display" label_no_due_date: "no finish date" label_no_start_date: "no start date" label_no_parent_page: "No parent page" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Nothing to display" label_nobody: "nobody" @@ -3702,6 +3876,8 @@ ckb-IR: label_overall_activity: "Overall activity" label_overview: "Overview" label_page_title: "Page title" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "part of" label_password_lost: "Forgot your password?" label_password_rule_lowercase: "Lowercase" @@ -3728,6 +3904,7 @@ ckb-IR: label_preview_not_available: "Preview not available" label_previous: "Previous" label_previous_week: "Previous week" + label_previous_year: "Previous year" label_principal_invite_via_email: " or invite new users via email" label_principal_search: "Add existing users or groups" label_privacy_policy: "Data privacy and security policy" @@ -3839,6 +4016,7 @@ ckb-IR: label_start_to_start: "start to start" label_statistics: "Statistics" label_status: "Status" + label_status_plural: "Statuses" label_storage_free_space: "Remaining disk space" label_storage_used_space: "Used disk space" label_storage_group: "Storage filesystem %{identifier}" @@ -3867,6 +4045,7 @@ ckb-IR: label_title: "Title" label_projects_menu: "Projects" label_today: "today" + label_today_capitalized: "Today" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3887,7 +4066,7 @@ ckb-IR: label_user: "User" label_user_and_permission: "Users and permissions" label_user_named: "User %{name}" - label_user_activity: "%{value}'s activity" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonymous" label_user_menu: "User menu" label_user_new: "New user" @@ -3974,6 +4153,15 @@ ckb-IR: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "yesterday" label_zen_mode: "Zen mode" label_role_type: "Type" @@ -3982,6 +4170,22 @@ ckb-IR: label_not_changeable: "(not changeable)" label_global: "Global" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Error executing the macro %{macro_name}" macro_unavailable: "Macro %{macro_name} cannot be displayed." macros: @@ -4016,7 +4220,7 @@ ckb-IR: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4046,7 +4250,7 @@ ckb-IR: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4145,7 +4349,7 @@ ckb-IR: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: User activation limit reached - message: | + message_html: | A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). The user cannot activate their account since the user limit has been reached. steps: @@ -4331,6 +4535,12 @@ ckb-IR: permission_manage_versions: "Manage versions" permission_manage_wiki: "Manage wiki" permission_manage_wiki_menu: "Manage wiki menu" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Move work packages" permission_protect_wiki_pages: "Protect wiki pages" permission_rename_wiki_pages: "Rename wiki pages" @@ -4476,10 +4686,10 @@ ckb-IR: info: "Deleting the repository is an irreversible action." info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." managed_path_note: "The following directory will be erased: %{path}" - repository_verification: "Enter the project's identifier %{identifier} to verify the deletion of its repository." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Do you really want to delete the %{repository_type} of the project %{project_name}?" - subtitle_not_managed: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" - title: "Delete the %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Remove the linked %{repository_type}?" errors: build_failed: "Unable to create the repository with the selected configuration. %{reason}" @@ -4529,7 +4739,7 @@ ckb-IR: storage: not_available: "Disk storage consumption is not available for this repository." update_timeout: "Keep the last required disk space information for a repository for N minutes.\nAs counting the required disk space of a repository may be costly, increase this value to reduce performance impact." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4574,15 +4784,15 @@ ckb-IR: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4679,7 +4889,7 @@ ckb-IR: setting_work_package_properties: "Work package properties" setting_work_package_startdate_is_adddate: "Use current date as start date for new work packages" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Log user login, name, and mail address for all requests" setting_login_required: "Authentication required" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4760,6 +4970,12 @@ ckb-IR: setting_welcome_text: "Welcome block text" setting_welcome_title: "Welcome block title" setting_welcome_on_homescreen: "Display welcome block on homescreen" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Working days" @@ -4926,10 +5142,12 @@ ckb-IR: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Plain text" @@ -5051,6 +5269,10 @@ ckb-IR: text_plugin_assets_writable: "Plugin assets directory writable" text_powered_by: "Powered by %{link}" text_project_identifier_info: "Only lower case letters (a-z), numbers, dashes and underscores are allowed, must start with a lower case letter." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassign to work package:" text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' text_repository_usernames_mapping: "Select or update the OpenProject user mapped to each username found in the repository log.\nUsers with the same OpenProject and repository username or email are automatically mapped." @@ -5158,18 +5380,18 @@ ckb-IR: version_status_locked: "locked" version_status_open: "open" note: Note - note_password_login_disabled: "Password login has been disabled by %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Warning warning_attachments_not_saved: "%{count} file(s) could not be saved." - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5229,7 +5451,7 @@ ckb-IR: reminders: label_remind_at: "Date" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5260,8 +5482,8 @@ ckb-IR: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5381,6 +5603,7 @@ ckb-IR: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/cs.yml b/config/locales/crowdin/cs.yml index 460d252f7d2..71c50dfd481 100644 --- a/config/locales/crowdin/cs.yml +++ b/config/locales/crowdin/cs.yml @@ -108,7 +108,7 @@ cs: jemalloc_allocator: Jemalloc alokátor paměti journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -391,11 +391,75 @@ cs: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + few: "... %{count} more projects" + many: "... %{count} more projects" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + few: "Remove %{count} statuses?" + many: "Remove %{count} statuses?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Přihlášení a registrace" announcements: @@ -619,6 +683,14 @@ cs: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -781,6 +853,11 @@ cs: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Změnit identifikátor + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -976,7 +1053,7 @@ cs: token/api: title: "The API token has been generated" token/rss: - title: "The RSS token has been generated" + title: "RSS token byl vygenerován" failed_to_reset_token: "Nepodařilo se obnovit přístupový token: %{error}" failed_to_create_token: "Nepodařilo se vytvořit přístupový token: %{error}" failed_to_revoke_token: "Nepodařilo se odvolat přístupový token: %{error}" @@ -1025,9 +1102,9 @@ cs: groups: member_in_these_groups: "Tento uživatel je v současné době členem následujících skupin:" no_results_title_text: Tento uživatel není v současné době členem žádné skupiny. - summary_with_more: Člen %{names} a %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} další..." - summary: Člen %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Tento uživatel není v současné době členem projektu. open_profile: "Otevřít profil" @@ -1082,6 +1159,66 @@ cs: user: "Uživatel se nyní může přihlásit do %{project}. Mezitím již můžete s tímto uživatelem plánovat a přiřazovat například pracovní balíčky." placeholder_user: "Zástupného uživatele lze nyní použít v %{project}. Mezitím již můžete plánovat s tímto uživatelem a přiřadit mu například pracovní balíčky." group: "Skupina je nyní součástí %{project}. Mezitím již můžete s touto skupinou plánovat a přiřadit například pracovní balíčky." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + few: "%{count} working days" + many: "%{count} working days" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + Pokud používáte čtečku obrazovky nebo se chcete vyhnout náhodnému spuštění akce pomocí klávesové zkratky, můžete výchozí [klávesové zkratky](docs_url) vypnout. page: text: "Text" placeholder_users: @@ -1089,11 +1226,11 @@ cs: Nemáte oprávnění odstranit zástupného uživatele. Nemáte právo spravovat členy pro všechny projekty, jejichž členem je zástupný uživatel. delete_tooltip: "Odstranit placeholder uživatele" deletion_info: - heading: "Odstranit zástupného uživatele %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > Všechny výskyty zástupného uživatele (např. jako pověřené nebo odpovědné nebo jiné uživatelské hodnoty) budou přeřazeny na účet nazvaný "Smazaný uživatel". Vzhledem k tomu, že data každého smazaného účtu jsou znovu přiřazena k tomuto účtu, nebude možné rozlišit data, která uživatel vytvořil od dat jiného smazaného účtu. irreversible: "Tato akce je nevratná" - confirmation: "Zadejte název zástupného uživatele %{name} pro potvrzení odstranění." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1127,8 +1264,8 @@ cs: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1395,7 +1532,7 @@ cs: Registrace uživatele je omezena pro jediného poskytovatele přihlášení '%{name}'. Požádejte správce, aby vám účet aktivoval, nebo změňte limit registrace pro tohoto poskytovatele. login_with_auth_provider: "nebo se přihlaste pomocí stávajícího účtu" signup_with_auth_provider: "nebo se zaregistrujte pomocí" - auth_source_login: Přihlaste se prosím jako %{login} pro aktivaci vašeho účtu. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Prosím přihlaste se pro aktivaci účtu. actionview_instancetag_blank_option: "Zvolte prosím" activemodel: @@ -1666,16 +1803,19 @@ cs: consented_at: "Souhlas udělen" group: identity_url: "Adresa URL identity" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Vzhled a chování" header_alerts: "Upozornění" button_update_look_and_feel: "Aktualizovat vzhled a chování" button_update_alerts: "Upravit upozornění" button_update_user_information: "Update profile" - comments_sorting: "Display work package activity sorted by" - disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. + comments_sorting: "Řazení Aktivit pracovního balíčku" + disable_keyboard_shortcuts: "Zakázat klávesové zkratky" dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Režim usnadnění" auto_hide_popups: "Automaticky skrýt oznámení úspěchu" @@ -1696,6 +1836,28 @@ cs: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Jméno nebo e-mailová adresa" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Datum dokončení" sharing: "Sdílení" @@ -1750,6 +1912,8 @@ cs: before: "musí být před %{date}." before_or_equal_to: "musí být před nebo rovno %{date}." blank: "nemůže být prázdné." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "musí mít nastavenou vlastnost '%{property}'." cannot_delete_mapping: "je povinné. Nelze odstranit." is_for_all_cannot_modify: "je pro všechny projekty, a proto je nelze měnit." @@ -1786,8 +1950,9 @@ cs: less_than_or_equal_to: "musí být menší než nebo rovno %{count}." not_available: "není k dispozici kvůli konfiguraci systému." not_deletable: "nelze odstranit" + not_editable: "cannot be edited because it is already in effect." not_current_user: "není aktuální uživatel." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "nenalezeno." not_a_date: "není platné datum." not_a_datetime: "není platný čas." @@ -1818,6 +1983,10 @@ cs: neposkytuje "bezpečný kontext". Buď použijte HTTPS nebo adresu pro smyčku, jako je localhost. wrong_length: "má chybnou délku (měla by být %{count} znaků)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1930,6 +2099,9 @@ cs: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "stále používáno pracovními balíčky: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "Modul '%{dependency}' musí být také povolen, protože modul '%{module}' na něm závisí." format: "%{message}" @@ -2137,6 +2309,10 @@ cs: description: "\"Potvrzení hesla\" musí odpovídat vstupu v poli \"Nové heslo\"." status: invalid_on_create: "není platný stav pro nové uživatele." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Zvolte alespoň jednoho uživatele nebo skupinu." role_blank: "musí být přiřazen." @@ -2196,7 +2372,7 @@ cs: few: "Priorities" many: "Priorities" other: "Priorities" - meeting_participant: "Meeting participant" + meeting_participant: "Účastník schůzky" member: "Člen" news: "Novinky" notification: @@ -2240,9 +2416,9 @@ cs: other: Přístupové tokeny token/rss: one: "RSS token" - few: "RSS tokens" - many: "RSS tokens" - other: "RSS tokens" + few: "RSS tokenů" + many: "RSS tokenů" + other: "RSS tokenů" type: one: "Type" few: "Types" @@ -2439,8 +2615,8 @@ cs: Povolení záloh umožní každému uživateli s požadovaným oprávněním a tímto záložním tokenem stáhnout zálohu obsahující všechna data této OpenProject instalace. To zahrnuje údaje všech ostatních uživatelů. info: > Budete muset vygenerovat token zálohy, abyste mohli vytvořit zálohu. Pokaždé, když chcete požádat o zálohu, budete muset tento token poskytnout. Pro zakázání záloh tomuto uživateli můžete odstranit token zálohy - verification: > - Zadejte %{word} pro potvrzení, že chcete %{action} tokenu. + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: vytvořit warning: > @@ -2801,16 +2977,16 @@ cs: capture_external_links: Capture External Links internal_comments: Internal Comments custom_actions: Custom Actions - custom_field_hierarchies: Hierarchies - customize_life_cycle: Customize Life Cycle + custom_field_hierarchies: Hierarchie + customize_life_cycle: Přizpůsobit životní cyklus date_alerts: Date Alerts - define_custom_style: Custom theme and logo - edit_attribute_groups: Edit Attribute Groups + define_custom_style: Vlastní motiv a logo + edit_attribute_groups: Upravit skupiny atributů gantt_pdf_export: Gantt PDF export - ldap_groups: LDAP users and group sync + ldap_groups: Synchronizace uživatelů a skupin LDAP mcp_server: Model Context Protocol (MCP) - meeting_templates: Reusable meeting templates - nextcloud_sso: Single Sign-On for Nextcloud Storage + meeting_templates: Opakovaně použitelné šablony schůzek + nextcloud_sso: Jednotné přihlášení pro úložiště Nextcloud one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage placeholder_users: Placeholder Users portfolio_management: Portfolio management @@ -2818,7 +2994,7 @@ cs: project_list_sharing: Project List Sharing readonly_work_packages: Readonly Work Packages scim_api: SCIM server API - sso_auth_providers: Single Sign On + sso_auth_providers: Jednotné přihlášení team_planner_view: Team Planner View virus_scanning: Antivirové skenování weighted_item_lists: Weighted item lists @@ -2827,8 +3003,8 @@ cs: work_package_subject_generation: Work Package Subject Generation upsell: buy_now_button: "Koupit nyní" - plans_title: "Doplňky Enterprise Edice" - title: "Doplňky Enterprise Edice" + plans_title: "Podnikové plány" + title: "Doplňky podnikových plánů" plan_title: "Enterprise %{plan} add-on" plan_name: "%{plan} enterprise plan" plan_text_html: "K dispozici od plánu %{plan_name}." @@ -2840,13 +3016,13 @@ cs: Plán Enterprise rozšiřuje komunitní edici OpenProject o další [Enterprise doplňky](enterprise_url) a profesionální podporu, což je ideální pro organizace provozující OpenProject v kritickém prostředí. homescreen_subline: Upgradováním také podpoříte projekt s otevřeným zdrojovým kódem. baseline_comparison: - description: Zvýraznit změny provedené v tomto seznamu od té doby v minulosti. + description: Zvýraznit změny provedené v tomto seznamu od jakéhokoli bodu v minulosti. benefits: description: "Jaké jsou výhody Enterprise on-premises Edice?" high_security: "Bezpečnostní prvky" high_security_text: "Single sign on (SAML, OpenID Connect, CAS), LDAP skupiny." installation: "Instalační podpora" - installation_text: "Zkušení softwaroví inženýři vás povedou kompletní instalací a instalací ve vaší vlastní infrastruktuře." + installation_text: "Zkušení softwaroví inženýři vás provedou kompletní instalací a nastavením ve vaší vlastní infrastruktuře." premium_features: "Doplňky Enterprise Edice" premium_features_text: "Agile desky, vlastní téma a logo, grafy, inteligentní pracovní postupy s vlastními akcemi, fulltextové vyhledávání příloh pracovního balíčku a vícenásobný výběr vlastních polí." professional_support: "Profesionální podpora" @@ -2921,7 +3097,7 @@ cs: few: "%{count} days left of %{trial_plan} trial token" many: "%{count} days left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2938,10 +3114,8 @@ cs: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -3029,8 +3203,8 @@ cs: work_package_edit: "Pracovní balíček upraven" work_package_note: "Poznámka k pracovnímu balíčku přidána" title: - project: "Projekt %{name}" - subproject: "Podprojekt: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Export" @@ -3220,7 +3394,7 @@ cs: user_guides: "Uživatelské příručky" faq: "FAQ - často kladené dotazy" impressum: "Právní ustanovení" - glossary: "Glossary" + glossary: "Slovník pojmů" shortcuts: "Klávesové zkratky" blog: "OpenProject blog" forums: "Komunitní fórum" @@ -3281,6 +3455,7 @@ cs: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Podřízené pracovní balíčky bez položky Práce jsou ignorovány. total_percent_complete_mode_changed_to_simple_average: >- @@ -3288,9 +3463,9 @@ cs: links: configuration_guide: "Konfigurační manuál" get_in_touch: "Máte otázky? Spojte se s námi." - instructions_after_registration: "Můžete se přihlásit hned poté, co bude váš účet aktivovaný kliknutím na %{signin}." - instructions_after_logout: "Můžete se znovu přihlásit kliknutím na tlačítko %{signin}." - instructions_after_error: "Zkuste se znovu přihlásit kliknutím na %{signin}. Pokud chyba přetrvává, požádejte správce o pomoc." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3335,10 +3510,10 @@ cs: text_hint_link: "iCalendar tokens allow users to [subscribe to OpenProject calendars](docs_url) and view up-to-date work package information from external clients." disabled_text: "iCalendar odběr není administrátorem povolen. Pro použití této funkce kontaktujte svého správce." oauth_application: - active_tokens: "Active tokens" - blank_description: "There is no third-party application access configured and active for you." + active_tokens: "Aktivní tokeny" + blank_description: "Nemáte nakonfigurovaný a aktivní přístup k aplikacím třetích stran." blank_title: "No OAuth application token" - last_refreshed_at: "Last refreshed at" + last_refreshed_at: "Naposledy obnoven" title: "OAuth" table_title: "OAuth application tokens" text_hint: "OAuth application tokens allow third-party applications to connect with this OpenProject instance." @@ -3355,13 +3530,13 @@ cs: unknown_integration: "Unknown" token/rss: add_button: "RSS token" - blank_description: "There is no RSS token yet. You can create one using the button below." - blank_title: "No RSS token" + blank_description: "Zatím neexistuje žádný RSS token. Můžete jej vytvořit pomocí tlačítka níže." + blank_title: "Žádný RSS token" title: "RSS" - table_title: "RSS tokens" - text_hint: "RSS tokens allow users to keep up with the latest changes in this OpenProject instance via an external RSS reader." + table_title: "RSS tokeny" + text_hint: "RSS tokeny umožňují uživatelům sledovat nejnovější změny v této OpenProject instanci přes externí RSS čtečku." static_token_name: "RSS token" - disabled_text: "RSS tokens are not enabled by the administrator. Please contact your administrator to use this feature." + disabled_text: "RSS tokeny nejsou administrátorem povoleny. Pro použití této funkce kontaktujte svého správce." storages: unknown_storage: "Neznámé úložiště" notifications: @@ -3482,6 +3657,8 @@ cs: label_calendar_show: "Zobrazit kalendář" label_category: "Kategorie" label_completed: Dokončeno + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Souhlas uživatele" label_wiki_menu_item: Položka Wiki menu label_select_main_menu_item: Vyberte novou hlavní položku nabídky @@ -3626,7 +3803,7 @@ cs: label_form_configuration: "Konfigurace formuláře" label_formula: "Vzorec" label_gantt_chart: "Ganttův diagram" - label_gantt_chart_plural: "Gantt diagramy" + label_gantt_chart_plural: "Ganttovy diagramy" label_general: "Obecné" label_generate_key: "Generovat klíč" label_global_modules: "Global modules" @@ -3648,6 +3825,7 @@ cs: label_subject_or_id: "Předmět nebo ID" label_calendar_subscriptions: "Odběr kalendáře" label_identifier: "Identifikátor" + label_project_identifier: "Project identifier" label_in: "v" label_in_less_than: "za méně než" label_in_more_than: "za více než" @@ -3781,11 +3959,13 @@ cs: label_news_view_all: "Zobrazit všechny novinky" label_next: "Další" label_next_week: "Příští týden" + label_next_year: "Next year" label_no_change_option: "(Beze změny)" label_no_data: "Žádná data k zobrazení" label_no_due_date: "žádné datum dokončení" label_no_start_date: "žádné datum začátku" label_no_parent_page: "Žádná nadřazená stránka" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifikace" label_nothing_display: "Nic k zobrazení" label_nobody: "nikdo" @@ -3814,6 +3994,8 @@ cs: label_overall_activity: "Celková aktivita" label_overview: "Přehled" label_page_title: "Název stránky" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "část" label_password_lost: "Zapomněli jste heslo?" label_password_rule_lowercase: "Malá písmena" @@ -3840,6 +4022,7 @@ cs: label_preview_not_available: "Náhled není k dispozici" label_previous: "Předchozí" label_previous_week: "Předchozí týden" + label_previous_year: "Previous year" label_principal_invite_via_email: " nebo pozvat nové uživatele e-mailem" label_principal_search: "Přidat existující uživatele nebo skupiny" label_privacy_policy: "Zásady ochrany soukromí a bezpečnosti údajů" @@ -3951,6 +4134,7 @@ cs: label_start_to_start: "od začátku do začátku" label_statistics: "Statistika" label_status: "Stav" + label_status_plural: "Statuses" label_storage_free_space: "Zbývající místo na disku" label_storage_used_space: "Použité místo na disku" label_storage_group: "Souborový systém %{identifier}" @@ -3979,6 +4163,7 @@ cs: label_title: "Název" label_projects_menu: "Projekty" label_today: "dnes" + label_today_capitalized: "Dnes" label_token_version: "Token Version" label_today_as_start_date: "Vyberte dnes jako počáteční datum." label_today_as_due_date: "Select today as finish date." @@ -3999,9 +4184,9 @@ cs: label_user: "Uživatel" label_user_and_permission: "Uživatelé a oprávnění" label_user_named: "Uživatel %{name}" - label_user_activity: "Aktivita %{value}" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonymní" - label_user_menu: "User menu" + label_user_menu: "Uživatelské menu" label_user_new: "Nový uživatel" label_user_plural: "Uživatelé" label_user_search: "Vyhledat uživatele" @@ -4086,6 +4271,21 @@ cs: one: "1 soubor" other: "%{count} souborů" zero: "žádné soubory" + label_x_days: + one: "1 day" + few: "%{count} days" + many: "%{count} days" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + few: "%{count} working days" + many: "%{count} working days" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + few: "Time off: %{count} working days" + many: "Time off: %{count} working days" + other: "Time off: %{count} working days" label_yesterday: "včera" label_zen_mode: "Zen mód" label_role_type: "Typ" @@ -4094,6 +4294,22 @@ cs: label_not_changeable: "(neměnitelné)" label_global: "Globální" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Chyba při provádění makra %{macro_name}" macro_unavailable: "Makro %{macro_name} nelze zobrazit." macros: @@ -4128,7 +4344,7 @@ cs: center: "Centrum oznámení" see_in_center: "Zobrazit komentář v oznamovacím centru" settings: "Změnit nastavení e-mailu" - salutation: "Ahoj %{user}!" + salutation: "Hello %{user}," salutation_full_name: "Jméno a příjmení" work_packages: created_at: "Vytvořeno v %{timestamp} uživatelem %{user} " @@ -4160,7 +4376,7 @@ cs: note: "Poznámka: \"%{note}\"" sharing: work_packages: - allowed_actions: "Můžete %{allowed_actions} tento pracovní balíček. To se může změnit v závislosti na roli a oprávnění vašeho projektu." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "Pro přístup k tomuto pracovnímu balíčku musíte vytvořit a aktivovat účet na %{instance}." open_work_package: "Otevřít pracovní balíček" subject: "Pracovní balíček #%{id} byl s vámi sdílen" @@ -4259,8 +4475,9 @@ cs: roles: "Nyní máte následující role:" mail_user_activation_limit_reached: subject: Dosažen limit aktivace uživatelů - message: | - Nový uživatel (%{email}) se pokusil vytvořit účet v prostředí OpenProject spravovaném vámi (%{host}). Uživatel nemůže aktivovat svůj účet, protože bylo dosaženo limitu v počtu uživatelů. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "Chcete-li umožnit uživateli přihlášení můžete buď: " a: "Upgrade plánu plateb ([here](upgrade_url))" #here turned into a link @@ -4446,6 +4663,12 @@ cs: permission_manage_versions: "Správovat verze" permission_manage_wiki: "Spravovat wiki" permission_manage_wiki_menu: "Spravovat wiki menu" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Přesun pracovních balíčků" permission_protect_wiki_pages: "Ochrana stránky wiki" permission_rename_wiki_pages: "Přejmenovat stránky wiki" @@ -4591,10 +4814,10 @@ cs: info: "Smazání repozitáře je nevratná akce." info_not_managed: "Poznámka: Toto NEBUDE smazat obsah tohoto repositáře, protože není spravován OpenProject." managed_path_note: "Následující adresář bude smazán: %{path}" - repository_verification: "Zadejte identifikátor projektu %{identifier} pro ověření odstranění jeho repozitáře." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Opravdu chcete odstranit %{repository_type} z projektu %{project_name}.?" - subtitle_not_managed: "Opravdu chcete odstranit propojené %{repository_type} %{url} z projektu %{project_name}.?" - title: "Odstranit %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Odstranit propojené %{repository_type}?" errors: build_failed: "Nelze vytvořit repozitář s vybranou konfigurací. %{reason}" @@ -4644,7 +4867,7 @@ cs: storage: not_available: "Pro tento repositář není k dispozici spotřeba úložiště disku." update_timeout: "Uchovávejte poslední požadované informace o úložišti po dobu N minut.\nPři počítání požadovaného místa na disku v úložišti může být nákladné, zvýšit tuto hodnotu, aby se snížil vliv na výkon." - oauth_application_details: "Tajná hodnota klienta nebude po zavření tohoto okna přístupná. Zkopírujte tyto hodnoty do Nextcloud OpenProject Integration nastavení:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Přejít na stránku nastavení" setup_documentation_details: "Pokud potřebujete pomoci s nastavením nového úložiště souborů, prosím zkonzultujte dokumentaci: " setup_documentation_details_link_text: "File storages setup" @@ -4689,15 +4912,15 @@ cs: setting_apiv3_cors_title: "Sdílení zdrojů Cross-Origin (CORS)" setting_apiv3_cors_enabled: "Povolit CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) povolené počátky" - setting_apiv3_cors_origins_text_html: > - Pokud je funkce CORS povolena, je to původ, který má přístup k OpenProject API.
Zkontrolujte Dokumentaci na záhlaví Origin o tom, jak specifikovat očekávané hodnoty. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Přístup k atributům pouze pro čtení" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximální velikost stránky API" setting_apiv3_max_page_size_instructions: > Nastavte maximální velikost stránky, kterou bude vracet API. Nebude možné provádět API požadavky, které vracejí více hodnot na jedné stránce. @@ -4794,7 +5017,7 @@ cs: setting_work_package_properties: "Vlastnosti pracovního balíčku" setting_work_package_startdate_is_adddate: "Použít aktuální datum jako počáteční datum pro nové úkoly" setting_work_packages_projects_export_limit: "Limit exportu pracovních balíčků / projektů" - setting_journal_aggregation_time_minutes: "Uživatelské akce agregované v rámci" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Logovat uživatelský login a emailovou adresu pro všechny požadavky" setting_login_required: "Vyžadována autentizace" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4875,6 +5098,12 @@ cs: setting_welcome_text: "Text uvítacího bloku" setting_welcome_title: "Název uvítacího bloku" setting_welcome_on_homescreen: "Zobrazit uvítací blok na domovské obrazovce" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Výchozí režim zvýraznění" setting_work_package_list_default_highlighted_attributes: "Výchozí inline zvýrazněné atributy" setting_working_days: "Pracovní dny" @@ -5041,10 +5270,12 @@ cs: section_work_week: "Pracovní týden" section_holidays_and_closures: "Dovolená a uzávěrky" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Zmenšení" plain: "Obyčejný text" @@ -5054,7 +5285,7 @@ cs: status_invited: pozván status_locked: uzamčeno status_registered: registrován - status_deleted: Smazáno + status_deleted: smazáno #Used in array.to_sentence. support: array: @@ -5166,6 +5397,10 @@ cs: text_plugin_assets_writable: "Zapisovatelný adresář aktiv pluginu" text_powered_by: "Běží na %{link}" text_project_identifier_info: "Jsou povolena pouze malá písmena (a-z), číslice, pomlčky a podtržítka. Musí začínat malým písmenem." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Přiřadit k pracovnímu balíčku:" text_regexp_multiline: 'regex je použit v režimu více řádků. např.: ^---\s+' text_repository_usernames_mapping: "Vyberte nebo aktualizujte mapovaný uživatel OpenProject ke každému uživatelskému jménu nalezenému v protokolu repozitáře.\nUživatelé se stejným OpenProject a repozitářovým jménem nebo e-mailem jsou automaticky mapováni." @@ -5200,11 +5435,11 @@ cs: time: am: "am" formats: - default: "%m/%d/%Y %I:%M %p" - long: "%B %d, %Y %H:%M" - short: "%d %b %H:%M" - time: "%I:%M %p" - pm: "odp" + default: "%a %e. %B %Y %H:%M %z" + long: "%A %e. %B %Y %H:%M" + short: "%e. %-m. %H:%M" + time: "%H:%M" + pm: "pm" timeframe: show: "Zobrazit časový rámec" end: "do" @@ -5275,17 +5510,17 @@ cs: version_status_locked: "uzamčeno" version_status_open: "otevřít" note: Poznámka - note_password_login_disabled: "Přihlášení heslem bylo zakázáno %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Varování warning_attachments_not_saved: "%{count} soubor(ů) nelze uložit." - warning_imminent_user_limit: > - Pozvali jste více uživatelů, než je podporováno vaším aktuálním předplaceným plánem. Pozvaní uživatelé nemusí být schopni se připojit do OpenProject prostředí. Prosím upgradujte váš plán nebo zablokujte stávající uživatele, aby se pozvaní a registrovaní uživatelé mohli připojit. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | Platnost aktivačního emailu vypršela. Poslali jsme vám nový %{email}. Klikněte prosím na odkaz uvnitř pro aktivaci vašeho účtu. warning_user_limit_reached: > Přidání dalších uživatelů překročí aktuální limit. Obraťte se na správce pro zvýšení limitu uživatelů, abyste zajistili, že externí uživatelé mají přístup k této instanci. - warning_user_limit_reached_admin: > - Přidáním dalších uživatelů překročíte aktuální limit. upgradujte svůj plán, abyste mohli zajistit, že externí uživatelé budou mít přístup k této instanci. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > Limit počtu uživatelů (%{current}/%{max} aktivních uživatelů) dosažen. Prosím kontaktujte sales@openproject.com a upgradujte vaši Enterprise Edition a přidejte další uživatele. warning_protocol_mismatch_html: > @@ -5345,7 +5580,7 @@ cs: reminders: label_remind_at: "Datum" note_placeholder: "Proč nastavujete toto připomenutí?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Připomínka byla úspěšně aktualizována." success_deletion_message: "Připomínka byla úspěšně odstraněna." sharing: @@ -5376,8 +5611,8 @@ cs: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Vyberte uživatele pro sdílení tohoto %{entity} s" warning_locked_user: "Uživatel %{user} je uzamčen a nemůže být s ním sdíleno" user_details: @@ -5497,6 +5732,7 @@ cs: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Nezveřejněno - Předák je neviditelný kvůli chybějícím oprávněním. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Předběžná autorizace" @@ -5588,7 +5824,7 @@ cs: one: "jeden aktivní token" few: "%{count} aktivní token" many: "%{count} aktivní token" - other: "%{count} aktivní token" + other: "%{count} aktivních tokenů" flows: authorization_code: "Tok kódu autorizace" client_credentials: "Průtok přihlašovacích údajů klienta" diff --git a/config/locales/crowdin/da.yml b/config/locales/crowdin/da.yml index 6ac7a05f16e..a5d5e9956bf 100644 --- a/config/locales/crowdin/da.yml +++ b/config/locales/crowdin/da.yml @@ -108,7 +108,7 @@ da: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ da: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -605,6 +665,14 @@ da: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -765,6 +833,11 @@ da: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -997,9 +1070,9 @@ da: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: This user is currently not a member of a project. open_profile: "Open profile" @@ -1054,6 +1127,64 @@ da: user: "Brugeren kan nu logge ind for at få adgang til %{project}. I mellemtiden kan du allerede planlægge med den pågældende bruger og tildele arbejdspakker for eksempel." placeholder_user: "Pladsholderen kan nu bruges i %{project}. I mellemtiden kan du allerede planlægge med den pågældende bruger og tildele arbejdspakker for eksempel." group: "Gruppen er nu en del af %{project}. I mellemtiden kan du allerede planlægge med denne gruppe og tildele arbejdspakker for eksempel." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Tekst" placeholder_users: @@ -1061,11 +1192,11 @@ da: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Slet pladsholderbruger %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > Alle forekomster af pladsholder brugeren (f.eks. som modtager, ansvarlig eller andre brugerværdier) vil blive omfordelt til en konto kaldet "Slettet bruger". Da dataene for hver slettet konto er omfordelt til denne konto, vil det ikke være muligt at skelne de data, brugeren har oprettet fra data fra en anden slettet konto. irreversible: "Denne handling kan ikke fortrydes" - confirmation: "Indtast pladsholderens brugernavn %{name} for at bekræfte sletningen." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1097,8 +1228,8 @@ da: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1363,7 +1494,7 @@ da: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "eller log på med din eksisterende konto" signup_with_auth_provider: "eller tilmeld dig med" - auth_source_login: Log venligst ind som %{login} for at aktivere din konto. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Log venligst ind for at aktivere din konto. actionview_instancetag_blank_option: "Vælg venligst" activemodel: @@ -1634,6 +1765,11 @@ da: consented_at: "Consented at" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1642,8 +1778,6 @@ da: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Tilgængelighedstilstand" auto_hide_popups: "Automatically hide success banners" @@ -1664,6 +1798,28 @@ da: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Navn eller e-mailadresse" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Finish date" sharing: "Deler" @@ -1718,6 +1874,8 @@ da: before: "skal være før %{date}." before_or_equal_to: "skal være senest %{date}." blank: "må ikke være tomt." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1754,8 +1912,9 @@ da: less_than_or_equal_to: "skal være mindre end eller lig med %{count}." not_available: "is not available due to a system configuration." not_deletable: "Kan ikke slettes" + not_editable: "cannot be edited because it is already in effect." not_current_user: "er ikke den aktuelle bruger." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "is not a valid date." not_a_datetime: "is not a valid date time." @@ -1786,6 +1945,10 @@ da: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "har forkert længde (burde være %{count} tegn)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1896,6 +2059,9 @@ da: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "still in use by work packages: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2101,6 +2267,10 @@ da: description: "'Adgangskodebekræftelse' skal matche input fra feltet 'Ny adgangskode'." status: invalid_on_create: "is not a valid status for new users." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Vælg venligst mindst én bruger eller gruppe." role_blank: "need to be assigned." @@ -2367,8 +2537,8 @@ da: Aktivering af sikkerhedskopier vil tillade enhver bruger med de nødvendige tilladelser og denne sikkerhedskopi token til at downloade en sikkerhedskopi, der indeholder alle data fra denne OpenProject installation. Dette omfatter data fra alle andre brugere. info: > Du bliver nødt til at generere en backup token for at kunne oprette en backup. Hver gang du ønsker at anmode om en sikkerhedskopi, bliver du nødt til at give denne token. Du kan slette sikkerhedskopi token for at deaktivere sikkerhedskopier for denne bruger. - verification: > - Indtast %{word} for at bekræfte, at du ønsker at %{action} backup token. + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: nulstil verification_word_create: opret warning: > @@ -2807,7 +2977,7 @@ da: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2824,10 +2994,8 @@ da: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2915,8 +3083,8 @@ da: work_package_edit: "Arbejdspakke redigeret" work_package_note: "Note tilføjet arbejdspakke" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Eksportér" @@ -3167,6 +3335,7 @@ da: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3174,9 +3343,9 @@ da: links: configuration_guide: "Configuration guide" get_in_touch: "Har du spørgsmål? Kom i kontakt med os." - instructions_after_registration: "Du kan logge ind så snart din konto er blevet aktiveret ved at klikke %{signin}." - instructions_after_logout: "Du kan logge ind igen ved at klikke %{signin}." - instructions_after_error: "Du kan forsøge at logge ind igen ved at klikke %{signin}. Hvis fejlen stadig opstår, spørg da admin. efter hjælp." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3368,6 +3537,8 @@ da: label_calendar_show: "Vis kalender" label_category: "Kategori" label_completed: Completed + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "User Consent" label_wiki_menu_item: Wiki-menupunkt label_select_main_menu_item: Vælg nyt punkt i hovedmenu @@ -3534,6 +3705,7 @@ da: label_subject_or_id: "Subject or ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "ID" + label_project_identifier: "Project identifier" label_in: "i" label_in_less_than: "på mindre end" label_in_more_than: "på mere end" @@ -3667,11 +3839,13 @@ da: label_news_view_all: "Se alle nyheder" label_next: "Næste" label_next_week: "Næste uge" + label_next_year: "Next year" label_no_change_option: "(Ingen ændringer)" label_no_data: "Ingen data at vise" label_no_due_date: "ingen slutdato" label_no_start_date: "ingen startdato" label_no_parent_page: "No parent page" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Intet at vise" label_nobody: "ingen" @@ -3700,6 +3874,8 @@ da: label_overall_activity: "Samlet aktivitet" label_overview: "Overblik" label_page_title: "Page title" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "del af" label_password_lost: "Glemt din adgangskode?" label_password_rule_lowercase: "Små bogstaver" @@ -3726,6 +3902,7 @@ da: label_preview_not_available: "Preview not available" label_previous: "Foregående" label_previous_week: "Foregående uge" + label_previous_year: "Previous year" label_principal_invite_via_email: " eller invitér nye brugere via e-mail" label_principal_search: "Tilføj eksisterende brugere eller grupper" label_privacy_policy: "Data privacy and security policy" @@ -3837,6 +4014,7 @@ da: label_start_to_start: "Start til start" label_statistics: "Statistik" label_status: "Status" + label_status_plural: "Statuses" label_storage_free_space: "Resterende disklagerplads" label_storage_used_space: "Forbrugt disklagerplads" label_storage_group: "Lagringsfilsystem %{identifier}" @@ -3865,6 +4043,7 @@ da: label_title: "Titel" label_projects_menu: "Projekter" label_today: "i dag" + label_today_capitalized: "I dag" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3885,7 +4064,7 @@ da: label_user: "Bruger" label_user_and_permission: "Users and permissions" label_user_named: "User %{name}" - label_user_activity: "%{value}s aktivitet" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonymt" label_user_menu: "User menu" label_user_new: "Ny bruger" @@ -3972,6 +4151,15 @@ da: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "I går" label_zen_mode: "Zen mode" label_role_type: "Type" @@ -3980,6 +4168,22 @@ da: label_not_changeable: "(not changeable)" label_global: "Global" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Fejl ved udførelse af makroen %{macro_name}" macro_unavailable: "Makro %{macro_name} kan ikke vises." macros: @@ -4014,7 +4218,7 @@ da: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4044,7 +4248,7 @@ da: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4143,7 +4347,7 @@ da: roles: "Du har nu følgende roller:" mail_user_activation_limit_reached: subject: User activation limit reached - message: | + message_html: | A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). The user cannot activate their account since the user limit has been reached. steps: @@ -4329,6 +4533,12 @@ da: permission_manage_versions: "Administrer versioner" permission_manage_wiki: "Administrer wiki" permission_manage_wiki_menu: "Administrer wiki-menu" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Flyt arbejdspakker" permission_protect_wiki_pages: "Beskyt wiki-sider" permission_rename_wiki_pages: "Omdøb wiki-sider" @@ -4472,10 +4682,10 @@ da: info: "Sletning af repositoriet kan ikke fortrydes." info_not_managed: "Bemærk: Indholdet af dette repositorie slette IKKE, da det ikke administreres af OpenProject." managed_path_note: "Følgende mappe slettes: %{path}" - repository_verification: "Angiv projekts identifikator %{identifier} for at bekræfte sletningen af dets repositorie." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Slet %{repository_type} for projektet %{project_name}, sikker?" - subtitle_not_managed: "Fjern den lænkede %{repository_type} %{url} fra projekt %{project_name}, sikker?" - title: "Slet %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Fjern det lænkede %{repository_type}?" errors: build_failed: "Kan ikke oprette repositoriet med den valgte konfiguration. %{reason}" @@ -4525,7 +4735,7 @@ da: storage: not_available: "Disklagerpladsforbrug er ikke tilgængelig for dette repositorie." update_timeout: "Behold de seneste, nødvendige disklagerpladsoplysninger for et repositorie i N minutter.\nDa opgørelsen af påkrævet disklagerplads for et repositorie kan være bekosteligt, forøg denne værdi for at reducere følgevirkninger på ydeevnen." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4570,15 +4780,15 @@ da: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4675,7 +4885,7 @@ da: setting_work_package_properties: "Egenskaber for arbejdspakke" setting_work_package_startdate_is_adddate: "Brug dags dato som start for nye arbejdspakker" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Log bruger-login, navn og mail-adresse ved hver forespørgsel" setting_login_required: "Godkendelse påkrævet" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4756,6 +4966,12 @@ da: setting_welcome_text: "Velkomstblok-tekst" setting_welcome_title: "Velkomstblok-titel" setting_welcome_on_homescreen: "Vis velkomstblok på hjemmeskærm" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Working days" @@ -4922,10 +5138,12 @@ da: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Plain text" @@ -5047,6 +5265,10 @@ da: text_plugin_assets_writable: "Brug af plugin forudsætter at dette arkiv er skrivbart" text_powered_by: "Drevet af %{link}" text_project_identifier_info: "Kun små bogstaver (a-z), tal, - og _ er tilladt; først tegn skal være et bogstav." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Gentildel til arbejdspakke:" text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' text_repository_usernames_mapping: "Vælg eller opdatér den OpenProject-bruger, der er tilknyttet hvert brugernavn i loggen for projektarkivet.\nBrugere med det samme brugernavn eller mailadresse i OpenProject og i projektarkivet vil automatisk blive tilknyttet." @@ -5154,18 +5376,18 @@ da: version_status_locked: "Spærret" version_status_open: "åbn" note: Note - note_password_login_disabled: "Login med adgangskode er deaktiveret ved %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Advarsel warning_attachments_not_saved: "%{count} file(r) kunne ikke gemmes." - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5225,7 +5447,7 @@ da: reminders: label_remind_at: "Dato" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5256,8 +5478,8 @@ da: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5377,6 +5599,7 @@ da: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/de.yml b/config/locales/crowdin/de.yml index ac7954d9227..33099e7dddc 100644 --- a/config/locales/crowdin/de.yml +++ b/config/locales/crowdin/de.yml @@ -108,7 +108,7 @@ de: jemalloc_allocator: Jemalloc Speicher allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ de: project_creation: "Erstellung von Projekten" notification_text_default: >

Hallo,

Ein neues Projekt wurde erstellt: projectValue:name

Vielen Dank

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Standard-Übergänge" user_author: "Benutzer ist Autor" user_assignee: "Benutzer ist zugewiesen" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Anmeldung und Registrierung" announcements: @@ -604,6 +664,14 @@ de: danger_dialog: confirmation_live_message_checked: "Die Schaltfläche zum Fortfahren ist nun aktiv." confirmation_live_message_unchecked: "Die Schaltfläche zum Fortfahren ist inaktiv. Sie müssen das Kontrollkästchen ankreuzen, um fortzufahren." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "Die URL, unter der der OpenProject MCP-Server erreichbar sein wird. Erforderlich für die Einrichtung von MCP-Clients." @@ -764,6 +832,11 @@ de: description: > Das Projekt wird nur für Projektmitglieder sichtbar sein, abhängig von ihrer Rolle und den zugehörigen Berechtigungen. Unterprojekte haben ihre eigenen Einstellungen zur Sichtbarkeit und erben nicht diese Einstellung. change_identifier: Kennung ändern + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Wählen Sie Vorlagen aus, die bei der Erstellung neuer Unterelemente verwendet werden sollen. @@ -996,9 +1069,9 @@ de: groups: member_in_these_groups: "Dieser Benutzer ist Mitglied der folgenden Gruppen:" no_results_title_text: Dieser Benutzer ist derzeit kein Mitglied in einer Gruppe. - summary_with_more: Mitglied von %{names} und %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} weitere" - summary: Mitglied von %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Dieser Nutzer ist derzeit in keinem Projekt Mitglied. open_profile: "Profil öffnen" @@ -1053,6 +1126,64 @@ de: user: "Der Benutzer kann sich jetzt anmelden, um auf %{project} zuzugreifen. In der Zwischenzeit können Sie bereits mit diesem Benutzer planen und beispielsweise Arbeitspakete zuweisen." placeholder_user: "Der Platzhalter kann jetzt in %{project} verwendet werden. In der Zwischenzeit können Sie bereits mit diesem Benutzer planen und beispielsweise Arbeitspakete zuweisen." group: "Die Gruppe ist nun %{project} zugewiesen. In der Zwischenzeit können Sie bereits mit dieser Gruppe planen und ihr zum Beispiel Arbeitspakete zuweisen." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Text" placeholder_users: @@ -1060,11 +1191,11 @@ de: Sie sind nicht berechtigt, diesen Platzhalter zu löschen. Sie haben nicht das Recht, Mitglieder für alle Projekte zu verwalten, in denen der Platzhalter Mitglied ist. delete_tooltip: "Platzhalter löschen" deletion_info: - heading: "Platzhalter-Benutzer %{name} löschen" + heading_html: "Delete placeholder user %{name}" data_consequences: > Alle Vorkommnisse des Platzhalter-Benutzers (z.B. als zugewiesene Person, Verantwortlicher oder andere Benutzerwerte) werden einem Konto mit dem Namen "Gelöschter Benutzer" zugewiesen. Da die Daten jedes gelöschten Kontos diesem Konto zugewiesen werden, wird es nicht möglich sein, die Daten dieses Benutzers von den Daten eines anderen gelöschten Kontos zu unterscheiden. irreversible: "Dieser Vorgang kann nicht rückgängig gemacht werden" - confirmation: "Geben Sie den Namen des Platzhalter-Benutzers %{name} ein, um die Löschung zu bestätigen." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1093,9 +1224,10 @@ de: Neue Arbeitspakete werden standardmäßig auf diesen Typ gesetzt. Er kann nicht schreibgeschützt sein. status_excluded_from_totals_text: |- Aktivieren Sie diese Option, um Arbeitspakete mit diesem Status aus den Summen von Aufwand, Verbleibender Aufwand und % Abgeschlossen in Hierarchien auszuschließen. - status_percent_complete_text: |- - Im statusbasierten Fortschrittsberechnungsmodus wird der % abgeschlossen Wert eines Arbeitspakets automatisch auf diesen Wert gesetzt, wenn dieser Status ausgewählt wird. - Im aufwandsbezogenem Modus hat dieser Wert keine Relevanz. + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work + package is automatically set to this value when this status is selected. + Ignored in work-based mode. status_readonly_html: | Wählen Sie diese Option um Bearbeitung von Arbeitspaketen in diesem Status zu sperren. Außer dem Status selbst können dann keine Attribute verändert werden. @@ -1357,7 +1489,7 @@ de: Die Benutzerregistrierung ist für den Single Sign-On Provider '%{name}' eingeschränkt. Bitten Sie einen Administrator, das Konto für Sie zu aktivieren oder die Konfiguration der Selbstregistrierung für diesen Anbieter zu ändern. login_with_auth_provider: "oder melden Sie sich mit einem bestehenden Konto an" signup_with_auth_provider: "oder authentifizieren Sie sich mit" - auth_source_login: Bitte melden Sie sich als %{login} an um Ihr Konto zu aktivieren. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Bitte loggen Sie sich ein um Ihr Konto zu aktivieren. actionview_instancetag_blank_option: "Bitte auswählen" activemodel: @@ -1628,6 +1760,11 @@ de: consented_at: "Eingewilligt am" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Erscheinungsbild und Bedienverhalten" header_alerts: "Warnmeldungen" @@ -1636,8 +1773,6 @@ de: button_update_user_information: "Profil aktualisieren" comments_sorting: "Arbeits­paket­aktivität anzeigen, sortiert nach" disable_keyboard_shortcuts: "Tastaturkürzel deaktivieren" - disable_keyboard_shortcuts_caption_html: |- - Sie können die standardmäßigen Tastenkombinationen deaktivieren, wenn Sie einen Screenreader verwenden oder unbeabsichtigtes Auslösen einer Aktion durch eine Tastenkombination vermeiden möchten. dismissed_enterprise_banners: "Ausgeblendete Unternehmensbanner" impaired: "Für die barrierefreie Nutzung optimierte Oberfläche" auto_hide_popups: "Erfolgsbannern automatisch ausblenden" @@ -1658,6 +1793,28 @@ de: users/invitation/form_model: principal_type: "Art der Einladung" id_or_email: "Name oder E-Mail-Adresse" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Endtermin" sharing: "Gemeinsame Verwendung" @@ -1712,6 +1869,8 @@ de: before: "muss vor %{date} sein." before_or_equal_to: "muss vor oder gleich %{date} sein." blank: "muss ausgefüllt werden." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "muss die Eigenschaft '%{property}' gesetzt haben." cannot_delete_mapping: "ist erforderlich. Kann nicht gelöscht werden." is_for_all_cannot_modify: "gilt für alle Projekte und kann daher nicht geändert werden." @@ -1748,8 +1907,9 @@ de: less_than_or_equal_to: "muss kleiner oder gleich %{count} sein." not_available: "ist aufgrund einer Systemkonfiguration nicht verfügbar." not_deletable: "kann nicht entfernt werden." + not_editable: "cannot be edited because it is already in effect." not_current_user: "ist nicht der aktuelle Benutzer." - only_one_active_sprint_allowed: "pro Projekt ist nur ein aktiver Sprint erlaubt." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "nicht gefunden." not_a_date: "ist kein gültiges Datum." not_a_datetime: "ist kein gültiges Datum." @@ -1780,6 +1940,10 @@ de: stellt keinen "Secure Context" zur Verfügung: Benutzen Sie entweder HTTPS oder eine Loopback-Adresse, wie z.B. localhost. wrong_length: "hat die falsche Länge (muss genau %{count} Zeichen haben)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1890,6 +2054,9 @@ de: project_initiation_request_disabled: "Die Anfrage zur Projektinitiierung ist deaktiviert. Sie muss aktiviert sein, um das Artefakt-Arbeitspaket zu erstellen." types: in_use_by_work_packages: "wird noch genutzt von folgenden Arbeitspaketen: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "Das Modul \"%{dependency}\" muss ebenfalls aktiviert sein, da das Modul \"%{module}\" dieses benötigt." format: "%{message}" @@ -2095,6 +2262,10 @@ de: description: "\"Kennwortbestätigung\" sollte mit \"Neues Kennwort\" übereinstimmen." status: invalid_on_create: "ist kein gültiger Status für neue Benutzer." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Bitte wählen Sie mindestens einen Benutzer oder eine Gruppe." role_blank: "muss zugeordnet werden." @@ -2361,8 +2532,8 @@ de: Das Aktivieren von Backups erlaubt jedem Benutzer mit den erforderlichen Berechtigungen und diesem Backup-Token ein Backup herunterzuladen, das alle Daten dieser OpenProject-Installation enthält. Dies schließt die Daten aller anderen Benutzer ein. info: > Sie müssen einen Backup-Token generieren, um ein Backup erstellen zu können. Jedes Mal, wenn Sie ein Backup anfordern möchten, müssen Sie diesen Token zur Verfügung stellen. Sie können den Backup-Token löschen, um Backups für diesen Benutzer zu deaktivieren. - verification: > - Geben Sie %{word} ein, um zu bestätigen, dass Sie den Backup-Token %{action} möchten. + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: zurücksetzen verification_word_create: erstellen warning: > @@ -2801,7 +2972,7 @@ de: title: one: "Ein Tag des %{trial_plan} Test-Token verbleibend" other: "%{count} verbleibende Tage des %{trial_plan} Test-Tokens" - description: "Sie haben Zugriff auf alle Funktionen von %{trial_plan}." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "Sie haben einen Test-Token angefordert, aber diese Anfrage ist nicht mehr abrufbar. Bitte versuchen Sie es erneut." wait_for_confirmation: "Wir haben Ihnen eine E-Mail zur Bestätigung geschickt, um den Token der Testversion abzurufen." @@ -2818,10 +2989,8 @@ de: confirmation_subline: > Bitte überprüfen Sie Ihren E-Mail-Posteingang und folgen Sie den Schritten, um Ihre 14-tägige kostenlose Testversion zu starten. domain_caption: Das Token wird für den aktuell konfigurierten Hostnamen gültig sein. - receive_newsletter_html: > - Ich möchte den OpenProject Newsletter erhalten. - consent_html: > - Ich stimme den und den Datenschutzrichtlinien zu. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Deaktiviert." @@ -2909,8 +3078,8 @@ de: work_package_edit: "Arbeitspaket bearbeitet" work_package_note: "Arbeitspaket kommentiert" title: - project: "Projekt: %{name}" - subproject: "Unterprojekt: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Exportieren" @@ -3161,6 +3330,7 @@ de: Planungsmodus wird beim Versionsupdate automatisch angepasst. totals_removed_from_childless_work_packages: >- Arbeits- und Fortschrittssummen werden bei der Versionsaktualisierung automatisch für nicht übergeordnete Arbeitspakete entfernt. Diese Änderung entstand durch ein Upgrade und kann ignoriert werden. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Unteraufgaben ohne Arbeit werden ignoriert. total_percent_complete_mode_changed_to_simple_average: >- @@ -3168,9 +3338,9 @@ de: links: configuration_guide: "Konfigurationsanleitung" get_in_touch: "Sie haben Fragen? Nehmen Sie Kontakt mit uns auf." - instructions_after_registration: "Sie können sich anmelden, sobald Ihr Konto aktiviert wurde, indem Sie auf %{signin} klicken." - instructions_after_logout: "Sie können wieder anmelden indem Sie auf %{signin} klicken." - instructions_after_error: "Sie können versuchen sich erneut anzumelden indem Sie auf %{signin} klicken. Wenn der Fehler weiterhin auftritt, fragen Sie Ihren Administrator um Hilfe." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Künstliche Intelligenz (AI)" @@ -3362,6 +3532,8 @@ de: label_calendar_show: "Kalender anzeigen" label_category: "Kategorie" label_completed: Abgeschlossen + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Nutzer-Einwilligung" label_wiki_menu_item: Wiki Menüpunkt label_select_main_menu_item: Neuen Hauptmenüpunkt auwählen @@ -3528,6 +3700,7 @@ de: label_subject_or_id: "Titel oder ID" label_calendar_subscriptions: "Kalenderabonnements" label_identifier: "Kennung" + label_project_identifier: "Project identifier" label_in: "an" label_in_less_than: "in weniger als" label_in_more_than: "in mehr als" @@ -3661,11 +3834,13 @@ de: label_news_view_all: "Alle Neuigkeiten anzeigen" label_next: "Weiter" label_next_week: "Woche vor" + label_next_year: "Next year" label_no_change_option: "(Keine Änderung)" label_no_data: "Es sind keine Daten vorhanden" label_no_due_date: "kein Endtermin" label_no_start_date: "kein Startdatum" label_no_parent_page: "Keine übergeordnete Seite" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Benachrichtigungen" label_nothing_display: "Nichts anzuzeigen" label_nobody: "Niemand" @@ -3694,6 +3869,8 @@ de: label_overall_activity: "Aktivität aller Projekte anzeigen" label_overview: "Übersicht" label_page_title: "Seitentitel" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "enthalten in" label_password_lost: "Kennwort vergessen?" label_password_rule_lowercase: "Kleinbuchstaben" @@ -3720,6 +3897,7 @@ de: label_preview_not_available: "Vorschau nicht verfügbar" label_previous: "Zurück" label_previous_week: "Woche zurück" + label_previous_year: "Previous year" label_principal_invite_via_email: " oder Nutzer per E-Mail einladen" label_principal_search: "Vorhandene Benutzer / Gruppen hinzufügen" label_privacy_policy: "Datenschutz- und Sicherheitsrichtlinien" @@ -3831,6 +4009,7 @@ de: label_start_to_start: "Anfang bis Anfang" label_statistics: "Statistiken" label_status: "Status" + label_status_plural: "Statuses" label_storage_free_space: "Verbleibender Speicherplatz" label_storage_used_space: "Verwendeter Speicherplatz" label_storage_group: "Speicher-Dateisystem %{identifier}" @@ -3859,6 +4038,7 @@ de: label_title: "Titel" label_projects_menu: "Projekte" label_today: "heute" + label_today_capitalized: "Heute" label_token_version: "Token-Version" label_today_as_start_date: "Heute als Startdatum wählen." label_today_as_due_date: "Heute als Enddatum wählen." @@ -3879,7 +4059,7 @@ de: label_user: "Benutzer" label_user_and_permission: "Benutzer und Berechtigungen" label_user_named: "Benutzer %{name}" - label_user_activity: "Aktivität von %{value}" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonym" label_user_menu: "Benutzermenü" label_user_new: "Neuer Benutzer" @@ -3966,6 +4146,15 @@ de: one: "1 Datei" other: "%{count} Dateien" zero: "keine Dateien" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "gestern" label_zen_mode: "Zen-Modus" label_role_type: "Typ" @@ -3974,6 +4163,22 @@ de: label_not_changeable: "(nicht veränderbar)" label_global: "Global" label_seeded_from_env_warning: Dieser Datensatz wurde durch eine Umgebungsvariable Konfiguration erstellt. Er kann nicht über die Benutzeroberfläche bearbeitet werden. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Fehler beim Ausführen des Makros %{macro_name}" macro_unavailable: "Das Makro %{macro_name} kann nicht angezeigt werden." macros: @@ -4008,7 +4213,7 @@ de: center: "Zur Benachrichtigungszentrale" see_in_center: "Kommentar in Benachrichtigungszentrale öffnen" settings: "E-Mail-Einstellungen ändern" - salutation: "Hallo %{user}" + salutation: "Hello %{user}," salutation_full_name: "Vollständiger Name" work_packages: created_at: "Erstellt %{timestamp} von %{user} " @@ -4038,7 +4243,7 @@ de: note: "Anmerkung: „%{note}“" sharing: work_packages: - allowed_actions: "Sie haben auf diesem Arbeitspakte folgende Berechtigungen: %{allowed_actions}. Dies kann sich je nach Ihrer Projektrolle und Berechtigungen ändern." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "Um auf dieses Arbeitspaket zuzugreifen, müssen Sie ein Konto für %{instance} erstellen und aktivieren." open_work_package: "Arbeitspaket öffnen" subject: "Arbeitspaket #%{id} wurde mit Ihnen geteilt" @@ -4137,9 +4342,9 @@ de: roles: "Sie haben jetzt folgende Rollen:" mail_user_activation_limit_reached: subject: Nutzer aktivierungs Limit erreicht - message: | - Ein neuer Nutzer (%{email}) versuchte einen Account auf dem von ihnen Verwalteten OpenProject System (%{host}) zu erstellen. - Der Nutzer kann seinen Account aufgrund des Nutzer Limits nicht aktivieren. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "Folgendes kannst du tuen um dem Nutzer das einloggen zu ermöglichen: " a: "Upgraden Sie Ihren Zahlungsplan ([here](upgrade_url))" #here turned into a link @@ -4323,6 +4528,12 @@ de: permission_manage_versions: "Versionen verwalten" permission_manage_wiki: "Wiki verwalten" permission_manage_wiki_menu: "Wiki-Menü verwalten" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Arbeitspakete verschieben" permission_protect_wiki_pages: "Wiki-Seiten schützen" permission_rename_wiki_pages: "Wiki-Seiten umbenennen" @@ -4468,10 +4679,10 @@ de: info: "Die Löschung des Projektarchivs kann nicht rückgängig gemacht werden." info_not_managed: "Hinweis: Der Inhalt des Projektarchivs wird nicht gelöscht, da es sich um ein externes Projektarchiv handelt." managed_path_note: "Das folgende Verzeichnis wird gelöscht werden: %{path}" - repository_verification: "Geben Sie die Projektkennung %{identifier} ein, um die Löschung des Projektarchivs zu bestätigen." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Wollen Sie wirklich das %{repository_type} des Projekts %{project_name} löschen?" - subtitle_not_managed: "Wollen Sie wirklich die verknüpfte %{repository_type}-%{url} aus dem Projekt %{project_name} entfernen?" - title: "%{repository_type} löschen" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Verknüpftes %{repository_type} löschen?" errors: build_failed: "Projektarchiv mit der gewählten Konfiguration konnte nicht erstellt werden. %{reason}" @@ -4521,7 +4732,7 @@ de: storage: not_available: "Genutzter Festplattenspeicher ist nicht für dieses Projektarchiv verfügbar." update_timeout: "Speichere die Informationen bzgl. des genutzten Festplattenspeichers eines Projektarchivs für N Minuten.\nErhöhen Sie diesen Wert zur Verbesserung der Performance, da die Erfassung des genutzten Festplattenspeichers Ressourcen-intensiv ist." - oauth_application_details: "Der Client Geheimcode wird nach dem Schließen dieses Fensters nicht mehr zugänglich sein. Bitte kopieren Sie diese Werte in die Nextcloud OpenProject Integrationseinstellungen:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Zu den Einstellungen gehen" setup_documentation_details: "Wenn Sie Hilfe bei der Konfiguration eines neuen Datei-Speichers benötigen, konsultieren Sie bitte die Dokumentation: " setup_documentation_details_link_text: "Dateispeicher einrichten" @@ -4566,15 +4777,15 @@ de: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "CORS aktivieren" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) erlaubte Origins" - setting_apiv3_cors_origins_text_html: > - Wenn CORS aktiviert ist, sind dies die Origins, die auf die OpenProject API zugreifen dürfen.
Bitte überprüfen Sie die Dokumentation über den Origin Header, wie die Werte anzugeben sind. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Schreibzugriff auf schreibgeschützte Attribute" setting_apiv3_write_readonly_attributes_instructions: > Wenn diese Option aktiviert ist, erlaubt die API Administratoren, bei der Erstellung statische schreibgeschützte Attribute wie createdAt und author zu schreiben. setting_apiv3_write_readonly_attributes_warning: > Diese Einstellung ist z.B. für den Import von Daten nützlich, ermöglicht es aber auch Administratoren, sich bei der Erstellung von Artikeln als andere Benutzer auszugeben. Alle Erstellungsanfragen werden jedoch mit dem wahren Autor protokolliert. - setting_apiv3_write_readonly_attributes_additional: > - Weitere Informationen zu Attributen und unterstützten Ressourcen finden Sie unter %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximale API-Seitengröße" setting_apiv3_max_page_size_instructions: > Legen Sie die maximale Anzahl von Ressourcen fest, mit der die API antworten wird. API-Anfragen werden nie mehr Ressourcen auf einer einzigen Seite zurückgeben. @@ -4671,7 +4882,7 @@ de: setting_work_package_properties: "Arbeitspaket-Eigenschaften" setting_work_package_startdate_is_adddate: "Neue Arbeitspakete haben \"Heute\" als Anfangsdatum" setting_work_packages_projects_export_limit: "Arbeitspakete / Exportlimit für Projekte" - setting_journal_aggregation_time_minutes: "Benutzeraktionen aggregiert innerhalb" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Logge Benutzer Login, Name und Mailadresse für alle Anfragen" setting_login_required: "Authentifizierung erforderlich" setting_login_required_caption: "Wenn aktiviert, müssen alle Anfragen an die Anwendung authentifiziert werden." @@ -4752,6 +4963,12 @@ de: setting_welcome_text: "Text für Willkommens-Block" setting_welcome_title: "Titel des Willkommens-Block" setting_welcome_on_homescreen: "Willkommens-Block auf Startseite anzeigen" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Standard Hervorhebung" setting_work_package_list_default_highlighted_attributes: "Voreinstellung Inline Hervorherbung" setting_working_days: "Arbeitstage" @@ -4920,10 +5137,12 @@ de: section_work_week: "Arbeitswoche" section_holidays_and_closures: "Feiertage und Schließungen" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "Sie haben nicht die notwendigen Rechte, um diese Seite zu sehen." activities: enable_internal_comments: "Interne Kommentare aktivieren" - helper_text: "Interne Kommentare erlauben es einem internen Team privat zu kommunizieren. Diese sind nur für bestimmte Projektrollen sichtbar und werden nie öffentlich sichtbar sein. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Reiner Text" @@ -5045,6 +5264,10 @@ de: text_plugin_assets_writable: "Verzeichnis für Plugin-Assets beschreibbar" text_powered_by: "Powered by %{link}" text_project_identifier_info: "Kleinbuchstaben (a-z), Ziffern, Binde- und Unterstriche erlaubt. Muss mit einem Kleinbuchstaben beginnen." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Zuweisung zu Arbeitspaket:" text_regexp_multiline: 'Der reguläre Ausdruck wird in einem mehrzeiligen Modus angewandt, z.B. ^---\s+' text_repository_usernames_mapping: "Bitte legen Sie die Zuordnung der OpenProject-Benutzer zu den Benutzernamen der Commit-Log-Meldungen des Projektarchivs fest.\nBenutzer mit identischen OpenProject- und Projektarchiv-Benutzernamen oder -E-Mail-Adressen werden automatisch zugeordnet." @@ -5152,17 +5375,17 @@ de: version_status_locked: "gesperrt" version_status_open: "offen" note: Hinweis - note_password_login_disabled: "Der Passwort-Login wurde per %{configuration} deaktiviert." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Warnung warning_attachments_not_saved: "%{count} Datei(en) konnten nicht gespeichert werden." - warning_imminent_user_limit: > - Sie haben mehr Nutzer eingeladen, als Ihr momentaner Plan zulässt. Eingeladene Nutzer können Ihrem OpenProject möglicherweise nicht beitreten. Bitte upgraden Sie Ihren Tarif oder blockieren Sie vorhandene Mitglieder, um den eingeladenen und registrierten Nutzern die Möglichkeit zu bieten, Ihrem Projekt beizutreten. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | E-Mail mit dem Aktivierungslink ist abgelaufen. Wir haben Ihnen ein neues zu %{email} geschickt. Bitte aktivieren Sie Ihr Konto über den Link in dieser E-Mail. warning_user_limit_reached: > Das Hinzufügen zusätzlicher Benutzer überschreitet das aktuelle Benutzerlimit. Bitte kontaktieren Sie einen Administrator, um sicherzustellen, dass externe Benutzer auf diese Instanz zugreifen können. - warning_user_limit_reached_admin: > - Das Hinzufügen zusätzlicher Benutzer überschreitet das aktuelle Benutzerlimit. Bitte aktualisieren Sie Ihr Abonnement um sicherzustellen, dass externe Benutzer auf diese Instanz zugreifen können. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > Du hast dein Nutzerlimit erreicht (%{current}/%{max} active users). Bitte kontaktiere sales@openproject.com um deinen Enterprise edition Plan upzugraden und weitere Nutzer hinzuzufügen. warning_protocol_mismatch_html: > @@ -5222,7 +5445,7 @@ de: reminders: label_remind_at: "Datum" note_placeholder: "Warum richten Sie diese Erinnerung ein?" - create_success_message: "Erinnerung erfolgreich gesetzt. Sie erhalten eine Benachrichtigung für dieses Arbeitspaket %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Erinnerung aktualisiert erfolgreich." success_deletion_message: "Erinnerung erfolgreich gelöscht." sharing: @@ -5253,8 +5476,8 @@ de: text_user_limit_reached_admins: 'Das Hinzufügen zusätzlicher Benutzer überschreitet das aktuelle Benutzerlimit. Bitte aktualisieren Sie Ihr Abonnement um sicherzustellen, dass externe Benutzer auf diese Instanz zugreifen können.' warning_user_limit_reached: > Das Hinzufügen zusätzlicher Benutzer überschreitet das aktuelle Benutzerlimit. Bitte kontaktieren Sie einen Administrator, um sicherzustellen, dass externe Benutzer auf dieses %{entity} zugreifen können. - warning_user_limit_reached_admin: > - Das Hinzufügen zusätzlicher Benutzer überschreitet das aktuelle Benutzerlimit. Bitte aktualisieren Sie Ihr Abonnement um sicherzustellen, dass externe Benutzer auf diese %{entity} zugreifen können. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Bitte wählen Sie Benutzer aus, mit denen diese %{entity} geteilt werden soll" warning_locked_user: "Der Benutzer %{user} ist gesperrt und mit ihm kann nicht geteilt werden" user_details: @@ -5374,6 +5597,7 @@ de: project: Unbekannt - Das Projekt ist wegen fehlender Berechtigungen nicht sichtbar. ancestor: Unbekannt - Das übergeordnete Element ist wegen fehlender Berechtigungen nicht sichtbar. definingProject: Unbekannt - Das Projekt ist wegen fehlender Berechtigungen nicht sichtbar. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Vorab-Autorisierung" diff --git a/config/locales/crowdin/el.yml b/config/locales/crowdin/el.yml index 9ee312c8da4..1fbd8fd8e03 100644 --- a/config/locales/crowdin/el.yml +++ b/config/locales/crowdin/el.yml @@ -108,7 +108,7 @@ el: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ el: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -603,6 +663,14 @@ el: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -763,6 +831,11 @@ el: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Αλλαγή αναγνωριστικού + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -995,9 +1068,9 @@ el: groups: member_in_these_groups: "Αυτός ο χρήστης είναι μέλος των παρακάτω ομάδων:" no_results_title_text: Αυτός ο χρήστης, προς το παρόν, δεν είναι μέλος κάποιας ομάδας. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Αυτός ο χρήστης δεν είναι προς το παρόν μέλος κάποιου έργου. open_profile: "Open profile" @@ -1052,6 +1125,64 @@ el: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "Η ομάδα είναι τώρα μέρος του %{project}. Εν τω μεταξύ, μπορείτε να προγραμματίσετε ήδη με αυτή την ομάδα και να αντιστοιχίσετε πακέτα εργασίας." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Κείμενο" placeholder_users: @@ -1059,11 +1190,11 @@ el: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Διαγραφή του placeholder χρήστη %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "Αυτή η ενέργεια είναι μη αναστρέψιμη" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1095,8 +1226,8 @@ el: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1361,7 +1492,7 @@ el: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "ή συνδεθείτε με τον υπάρχοντα λογαριασμό σας" signup_with_auth_provider: "ή εγγραφείτε χρησιμοποιώντας" - auth_source_login: Παρακαλούμε συνδεθείτε ως %{login} για να ενεργοποιήσετε τον λογαριασμό σας. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Παρακαλούμε συνδεθείτε για να ενεργοποιήσετε τον λογαριασμό σας. actionview_instancetag_blank_option: "Παρακαλώ επιλέξτε" activemodel: @@ -1632,6 +1763,11 @@ el: consented_at: "Συγκατατίθεμαι σε" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1640,8 +1776,6 @@ el: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Λειτουργία προσβασιμότητας" auto_hide_popups: "Automatically hide success banners" @@ -1662,6 +1796,28 @@ el: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Όνομα ή διεύθυνση email" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Ημερομηνία λήξης" sharing: "Κοινή Χρήση" @@ -1716,6 +1872,8 @@ el: before: "πρέπει να είναι πριν από %{date}." before_or_equal_to: "πρέπει να είναι πριν ή ίσο με %{date}." blank: "δεν πρέπει να είναι κενό." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1752,8 +1910,9 @@ el: less_than_or_equal_to: "πρέπει να είναι μικρότερο ή ίσο με %{count}." not_available: "is not available due to a system configuration." not_deletable: "δεν μπορεί να διαγραφεί." + not_editable: "cannot be edited because it is already in effect." not_current_user: "δεν είναι ο τρέχων χρήστης." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "δεν είναι έγκυρη ημερομηνία." not_a_datetime: "δεν είναι έγκυρη ημερομηνία και ώρα." @@ -1784,6 +1943,10 @@ el: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "έχει λάθος μέγεθος (πρέπει να είναι %{count} χαρακτήρες)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1894,6 +2057,9 @@ el: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "χρησιμοποιείται ακόμη από τα πακέτα εργασίας: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2099,6 +2265,10 @@ el: description: "Ο 'Κωδικός Επιβεβαίωσης' θα πρέπει να ταιριάζει με την είσοδο του πεδίου 'Νέος Κωδικός'." status: invalid_on_create: "δεν είναι έγκυρη κατάσταση για νέους χρήστες." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Παρακαλούμε επιλέξτε τουλάχιστον ένα χρήστη ή ομάδα." role_blank: "πρέπει να ανατεθεί." @@ -2365,7 +2535,7 @@ el: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: επαναφορά verification_word_create: δημιουργία @@ -2805,7 +2975,7 @@ el: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2822,10 +2992,8 @@ el: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2913,8 +3081,8 @@ el: work_package_edit: "Το πακέτο εργασίας επεξεργάστηκε" work_package_note: "Προστέθηκε η σημείωση πακέτου εργασίας" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Εξαγωγή" @@ -3165,6 +3333,7 @@ el: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3172,9 +3341,9 @@ el: links: configuration_guide: "Οδηγός διαμόρφωσης" get_in_touch: "Έχετε απορίες; Επικοινωνήστε μαζί μας." - instructions_after_registration: "Μπορείτε να συνδεθείτε μόλις ο λογαριασμός σας ενεργοποιηθεί κάνοντας κλικ στο %{signin}." - instructions_after_logout: "Μπορείτε να συνδεθείτε ξανά κάνοντας κλικ στο %{signin}." - instructions_after_error: "Μπορείτε να δοκιμάσετε να συνδεθείτε ξανά κάνοντας κλικ στο %{signin}. Αν το σφάλμα παραμένει, ρωτήστε τον διαχειριστή σας για βοήθεια." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3366,6 +3535,8 @@ el: label_calendar_show: "Εμφάνιση Ημερολογίου" label_category: "Κατηγορία" label_completed: Ολοκληρωμένο + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Συναίνεση χρήστη" label_wiki_menu_item: Αντικείμενο μενού Wiki label_select_main_menu_item: Επιλέξτε νέο αντικείμενο κύριου μενού @@ -3532,6 +3703,7 @@ el: label_subject_or_id: "Θέμα ή ταυτότητα" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Αναγνωριστικό" + label_project_identifier: "Project identifier" label_in: "σε" label_in_less_than: "σε λιγότερο από" label_in_more_than: "σε περισσότερο από" @@ -3665,11 +3837,13 @@ el: label_news_view_all: "Προβολή όλων των νέων" label_next: "Επόμενο" label_next_week: "Επόμενη εβδομάδα" + label_next_year: "Next year" label_no_change_option: "(Δεν υπάρχουν αλλαγές)" label_no_data: "Δεν υπάρχουν δεδομένα για εμφάνιση" label_no_due_date: "καμία ημερομηνία λήξης" label_no_start_date: "δεν υπάρχει ημερομηνία έναρξης" label_no_parent_page: "Δεν υπάρχει σελίδα γονέα" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Δεν υπάρχει κάτι για εμφάνιση" label_nobody: "κανένας" @@ -3698,6 +3872,8 @@ el: label_overall_activity: "Συνολική δραστηριότητα" label_overview: "Επισκόπηση" label_page_title: "Τίτλος σελίδας" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "μέρος του" label_password_lost: "Ξεχάσατε τον κωδικό σας;" label_password_rule_lowercase: "Πεζά" @@ -3724,6 +3900,7 @@ el: label_preview_not_available: "Preview not available" label_previous: "Προηγούμενο" label_previous_week: "Προηγούμενη εβδομάδα" + label_previous_year: "Previous year" label_principal_invite_via_email: " ή προσκαλέστε καινούργιους χρήστες μέσω email" label_principal_search: "Προσθήκη υπαρχόντων χρηστών ή ομάδων" label_privacy_policy: "Ιδιωτικότητα δεδομένων και πολιτική ασφαλείας" @@ -3835,6 +4012,7 @@ el: label_start_to_start: "από την αρχή μέχρι την αρχή" label_statistics: "Στατιστικά" label_status: "Κατάσταση" + label_status_plural: "Statuses" label_storage_free_space: "Υπολειπόμενος χώρος στο δίσκο" label_storage_used_space: "Χώρος στο δίσκο που χρησιμοποιείται" label_storage_group: "Σύστημα αρχείων αποθήκευσης %{identifier}" @@ -3863,6 +4041,7 @@ el: label_title: "Τίτλος" label_projects_menu: "Έργα" label_today: "σήμερα" + label_today_capitalized: "Σήμερα " label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3883,7 +4062,7 @@ el: label_user: "Χρήστης" label_user_and_permission: "Users and permissions" label_user_named: "Χρήστης %{name}" - label_user_activity: "δραστηριότητα του %{value}" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Ανώνυμος" label_user_menu: "User menu" label_user_new: "Νέος χρήστης" @@ -3970,6 +4149,15 @@ el: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "χθες" label_zen_mode: "Zen mode" label_role_type: "Τύπος" @@ -3978,6 +4166,22 @@ el: label_not_changeable: "(μη μεταβλητό)" label_global: "Καθολικό" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Σφάλμα στην εκτέλεση της μακροεντολής %{macro_name}" macro_unavailable: "Η μακροεντολή %{macro_name} δεν μπορεί να εμφανιστεί." macros: @@ -4012,7 +4216,7 @@ el: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4042,7 +4246,7 @@ el: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4141,8 +4345,9 @@ el: roles: "Πλέον έχετε τους ακόλουθους ρόλους:" mail_user_activation_limit_reached: subject: Επετεύχθη το όριο ενεργοποίησης χρηστών - message: | - Ένας νέο χρήστης (%{email}) προσπάθησε να δημιουργήσει λογαριασμό σε ένα περιβάλλον OpenProject που διαχειρίζεστε (%{host}). Ο χρήστης δεν μπόρεσε να ενεργοποιήσει τον λογαριασμό του καθώς το όριο των χρηστών έχει επιτευχθεί. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "Για να επιτρέψετε στο χρήστη να συνδεθεί μπορείτε είτε να: " a: "Αναβαθμίστε το σχέδιο πληρωμής σας ([εδώ](upgrade_url))" #here turned into a link @@ -4326,6 +4531,12 @@ el: permission_manage_versions: "Διαχείριση εκδόσεων" permission_manage_wiki: "Διαχείριση wiki" permission_manage_wiki_menu: "Διαχείριση μενού wiki" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Μετακίνηση πακέτων εργασίας" permission_protect_wiki_pages: "Προστατέψτε τις σελίδες wiki" permission_rename_wiki_pages: "Μετονομασία σελίδων wiki" @@ -4471,10 +4682,10 @@ el: info: "Η διαγραφή του αποθετηρίου είναι μια μη αναστρέψιμη ενέργεια." info_not_managed: "Σημείωση: Αυτό ΔΕΝ θα διαγράψει τα περιεχόμενα αυτού του αποθετηρίου, καθώς δεν το διαχειρίζεται το OpenProject." managed_path_note: "Ο ακόλουθος κατάλογος θα διαγραφεί: %{path}" - repository_verification: "Εισάγετε το αναγνωριστικό του έργου %{identifier} για να επιβεβαιώσετε τη διαγραφή του αποθετηρίου του." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Είστε βέβαιοι ότι θέλετε να διαγράψετε το %{repository_type} από το έργο %{project_name};" - subtitle_not_managed: "Είστε βέβαιοι ότι θέλετε να αφαιρέσετε το συνδεδεμένο %{repository_type} %{url} από το έργο %{project_name};" - title: "Διαγραφή του %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Αφαίρεση του συνδεδεμένου %{repository_type};" errors: build_failed: "Δεν ήταν δυνατή η δημιουργία του αποθετηρίου με την επιλεγμένη διαμόρφωση. %{reason}" @@ -4524,7 +4735,7 @@ el: storage: not_available: "Η κατανάλωση χώρου από τον δίσκο δεν είναι δυνατή σε αυτό το αποθετήριο." update_timeout: "Διατήρηση των τελευταίων πληροφοριών απαιτούμενου χώρου δίσκου για ένα αποθετήριο για Ν λεπτά.\nΚαθώς η μέτρηση του απαιτούμενου χώρου δίσκου για ένα αποθετήριο μπορεί να κοστίζει, αυξήστε αυτή την τιμή για να μειώσετε την επίπτωση στην επίδοση." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4569,15 +4780,15 @@ el: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Ενεργοποίηση CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) επιτρεπόμενες προελεύσεις" - setting_apiv3_cors_origins_text_html: > - Εάν είναι ενεργοποιημένο το CORS, αυτές είναι οι πηγές που επιτρέπεται να έχουν πρόσβαση στο OpenProject API.
Παρακαλώ ελέγξτε το Τεκμηρίωση στην κεφαλίδα προέλευσης για τον τρόπο καθορισμού των αναμενόμενων τιμών. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4674,7 +4885,7 @@ el: setting_work_package_properties: "Ιδιότητες πακέτου εργασίας" setting_work_package_startdate_is_adddate: "Χρήση σημερινής ημερομηνίας ως ημερομηνία έναρξης για νέα πακέτα εργασίας" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Καταγραφή των στοιχείων εισόδου, του ονόματος και της διεύθυνσης email του χρήστη για όλα τα αιτήματα" setting_login_required: "Απαιτείται ταυτοποίηση" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4755,6 +4966,12 @@ el: setting_welcome_text: "Μπλοκ κειμένου καλωσορίσματος" setting_welcome_title: "Μπλοκ τίτλου καλωσορίσματος" setting_welcome_on_homescreen: "Εμφάνιση μπλοκ καλωσορίσματος στην αρχική σελίδα" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Προεπιλεγμένη λειτουργία επισήμανσης" setting_work_package_list_default_highlighted_attributes: "Προεπιλεγμένα inline χαρακτηριστικά με επισήμανση" setting_working_days: "Working days" @@ -4921,10 +5138,12 @@ el: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Απλό κείμενο" @@ -5046,6 +5265,10 @@ el: text_plugin_assets_writable: "Εγγράψιμος κατάλογος plugin assets" text_powered_by: "Υποστηρίζεται από %{link}" text_project_identifier_info: "Επιτρέπονται μόνο πεζά γράμματα (α-ω), αριθμοί, παύλες και κάτω παύλες, πρέπει να αρχίζουν με πεζό γράμμα." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Επανεκχώρηση στο πακέτα εργασίας:" text_regexp_multiline: 'Το regex εφαρμόστηκε σε μια λειτουργία πολλαπλών γραμμών. π.χ., ^---\s+' text_repository_usernames_mapping: "Επιλέξτε ή ενημερώστε τον χρήστη OpenProject που αντιστοιχεί σε κάθε όνομα χρήστη στο ιστορικό του αποθετηρίου.\nΧρήστες με το ίδιο όνομα χρήστη στο OpenProject και το αποθετήριο ή email αντιστοιχίζονται αυτόματα." @@ -5153,17 +5376,17 @@ el: version_status_locked: "κλειδωμένο" version_status_open: "ανοιχτό" note: Σημείωση - note_password_login_disabled: "Η σύνδεση με κωδικό πρόσβασης έχει απενεργοποιηθεί από %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Προειδοποίηση warning_attachments_not_saved: "%{count} αρχείο(α) δεν μπόρεσαν να αποθηκευτούν." - warning_imminent_user_limit: > - Προσκαλέσατε περισσότερους χρήστες απ'ότι υποστηρίζεται από το τρέχον πλάνο σας. Οι προσκεκλημένοι χρήστες ενδέχεται να μην μπορούν να συμμετάσχουν στο OpenProject περιβάλλον σας. Παρακαλούμε αναβαθμίστε το πλάνο σας ή αποκλείστε υπάρχοντες χρήστες για να επιτρέψετε στους προσκεκλημένους και εγγεγραμμένους χρήστες να συμμετάσχουν. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | Το email ενεργοποίησης έχει λήξει. Σας στείλαμε ένα καινούργιο στο %{email}. Παρακαλούμε πατήστε στον σύνδεσμο μέσα σε αυτό για να ενεργοποιήσετε τον λογαριασμό σας. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5223,7 +5446,7 @@ el: reminders: label_remind_at: "Ημερομηνία" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5254,8 +5477,8 @@ el: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5375,6 +5598,7 @@ el: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Πριν την εξουσιοδότηση" diff --git a/config/locales/crowdin/eo.yml b/config/locales/crowdin/eo.yml index 266e900f561..7905a9b9ed3 100644 --- a/config/locales/crowdin/eo.yml +++ b/config/locales/crowdin/eo.yml @@ -108,7 +108,7 @@ eo: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ eo: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -607,6 +667,14 @@ eo: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -767,6 +835,11 @@ eo: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -999,9 +1072,9 @@ eo: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Tiu ĉi uzanto ne estas nuna membro de la projekto. open_profile: "Open profile" @@ -1056,6 +1129,64 @@ eo: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Teksto" placeholder_users: @@ -1063,11 +1194,11 @@ eo: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1099,8 +1230,8 @@ eo: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1365,7 +1496,7 @@ eo: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "aŭ ensalutu per via ekzistanta konto" signup_with_auth_provider: "aŭ registriĝu per" - auth_source_login: Please login as %{login} to activate your account. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Bonvolu ensaluti por aktivigi vian konton. actionview_instancetag_blank_option: "Bonvolu elekti" activemodel: @@ -1636,6 +1767,11 @@ eo: consented_at: "Consented at" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1644,8 +1780,6 @@ eo: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Faciliga reĝimo" auto_hide_popups: "Automatically hide success banners" @@ -1666,6 +1800,28 @@ eo: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Findato" sharing: "Konigado" @@ -1720,6 +1876,8 @@ eo: before: "devas esti antaŭ la %{date}." before_or_equal_to: "devas esti antaŭ aŭ egale al %{date}." blank: "ne povas esti malplena." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1756,8 +1914,9 @@ eo: less_than_or_equal_to: "devas esti malpli aŭ egala al %{count}." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "ne estas la nuna uzanto." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "Ĝi ne estas valida dato." not_a_datetime: "Ĝi ne estas valida dato/horo." @@ -1788,6 +1947,10 @@ eo: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "la longeco estas malĝusta (devus esti %{count} signoj)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1898,6 +2061,9 @@ eo: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "ankoraŭ uzara de la laborpakaĵoj: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2103,6 +2269,10 @@ eo: description: "'Password confirmation' should match the input in the 'New password' field." status: invalid_on_create: "is not a valid status for new users." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Please choose at least one user or group." role_blank: "ĝi bezonas esti atribuita." @@ -2369,7 +2539,7 @@ eo: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: krei @@ -2809,7 +2979,7 @@ eo: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2826,10 +2996,8 @@ eo: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2917,8 +3085,8 @@ eo: work_package_edit: "Laborpakaĵo redaktita" work_package_note: "Laborpakaĵa noto aldonita" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Eksporti" @@ -3169,6 +3337,7 @@ eo: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3176,9 +3345,9 @@ eo: links: configuration_guide: "Agordgvidilo" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "You can sign in as soon as your account has been activated by clicking %{signin}." - instructions_after_logout: "You can sign in again by clicking %{signin}." - instructions_after_error: "You can try to sign in again by clicking %{signin}. If the error persists, ask your admin for help." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3370,6 +3539,8 @@ eo: label_calendar_show: "Montri kalendaron" label_category: "Kategorio" label_completed: Completed + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "User Consent" label_wiki_menu_item: Vikia menuero label_select_main_menu_item: Elekti novan ĉefmenueron @@ -3536,6 +3707,7 @@ eo: label_subject_or_id: "Temo aŭ ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Identigilo" + label_project_identifier: "Project identifier" label_in: "en" label_in_less_than: "en malpli ol" label_in_more_than: "in more than" @@ -3669,11 +3841,13 @@ eo: label_news_view_all: "Vidi ĉiujn novaĵojn" label_next: "Sekva" label_next_week: "Sekva semajno" + label_next_year: "Next year" label_no_change_option: "(Neniu ŝanĝo)" label_no_data: "Neniu montrebla datumo" label_no_due_date: "no finish date" label_no_start_date: "no start date" label_no_parent_page: "Neniu patra paĝo" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Nenio montrebla" label_nobody: "neniu" @@ -3702,6 +3876,8 @@ eo: label_overall_activity: "Ĝenerala aktiveco" label_overview: "Superrigardo" label_page_title: "Paĝtitolo" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "patro de" label_password_lost: "Ĉu vu forgesis vian pasvorton?" label_password_rule_lowercase: "Minusklo" @@ -3728,6 +3904,7 @@ eo: label_preview_not_available: "Preview not available" label_previous: "Antaŭa" label_previous_week: "Antaŭa semajno" + label_previous_year: "Previous year" label_principal_invite_via_email: " aŭ invitu novajn uzantojn retpoŝte" label_principal_search: "Aldoni ekzistantajn uzantojn aŭ grupojn" label_privacy_policy: "Datuma privateco kaj regularo pri sekureco" @@ -3839,6 +4016,7 @@ eo: label_start_to_start: "start to start" label_statistics: "Statistikoj" label_status: "Stato" + label_status_plural: "Statuses" label_storage_free_space: "Remaining disk space" label_storage_used_space: "Uzata diskospaco" label_storage_group: "Konserveja dosiersistemo %{identifier}" @@ -3867,6 +4045,7 @@ eo: label_title: "Titolo" label_projects_menu: "Projektoj" label_today: "hodiaŭ" + label_today_capitalized: "Hodiaŭ" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3887,7 +4066,7 @@ eo: label_user: "Uzanto" label_user_and_permission: "Users and permissions" label_user_named: "Uzanto %{name}" - label_user_activity: "Aktiveco de %{value}" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Aanonima" label_user_menu: "User menu" label_user_new: "Nova uzanto" @@ -3974,6 +4153,15 @@ eo: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "hieraŭ" label_zen_mode: "Zen mode" label_role_type: "Tipo" @@ -3982,6 +4170,22 @@ eo: label_not_changeable: "(ne modifebla)" label_global: "Ĉiea" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Error executing the macro %{macro_name}" macro_unavailable: "Macro %{macro_name} cannot be displayed." macros: @@ -4016,7 +4220,7 @@ eo: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4046,7 +4250,7 @@ eo: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4145,7 +4349,7 @@ eo: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: User activation limit reached - message: | + message_html: | A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). The user cannot activate their account since the user limit has been reached. steps: @@ -4331,6 +4535,12 @@ eo: permission_manage_versions: "Manage versions" permission_manage_wiki: "Manage wiki" permission_manage_wiki_menu: "Manage wiki menu" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Move work packages" permission_protect_wiki_pages: "Protect wiki pages" permission_rename_wiki_pages: "Rename wiki pages" @@ -4476,10 +4686,10 @@ eo: info: "Deleting the repository is an irreversible action." info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." managed_path_note: "The following directory will be erased: %{path}" - repository_verification: "Enter the project's identifier %{identifier} to verify the deletion of its repository." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Do you really want to delete the %{repository_type} of the project %{project_name}?" - subtitle_not_managed: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" - title: "Delete the %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Remove the linked %{repository_type}?" errors: build_failed: "Unable to create the repository with the selected configuration. %{reason}" @@ -4529,7 +4739,7 @@ eo: storage: not_available: "Disk storage consumption is not available for this repository." update_timeout: "Keep the last required disk space information for a repository for N minutes.\nAs counting the required disk space of a repository may be costly, increase this value to reduce performance impact." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4574,15 +4784,15 @@ eo: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4679,7 +4889,7 @@ eo: setting_work_package_properties: "Work package properties" setting_work_package_startdate_is_adddate: "Use current date as start date for new work packages" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Log user login, name, and mail address for all requests" setting_login_required: "Authentication required" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4760,6 +4970,12 @@ eo: setting_welcome_text: "Welcome block text" setting_welcome_title: "Welcome block title" setting_welcome_on_homescreen: "Display welcome block on homescreen" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Working days" @@ -4926,10 +5142,12 @@ eo: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Plain text" @@ -5051,6 +5269,10 @@ eo: text_plugin_assets_writable: "Plugin assets directory writable" text_powered_by: "Powered by %{link}" text_project_identifier_info: "Only lower case letters (a-z), numbers, dashes and underscores are allowed, must start with a lower case letter." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassign to work package:" text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' text_repository_usernames_mapping: "Select or update the OpenProject user mapped to each username found in the repository log.\nUsers with the same OpenProject and repository username or email are automatically mapped." @@ -5158,18 +5380,18 @@ eo: version_status_locked: "locked" version_status_open: "malfermita" note: Note - note_password_login_disabled: "Password login has been disabled by %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Warning warning_attachments_not_saved: "%{count} file(s) could not be saved." - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5229,7 +5451,7 @@ eo: reminders: label_remind_at: "Dato" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5260,8 +5482,8 @@ eo: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5381,6 +5603,7 @@ eo: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/es.yml b/config/locales/crowdin/es.yml index e38267c9e15..ef3a7ab1f6c 100644 --- a/config/locales/crowdin/es.yml +++ b/config/locales/crowdin/es.yml @@ -108,7 +108,7 @@ es: jemalloc_allocator: Asignador de memoria Jemalloc journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Importar" jira: @@ -379,11 +379,71 @@ es: project_creation: "Creación de proyecto" notification_text_default: >

Hola,

Se ha creado un nuevo proyecto: projectValue:name

Muchas gracias

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Transiciones predeterminadas" user_author: "Usuario es autor" user_assignee: "Usuario es asignado" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Inicio de sesión y registro" announcements: @@ -605,6 +665,14 @@ es: danger_dialog: confirmation_live_message_checked: "El botón para continuar ya está activo." confirmation_live_message_unchecked: "El botón para continuar ya está inactivo. Debe marcar la casilla para continuar." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "La URL en la que se podrá acceder al servidor OpenProject MCP. Es necesaria para configurar los clientes de MCP." @@ -765,6 +833,11 @@ es: description: > El proyecto solo será visible para los miembros del proyecto en función de su rol y los permisos asociados. Los subproyectos no se ven afectados y tienen sus propios ajustes. change_identifier: Cambiar identificador + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Selecciona las plantillas que se utilizarán al crear nuevos subelementos. @@ -997,9 +1070,9 @@ es: groups: member_in_these_groups: "Este usuario es miembro actualmente de los grupos siguientes:" no_results_title_text: Este usuario no es miembro actualmente de ningún grupo. - summary_with_more: Miembro de %{names} y %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} más" - summary: Miembro de %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: El usuario no es actualmente un miembro del proyecto. open_profile: "Abrir perfil" @@ -1054,6 +1127,64 @@ es: user: "El usuario ya puede iniciar sesión para acceder a %{project}. Mientras tanto, puede crear planes con ese usuario y asignarle paquetes de trabajo." placeholder_user: "El marcador de posición ya puede usarse en %{project}. Mientras tanto, puede crear planes con ese usuario y asignarle paquetes de trabajo." group: "El grupo ya forma parte de %{project}. Mientras tanto, puede crear planes con ese grupo y asignar paquetes de trabajo a este." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Texto" placeholder_users: @@ -1061,11 +1192,11 @@ es: No puede eliminar el usuario de marcador de posición. No tiene permiso para administrar miembros en todos los proyectos al que pertenece el usuario de marcador de posición. delete_tooltip: "Eliminar usuario de marcador de posición" deletion_info: - heading: "Eliminar usuario de marcador de posición %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > Todas las repeticiones del usuario de marcador de posición (por ejemplo, como asignado, responsable u otros valores de usuario) se reasignarán a una cuenta denominada «Usuario eliminado». Como los datos de todas las cuentas eliminadas se reasignarán a esta cuenta, no podrán distinguirse los datos del usuario de los datos creados con cualquier otra cuenta eliminada. irreversible: "Esta acción no se puede deshacer" - confirmation: "Escriba el nombre de usuario de marcador de posición %{name} para confirmar la eliminación." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1097,10 +1228,10 @@ es: status_excluded_from_totals_text: |- Marque esta opción para excluir los paquetes de trabajo con este estado de los totales de Trabajo, Trabajo restante y % completado en una jerarquía. - status_percent_complete_text: |- - En el modo de cálculo del progreso basado en el estado, el % completado de un trabajo - se ajusta automáticamente a este valor cuando se selecciona este estado. - Se ignora en el modo basado en el trabajo. + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work + package is automatically set to this value when this status is selected. + Ignored in work-based mode. status_readonly_html: | Seleccione esta opción para marcar los paquetes de trabajo que tengan este estado como de solo lectura. Excepto el estado, ningún otro atributo se puede modificar. @@ -1362,7 +1493,7 @@ es: El registro de usuarios está limitado para el proveedor de inicio de sesión único '%{name}'. Por favor, pida a un administrador que active la cuenta para usted o cambie el límite de auto-registro para este proveedor. login_with_auth_provider: "o inicie sesión con su cuenta existente" signup_with_auth_provider: "o regístrate usando" - auth_source_login: Por favor, inicia sesión como %{login} para activar tu cuenta. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Por favor inicie sesión para activar su cuenta. actionview_instancetag_blank_option: "Por favor, elija" activemodel: @@ -1633,6 +1764,11 @@ es: consented_at: "Consentido en" group: identity_url: "URL de identidad" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Apariencia" header_alerts: "Alertas" @@ -1641,8 +1777,6 @@ es: button_update_user_information: "Actualizar perfil" comments_sorting: "Mostrar la actividad del paquete de trabajo ordenada por" disable_keyboard_shortcuts: "Deshabilitar atajos de teclado" - disable_keyboard_shortcuts_caption_html: |- - Puede optar por deshabilitar los atajos de teclado predeterminados si utiliza un lector de pantalla o desea evitar activar accidentalmente una acción con un atajo. dismissed_enterprise_banners: "Banners empresariales ocultos" impaired: "Modo de accesibilidad" auto_hide_popups: "Ocultar automáticamente los banners de éxito" @@ -1663,6 +1797,28 @@ es: users/invitation/form_model: principal_type: "Tipo de invitación" id_or_email: "Nombre o dirección de correo electrónico" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Fecha de finalización" sharing: "Compartiendo" @@ -1717,6 +1873,8 @@ es: before: "debe ser antes de %{date}." before_or_equal_to: "debe ser antes o igual a %{date}." blank: "no puede estar en blanco." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "necesita tener la propiedad '%{property}' definida." cannot_delete_mapping: "es obligatorio. No se puede eliminar." is_for_all_cannot_modify: "es para todos los proyectos y, por tanto, no puede modificarse." @@ -1753,8 +1911,9 @@ es: less_than_or_equal_to: "debe ser menor o igual a %{count}." not_available: "no está disponible debido a una configuración del sistema." not_deletable: "no se puede eliminar." + not_editable: "cannot be edited because it is already in effect." not_current_user: "no es el usuario actual." - only_one_active_sprint_allowed: "solo se permite un sprint activo por proyecto." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "no encontrado." not_a_date: "no es una fecha válida." not_a_datetime: "no es una fecha/hora válida." @@ -1785,6 +1944,10 @@ es: no está proveyendo un "Contexto Seguro". Utiliza HTTPS o una dirección loopack, como un localhost. wrong_length: "la longitud es incorrecta (debe ser %{count} caracteres)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1895,6 +2058,9 @@ es: project_initiation_request_disabled: "La solicitud de inicio de proyecto está desactivada. Debe estar activada para crear el paquete de trabajo de artefactos." types: in_use_by_work_packages: "todavia en uso por los paquetes de trabajo: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "El módulo «%{dependency}» debe habilitarse también, ya que el módulo «%{module}» depende de este." format: "%{message}" @@ -2100,6 +2266,10 @@ es: description: "'La confirmación de la contraseña' debe coincidir con la ingresada en el campo 'Nueva contraseña'." status: invalid_on_create: "no es un estado válido para nuevos usuarios." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Por favor seleccione al menos un usuario o grupo." role_blank: "necesita ser asignado." @@ -2366,8 +2536,8 @@ es: Al habilitar las copias de seguridad, cualquier usuario con los permisos necesarios y este token de copias de seguridad podrá descargar una copia de seguridad que contenga todos los datos de esta instalación de OpenProject, incluidos los datos del resto de los usuarios. info: > Para crear una copia de seguridad, necesita generar un token de copias de seguridad. Cada vez que quiera solicitar una copia de seguridad, tendrá que especificar este token. Puede eliminar el token de copias de seguridad para deshabilitar las copias de seguridad para este usuario. - verification: > - Escriba %{word} para confirmar que quiere %{action} el token de copias de seguridad. + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: restablecer verification_word_create: crear warning: > @@ -2806,7 +2976,7 @@ es: title: one: "Queda un día del token de prueba de %{trial_plan}" other: "Quedan %{count} días del token de prueba de %{trial_plan}" - description: "Tiene acceso a todas las funciones de %{trial_plan}." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "Ha solicitado un token de prueba, pero esa solicitud ya no está disponible. Inténtelo de nuevo." wait_for_confirmation: "Le hemos enviado un correo electrónico para que confirme su dirección con el fin de recuperar un token de prueba." @@ -2823,10 +2993,8 @@ es: confirmation_subline: > Revise su bandeja de entrada y siga los pasos para iniciar su prueba gratuita de 14 días. domain_caption: El token será válido para su nombre de host configurado actualmente. - receive_newsletter_html: > - Quiero recibir el boletín de OpenProject. - consent_html: > - Acepto los términos del servicio y la política de privacidad. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Deshabilitado." @@ -2914,8 +3082,8 @@ es: work_package_edit: "Paquete de trabajo editado" work_package_note: "Nota de paquete de trabajo añadido" title: - project: "Proyecto: %{name}" - subproject: "Subproyecto: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Exportar" @@ -3166,6 +3334,7 @@ es: El modo de programación se ajusta automáticamente con la actualización de la versión. totals_removed_from_childless_work_packages: >- Los totales de trabajo y progreso se eliminan automáticamente para los paquetes de trabajo no padres con la actualización de la versión. Se trata de una tarea de mantenimiento y puede ignorarse con seguridad. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Los paquetes de trabajo para niños sin Trabajo se ignoran. total_percent_complete_mode_changed_to_simple_average: >- @@ -3173,9 +3342,9 @@ es: links: configuration_guide: "Guía de configuración" get_in_touch: "¿Tiene alguna pregunta? Póngase en contacto con nosotros." - instructions_after_registration: "Podras entrar tan pronto como tu cuenta halla sido activada haciendo clic sobre %{signin}." - instructions_after_logout: "Puedes entrar nuevamente haciendo clic sobre %{signin}." - instructions_after_error: "Puedes intentar entrar nuevamente haciendo clic sobre %{signin}. Si el error persiste, contacta a tu administrador para que te ayude." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Inteligencia artificial (IA)" @@ -3367,6 +3536,8 @@ es: label_calendar_show: "Mostrar Calendario" label_category: "Categoría" label_completed: Completado + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Consentimiento del usuario" label_wiki_menu_item: Elemento de menú wiki label_select_main_menu_item: Seleccione nuevo elemento de menú principal @@ -3533,6 +3704,7 @@ es: label_subject_or_id: "Asunto o ID" label_calendar_subscriptions: "Suscripciones al calendario" label_identifier: "Identificador" + label_project_identifier: "Project identifier" label_in: "en" label_in_less_than: "en menos de" label_in_more_than: "en más de" @@ -3666,11 +3838,13 @@ es: label_news_view_all: "Ver todas las noticias" label_next: "Siguiente" label_next_week: "La próxima semana" + label_next_year: "Next year" label_no_change_option: "(No hay cambios)" label_no_data: "No hay datos disponibles" label_no_due_date: "sin fecha de finalización" label_no_start_date: "sin fecha de inicio" label_no_parent_page: "Sin página principal" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notificaciones" label_nothing_display: "Nada que mostrar" label_nobody: "nadie" @@ -3699,6 +3873,8 @@ es: label_overall_activity: "Actividad general" label_overview: "Resumen" label_page_title: "Título de la página" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "parte de" label_password_lost: "Contraseña perdida" label_password_rule_lowercase: "Minúscula" @@ -3725,6 +3901,7 @@ es: label_preview_not_available: "Vista previa no disponible" label_previous: "Anterior" label_previous_week: "Semana anterior" + label_previous_year: "Previous year" label_principal_invite_via_email: " o invitar nuevos usuarios vía email" label_principal_search: "Añadir usuarios o grupos existentes" label_privacy_policy: "Política de privacidad y seguridad de datos" @@ -3836,6 +4013,7 @@ es: label_start_to_start: "iniciar para iniciar" label_statistics: "Estadísticas" label_status: "Estado" + label_status_plural: "Statuses" label_storage_free_space: "Espacio de disco restante" label_storage_used_space: "Espacio de disco utilizado" label_storage_group: "Sistema de archivos de almacenamiento %{identifier}" @@ -3864,6 +4042,7 @@ es: label_title: "Título" label_projects_menu: "Proyectos" label_today: "hoy" + label_today_capitalized: "Hoy" label_token_version: "Versión del token" label_today_as_start_date: "Seleccione hoy como fecha de inicio." label_today_as_due_date: "Seleccione hoy como fecha de finalización." @@ -3884,7 +4063,7 @@ es: label_user: "Usuario" label_user_and_permission: "Usuarios y permisos" label_user_named: "Usuario %{name}" - label_user_activity: "Actividad de %{value} " + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anónimo" label_user_menu: "Menú de usuario" label_user_new: "Nuevo usuario" @@ -3971,6 +4150,15 @@ es: one: "1 archivo" other: "%{count} archivos" zero: "sin archivos" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "ayer" label_zen_mode: "Modo zen" label_role_type: "Tipo" @@ -3979,6 +4167,22 @@ es: label_not_changeable: "(no modificable)" label_global: "Global" label_seeded_from_env_warning: Este registro se ha creado a través de una variable de entorno de configuración. No es editable a través de la interfaz de usuario. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Error ejecutando el macro %{macro_name}" macro_unavailable: "Macro %{macro_name} no puede ser mostrado." macros: @@ -4013,7 +4217,7 @@ es: center: "Al centro de notificaciones" see_in_center: "Ver comentario en el centro de notificaciones" settings: "Cambiar configuración de correo electrónico" - salutation: "Hola %{user}" + salutation: "Hello %{user}," salutation_full_name: "Nombre completo" work_packages: created_at: "Creado a las %{timestamp} por %{user} " @@ -4043,7 +4247,7 @@ es: note: "Nota: «%{note}»" sharing: work_packages: - allowed_actions: "Puede %{allowed_actions} este paquete de trabajo. Esto puede cambiar dependiendo del rol y los permisos de su proyecto." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "Para acceder a este paquete de trabajo necesitará crear y activar una cuenta en %{instance}. " open_work_package: "Abrir paquete de trabajo" subject: "Paquete de trabajo #%{id} fue compartido contigo" @@ -4142,9 +4346,9 @@ es: roles: "Tiene asignados los roles siguientes:" mail_user_activation_limit_reached: subject: Se ha alcanzado el límite de activaciones del usuario - message: | - Un nuevo usuario (%{email}) intento crear una cuenta en el ambiente de Proyecto Abierto que usted administra (%{host}). - El usuario no puede activar su cuenta debido a que el límite del usuario ha sido alcanzado. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "Para permitir al usuario ingresar, usted puede: " a: "Mejore su plan de pago ([here](upgrade_url))" #here turned into a link @@ -4327,6 +4531,12 @@ es: permission_manage_versions: "Administrar versiones" permission_manage_wiki: "Administrar wiki" permission_manage_wiki_menu: "Administrar menú wiki" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Mover paquetes de trabajo" permission_protect_wiki_pages: "Proteger páginas wiki" permission_rename_wiki_pages: "Renombrar páginas wiki" @@ -4472,10 +4682,10 @@ es: info: "La eliminación del repositorio no se puede deshacer." info_not_managed: "Nota: Esto NO borrará el contenido de este repositorio, ya que no es gestionado por OpenProject." managed_path_note: "Se borrará el directorio siguiente: %{path}" - repository_verification: "Intruduzca el identificador del proyecto %{identifier} para confirmar la eliminación de su repositorio." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "¿Esta seguro de que desea eliminar el tipo %{repository_type} del proyecto %{project_name}?" - subtitle_not_managed: "¿Esta seguro de que quiere eliminar la %{url} del %{repository_type} del proyecto %{project_name}?" - title: "Eliminar el %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Eliminar el %{repository_type} linkado?" errors: build_failed: "No se puede crear el repositorio con la configuración seleccionada. %{reason}" @@ -4525,7 +4735,7 @@ es: storage: not_available: "Consumo de almacenamiento de disco no está disponible para este repositorio." update_timeout: "Mantener la última información de espacio de disco requerida para un repositorio de N minutos. Contar el espacio de disco requerido de un repositorio puede ser costoso, aumente este valor para reducir el impacto en el rendimiento." - oauth_application_details: "La clave secreta de cliente no será accesible una vez se cierre esta ventana. Por favor, copie estos valores en la configuración de la integración de OpenProject en Nextcloud:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Ir a la página de configuración" setup_documentation_details: "Si necesita ayuda para configurar un nuevo almacenamiento de archivos, compruebe la documentación: " setup_documentation_details_link_text: "Configuración de almacenamiento de archivos" @@ -4570,15 +4780,15 @@ es: setting_apiv3_cors_title: "Intercambio de recursos entre orígenes (CORS)" setting_apiv3_cors_enabled: "Habilitar CORS" setting_apiv3_cors_origins: "Orígenes permitidos de la API de CORS (uso compartido de recursos entre orígenes) V3" - setting_apiv3_cors_origins_text_html: > - Si CORS está habilitado, estos son los orígenes que tienen permiso para acceder a la API de OpenProject.
Consulte la documentación sobre el encabezado Origin para obtener información sobre cómo especificar los valores esperados. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Acceso de escritura a atributos de solo lectura" setting_apiv3_write_readonly_attributes_instructions: > Si se activa, la API permitirá a los administradores escribir atributos estáticos de solo lectura durante la creación, como createdAt y author. setting_apiv3_write_readonly_attributes_warning: > Este ajuste tiene un caso de uso para, por ejemplo, la importación de datos, pero permite a los administradores suplantar la creación de elementos como otros usuarios. Sin embargo, todas las solicitudes de creación se registran con el verdadero autor. - setting_apiv3_write_readonly_attributes_additional: > - Para obtener más información sobre los atributos y los recursos admitidos, consulte el enlace %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Tamaño máximo de página API" setting_apiv3_max_page_size_instructions: > Establezca el tamaño máximo de página con el que responderá la API. No se podrán realizar solicitudes a la API que devuelvan más valores en una sola página. @@ -4675,7 +4885,7 @@ es: setting_work_package_properties: "Propiedades de paquete de trabajo" setting_work_package_startdate_is_adddate: "Usar fecha actual como fecha de inicio para nuevos paquetes de trabajo" setting_work_packages_projects_export_limit: "Fecha límite para exportar paquete de trabajo o proyectos" - setting_journal_aggregation_time_minutes: "Acciones de usuario agregadas dentro de" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Registrar inicio de sesión de usuario, nombre, y dirección de correo para todas las solicitudes" setting_login_required: "Autentificación requerida" setting_login_required_caption: "Cuando está marcada, todas las solicitudes a la aplicación tienen que autentificarse." @@ -4756,6 +4966,12 @@ es: setting_welcome_text: "Bloque de texto de bienvenida" setting_welcome_title: "Título del bloque de bienvenida" setting_welcome_on_homescreen: "Mostrar bloque de bienvenida en la pagina de inicio" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Modo de resaltado predeterminado" setting_work_package_list_default_highlighted_attributes: "Atributos resaltados en línea predeterminados" setting_working_days: "Días laborables" @@ -4922,10 +5138,12 @@ es: section_work_week: "Semana de trabajo" section_holidays_and_closures: "Vacaciones y cierres" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "No tiene los permisos necesarios para ver esta página." activities: enable_internal_comments: "Habilitar comentarios internos" - helper_text: "Los comentarios internos permiten a un equipo interno comunicarse entre sí de forma privada. Solo son visibles para los roles seleccionados que tengan los permisos necesarios y no serán visibles públicamente. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Texto sin formato" @@ -5047,6 +5265,10 @@ es: text_plugin_assets_writable: "Directorio de extensiones activos escribible" text_powered_by: "Con tecnología de %{link}" text_project_identifier_info: "Se permiten sólo letras minúsculas (a-z), números, guiones y guiones bajos, debe comenzar con una letra minúscula." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reasignar al paquete de trabajo:" text_regexp_multiline: 'La expresión regular se aplica en modo multilínea. Por ejemplo, ^---\s+' text_repository_usernames_mapping: "Seleccione o actualize el usuario de OpenProject asignado a cada nombre en el registro del repositorio. Los usuarios con el mismo nombre o email serán mapeados automáticamente." @@ -5154,17 +5376,17 @@ es: version_status_locked: "bloqueado" version_status_open: "abierto" note: Nota - note_password_login_disabled: "El inicio de sesion por contraseña ha sido deshabilitado por %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Alerta warning_attachments_not_saved: "%{count} archivo(s) no podrán ser salvados." - warning_imminent_user_limit: > - Usted ha invitado a más usuarios de los que soporta su plan actual. Es posible que los usuarios invitados no puedan unirse a su ambiente de Proyecto Abierto. Por favor actualice su plan o bloquee los usuarios existentes para permitir que los usuarios invitados y registrados se unan. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | El e-mail de activación ha expirado. Le enviaremos uno nuevo a %{email}. Por favor haga click en el enlace incluido en el mismo para activar su cuenta. warning_user_limit_reached: > Añadir usuarios adicionales excederá el límite actual. Póngase en contacto con un administrador para aumentar el límite de usuario para asegurar que los usuarios externos puedan acceder a esta instancia. - warning_user_limit_reached_admin: > - Añadir usuarios adicionales excederá el límite actual. Por favor, actualice su plan para asegurar que los usuarios externos puedan acceder a esta instancia. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > Has alcanzado el límite de usuarios (%{current}/%{max} usuarios activos). Por favor, contacta con sales@openproject.com para mejorar tu plan de Enterprise y añadir usuarios adicionales. warning_protocol_mismatch_html: > @@ -5224,7 +5446,7 @@ es: reminders: label_remind_at: "Fecha" note_placeholder: "¿Por qué establece este recordatorio?" - create_success_message: "Recordatorio establecido correctamente. Recibirá una notificación para este paquete de trabajo %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Recordatorio actualizado con éxito." success_deletion_message: "Recordatorio eliminado correctamente." sharing: @@ -5255,8 +5477,8 @@ es: text_user_limit_reached_admins: 'Añadir usuarios adicionales excederá el límite actual. Por favor, actualice su plan para poder añadir más usuarios.' warning_user_limit_reached: > Añadir usuarios adicionales excederá el límite actual. Póngase en contacto con un administrador para aumentar el límite de usuario para asegurar que los usuarios externos puedan acceder a esta %{entity}. - warning_user_limit_reached_admin: > - Añadir usuarios adicionales excederá el límite actual. Por favor, actualice su plan para asegurar que los usuarios externos puedan acceder a esta %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Por favor, seleccione usuarios para compartir esta %{entity} con" warning_locked_user: "él usuario %{user} está bloqueado y no se puede compartir con él" user_details: @@ -5376,6 +5598,7 @@ es: project: 'Oculto: el proyecto no se muestra porque no tiene los permisos necesarios.' ancestor: No revelado - El antepasado es invisible por falta de permisos. definingProject: 'Oculto: el proyecto no se muestra porque no tiene los permisos necesarios.' + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-autorización" diff --git a/config/locales/crowdin/et.yml b/config/locales/crowdin/et.yml index 2097a65a155..93d91bb2adf 100644 --- a/config/locales/crowdin/et.yml +++ b/config/locales/crowdin/et.yml @@ -108,7 +108,7 @@ et: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ et: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -607,6 +667,14 @@ et: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -767,6 +835,11 @@ et: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Muuda identifikaatorit + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -999,9 +1072,9 @@ et: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: This user is currently not a member of a project. open_profile: "Open profile" @@ -1056,6 +1129,64 @@ et: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Tekst" placeholder_users: @@ -1063,11 +1194,11 @@ et: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1099,8 +1230,8 @@ et: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1365,7 +1496,7 @@ et: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "või logi sisse oma olemasoleva kontoga" signup_with_auth_provider: "or sign up using" - auth_source_login: Please login as %{login} to activate your account. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Please login to activate your account. actionview_instancetag_blank_option: "Palun vali" activemodel: @@ -1636,6 +1767,11 @@ et: consented_at: "Consented at" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1644,8 +1780,6 @@ et: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Hõlbustusfunktsioonidega režiim" auto_hide_popups: "Automatically hide success banners" @@ -1666,6 +1800,28 @@ et: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Lõpetamise kuupäev" sharing: "Jagamine" @@ -1720,6 +1876,8 @@ et: before: "must be before %{date}." before_or_equal_to: "must be before or equal to %{date}." blank: "ei tohi olla tühi." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1756,8 +1914,9 @@ et: less_than_or_equal_to: "must be less than or equal to %{count}." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is not the current user." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "ei leitud." not_a_date: "pole korrektne kuupäev." not_a_datetime: "is not a valid date time." @@ -1788,6 +1947,10 @@ et: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "is the wrong length (should be %{count} characters)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1898,6 +2061,9 @@ et: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "still in use by work packages: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2103,6 +2269,10 @@ et: description: "'Password confirmation' should match the input in the 'New password' field." status: invalid_on_create: "is not a valid status for new users." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Vali vähemalt üks kasutaja või grupp." role_blank: "need to be assigned." @@ -2369,7 +2539,7 @@ et: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: create @@ -2809,7 +2979,7 @@ et: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2826,10 +2996,8 @@ et: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2917,8 +3085,8 @@ et: work_package_edit: "Teemat on uuendatud" work_package_note: "Teemale on lisatud märkus" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Ekspordi" @@ -3169,6 +3337,7 @@ et: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3176,9 +3345,9 @@ et: links: configuration_guide: "Configuration guide" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "You can sign in as soon as your account has been activated by clicking %{signin}." - instructions_after_logout: "You can sign in again by clicking %{signin}." - instructions_after_error: "You can try to sign in again by clicking %{signin}. If the error persists, ask your admin for help." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3370,6 +3539,8 @@ et: label_calendar_show: "Kuva kalender" label_category: "Kategooria" label_completed: Lõpetatud + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Kasutaja nõusolek" label_wiki_menu_item: Viki menüüvalik label_select_main_menu_item: Vali uus peamenüü valik @@ -3536,6 +3707,7 @@ et: label_subject_or_id: "Subject or ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Identifikaator" + label_project_identifier: "Project identifier" label_in: "sisaldub hulgas" label_in_less_than: "on väiksem kui" label_in_more_than: "on suurem kui" @@ -3669,11 +3841,13 @@ et: label_news_view_all: "Kõik uudised" label_next: "Järgmine" label_next_week: "Järgmine nädal" + label_next_year: "Next year" label_no_change_option: "(Ei muutu)" label_no_data: "Pole" label_no_due_date: "no finish date" label_no_start_date: "alguse kuupäeva pole" label_no_parent_page: "No parent page" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Pole midagi näidata" label_nobody: "eikeegi" @@ -3702,6 +3876,8 @@ et: label_overall_activity: "Üldine tegevuste ajalugu" label_overview: "Ülevaade" label_page_title: "Page title" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "part of" label_password_lost: "Forgot your password?" label_password_rule_lowercase: "Väiketäheline" @@ -3728,6 +3904,7 @@ et: label_preview_not_available: "Preview not available" label_previous: "Eelmine" label_previous_week: "Eelmine nädal" + label_previous_year: "Previous year" label_principal_invite_via_email: " or invite new users via email" label_principal_search: "Add existing users or groups" label_privacy_policy: "Data privacy and security policy" @@ -3839,6 +4016,7 @@ et: label_start_to_start: "algusest alguseni" label_statistics: "Statistika" label_status: "Olek" + label_status_plural: "Statuses" label_storage_free_space: "Remaining disk space" label_storage_used_space: "Used disk space" label_storage_group: "Storage filesystem %{identifier}" @@ -3867,6 +4045,7 @@ et: label_title: "Pealkiri" label_projects_menu: "Projektid" label_today: "täna" + label_today_capitalized: "Täna" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3887,7 +4066,7 @@ et: label_user: "Kasutaja" label_user_and_permission: "Users and permissions" label_user_named: "User %{name}" - label_user_activity: "%{value}-s tegevus" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonüümne" label_user_menu: "User menu" label_user_new: "Uus kasutaja" @@ -3974,6 +4153,15 @@ et: one: "1 fail" other: "%{count} faili" zero: "faile pole" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "eile" label_zen_mode: "Keskendumise režiim" label_role_type: "Tüüp" @@ -3982,6 +4170,22 @@ et: label_not_changeable: "(pole muudetav)" label_global: "Üldine" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Error executing the macro %{macro_name}" macro_unavailable: "Macro %{macro_name} cannot be displayed." macros: @@ -4016,7 +4220,7 @@ et: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4046,7 +4250,7 @@ et: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4145,7 +4349,7 @@ et: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: User activation limit reached - message: | + message_html: | A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). The user cannot activate their account since the user limit has been reached. steps: @@ -4331,6 +4535,12 @@ et: permission_manage_versions: "Halda versioone" permission_manage_wiki: "Halda vikit" permission_manage_wiki_menu: "Halda viki menüüd" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Teemasid liigutada" permission_protect_wiki_pages: "Kaitse viki lehekülgi" permission_rename_wiki_pages: "Nimeta viki lehekülgi ümber" @@ -4476,10 +4686,10 @@ et: info: "Deleting the repository is an irreversible action." info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." managed_path_note: "The following directory will be erased: %{path}" - repository_verification: "Enter the project's identifier %{identifier} to verify the deletion of its repository." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Do you really want to delete the %{repository_type} of the project %{project_name}?" - subtitle_not_managed: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" - title: "Delete the %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Remove the linked %{repository_type}?" errors: build_failed: "Unable to create the repository with the selected configuration. %{reason}" @@ -4529,7 +4739,7 @@ et: storage: not_available: "Disk storage consumption is not available for this repository." update_timeout: "Keep the last required disk space information for a repository for N minutes.\nAs counting the required disk space of a repository may be costly, increase this value to reduce performance impact." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4574,15 +4784,15 @@ et: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4679,7 +4889,7 @@ et: setting_work_package_properties: "Teemade atribuudid" setting_work_package_startdate_is_adddate: "Uute teemade alguskuupäevaks käesolev päev" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Logi iga taotluse kasutajanimi, nimi ja epost" setting_login_required: "Autentimine kohustuslik" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4760,6 +4970,12 @@ et: setting_welcome_text: "Welcome block text" setting_welcome_title: "Welcome block title" setting_welcome_on_homescreen: "Display welcome block on homescreen" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Tööpäevad" @@ -4926,10 +5142,12 @@ et: section_work_week: "Töönädal" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Lihttekst" @@ -5051,6 +5269,10 @@ et: text_plugin_assets_writable: "Lisamoodulite abifailide kataloog on kirjutatav" text_powered_by: "Jooksutab %{link}" text_project_identifier_info: "Lubatud on ainult väikesed tähed (a-z), numbrid ja kriipsud. Peab algama väikse tähega." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassign to work package:" text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' text_repository_usernames_mapping: "Seosta OpenProject kasutaja hoidlasse sissekannete tegijaga. Sama nime või e-postiga kasutajad seostatakse automaatselt." @@ -5158,18 +5380,18 @@ et: version_status_locked: "lukustatud" version_status_open: "avatud" note: Märkus - note_password_login_disabled: "Password login has been disabled by %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Hoiatus warning_attachments_not_saved: "%{count} faili ei saa salvestada." - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5229,7 +5451,7 @@ et: reminders: label_remind_at: "Kuupäev" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5260,8 +5482,8 @@ et: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5381,6 +5603,7 @@ et: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/eu.yml b/config/locales/crowdin/eu.yml index d256c03af4d..e7cff584419 100644 --- a/config/locales/crowdin/eu.yml +++ b/config/locales/crowdin/eu.yml @@ -108,7 +108,7 @@ eu: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ eu: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -607,6 +667,14 @@ eu: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -767,6 +835,11 @@ eu: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -999,9 +1072,9 @@ eu: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: This user is currently not a member of a project. open_profile: "Open profile" @@ -1056,6 +1129,64 @@ eu: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Text" placeholder_users: @@ -1063,11 +1194,11 @@ eu: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1099,8 +1230,8 @@ eu: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1365,7 +1496,7 @@ eu: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "or sign in with your existing account" signup_with_auth_provider: "or sign up using" - auth_source_login: Please login as %{login} to activate your account. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Please login to activate your account. actionview_instancetag_blank_option: "Please select" activemodel: @@ -1636,6 +1767,11 @@ eu: consented_at: "Consented at" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1644,8 +1780,6 @@ eu: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Accessibility mode" auto_hide_popups: "Automatically hide success banners" @@ -1666,6 +1800,28 @@ eu: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Finish date" sharing: "Sharing" @@ -1720,6 +1876,8 @@ eu: before: "must be before %{date}." before_or_equal_to: "must be before or equal to %{date}." blank: "can't be blank." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1756,8 +1914,9 @@ eu: less_than_or_equal_to: "must be less than or equal to %{count}." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is not the current user." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "is not a valid date." not_a_datetime: "is not a valid date time." @@ -1788,6 +1947,10 @@ eu: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "is the wrong length (should be %{count} characters)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1898,6 +2061,9 @@ eu: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "still in use by work packages: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2103,6 +2269,10 @@ eu: description: "'Password confirmation' should match the input in the 'New password' field." status: invalid_on_create: "is not a valid status for new users." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Please choose at least one user or group." role_blank: "need to be assigned." @@ -2369,7 +2539,7 @@ eu: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: create @@ -2809,7 +2979,7 @@ eu: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2826,10 +2996,8 @@ eu: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2917,8 +3085,8 @@ eu: work_package_edit: "Work Package edited" work_package_note: "Work Package note added" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Export" @@ -3169,6 +3337,7 @@ eu: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3176,9 +3345,9 @@ eu: links: configuration_guide: "Configuration guide" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "You can sign in as soon as your account has been activated by clicking %{signin}." - instructions_after_logout: "You can sign in again by clicking %{signin}." - instructions_after_error: "You can try to sign in again by clicking %{signin}. If the error persists, ask your admin for help." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3370,6 +3539,8 @@ eu: label_calendar_show: "Show Calendar" label_category: "Category" label_completed: Completed + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "User Consent" label_wiki_menu_item: Wiki menu item label_select_main_menu_item: Select new main menu item @@ -3536,6 +3707,7 @@ eu: label_subject_or_id: "Subject or ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Identifier" + label_project_identifier: "Project identifier" label_in: "in" label_in_less_than: "in less than" label_in_more_than: "in more than" @@ -3669,11 +3841,13 @@ eu: label_news_view_all: "View all news" label_next: "Next" label_next_week: "Next week" + label_next_year: "Next year" label_no_change_option: "(No change)" label_no_data: "No data to display" label_no_due_date: "no finish date" label_no_start_date: "no start date" label_no_parent_page: "No parent page" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Nothing to display" label_nobody: "nobody" @@ -3702,6 +3876,8 @@ eu: label_overall_activity: "Overall activity" label_overview: "Overview" label_page_title: "Page title" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "part of" label_password_lost: "Forgot your password?" label_password_rule_lowercase: "Lowercase" @@ -3728,6 +3904,7 @@ eu: label_preview_not_available: "Preview not available" label_previous: "Previous" label_previous_week: "Previous week" + label_previous_year: "Previous year" label_principal_invite_via_email: " or invite new users via email" label_principal_search: "Add existing users or groups" label_privacy_policy: "Data privacy and security policy" @@ -3839,6 +4016,7 @@ eu: label_start_to_start: "start to start" label_statistics: "Statistics" label_status: "Status" + label_status_plural: "Statuses" label_storage_free_space: "Remaining disk space" label_storage_used_space: "Used disk space" label_storage_group: "Storage filesystem %{identifier}" @@ -3867,6 +4045,7 @@ eu: label_title: "Title" label_projects_menu: "Projects" label_today: "today" + label_today_capitalized: "Today" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3887,7 +4066,7 @@ eu: label_user: "User" label_user_and_permission: "Users and permissions" label_user_named: "User %{name}" - label_user_activity: "%{value}'s activity" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonymous" label_user_menu: "User menu" label_user_new: "New user" @@ -3974,6 +4153,15 @@ eu: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "yesterday" label_zen_mode: "Zen mode" label_role_type: "Type" @@ -3982,6 +4170,22 @@ eu: label_not_changeable: "(not changeable)" label_global: "Global" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Error executing the macro %{macro_name}" macro_unavailable: "Macro %{macro_name} cannot be displayed." macros: @@ -4016,7 +4220,7 @@ eu: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4046,7 +4250,7 @@ eu: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4145,7 +4349,7 @@ eu: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: User activation limit reached - message: | + message_html: | A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). The user cannot activate their account since the user limit has been reached. steps: @@ -4331,6 +4535,12 @@ eu: permission_manage_versions: "Manage versions" permission_manage_wiki: "Manage wiki" permission_manage_wiki_menu: "Manage wiki menu" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Move work packages" permission_protect_wiki_pages: "Protect wiki pages" permission_rename_wiki_pages: "Rename wiki pages" @@ -4476,10 +4686,10 @@ eu: info: "Deleting the repository is an irreversible action." info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." managed_path_note: "The following directory will be erased: %{path}" - repository_verification: "Enter the project's identifier %{identifier} to verify the deletion of its repository." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Do you really want to delete the %{repository_type} of the project %{project_name}?" - subtitle_not_managed: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" - title: "Delete the %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Remove the linked %{repository_type}?" errors: build_failed: "Unable to create the repository with the selected configuration. %{reason}" @@ -4529,7 +4739,7 @@ eu: storage: not_available: "Disk storage consumption is not available for this repository." update_timeout: "Keep the last required disk space information for a repository for N minutes.\nAs counting the required disk space of a repository may be costly, increase this value to reduce performance impact." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4574,15 +4784,15 @@ eu: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4679,7 +4889,7 @@ eu: setting_work_package_properties: "Work package properties" setting_work_package_startdate_is_adddate: "Use current date as start date for new work packages" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Log user login, name, and mail address for all requests" setting_login_required: "Authentication required" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4760,6 +4970,12 @@ eu: setting_welcome_text: "Welcome block text" setting_welcome_title: "Welcome block title" setting_welcome_on_homescreen: "Display welcome block on homescreen" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Working days" @@ -4926,10 +5142,12 @@ eu: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Plain text" @@ -5051,6 +5269,10 @@ eu: text_plugin_assets_writable: "Plugin assets directory writable" text_powered_by: "Powered by %{link}" text_project_identifier_info: "Only lower case letters (a-z), numbers, dashes and underscores are allowed, must start with a lower case letter." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassign to work package:" text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' text_repository_usernames_mapping: "Select or update the OpenProject user mapped to each username found in the repository log.\nUsers with the same OpenProject and repository username or email are automatically mapped." @@ -5158,18 +5380,18 @@ eu: version_status_locked: "locked" version_status_open: "open" note: Note - note_password_login_disabled: "Password login has been disabled by %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Warning warning_attachments_not_saved: "%{count} file(s) could not be saved." - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5229,7 +5451,7 @@ eu: reminders: label_remind_at: "Date" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5260,8 +5482,8 @@ eu: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5381,6 +5603,7 @@ eu: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/fa.yml b/config/locales/crowdin/fa.yml index 78fd1f9d79d..980146e2568 100644 --- a/config/locales/crowdin/fa.yml +++ b/config/locales/crowdin/fa.yml @@ -108,7 +108,7 @@ fa: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ fa: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -607,6 +667,14 @@ fa: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -767,6 +835,11 @@ fa: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: تغییر شناسه + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -999,9 +1072,9 @@ fa: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: This user is currently not a member of a project. open_profile: "Open profile" @@ -1056,6 +1129,64 @@ fa: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "متن" placeholder_users: @@ -1063,11 +1194,11 @@ fa: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1099,8 +1230,8 @@ fa: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1365,7 +1496,7 @@ fa: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "یا با حساب موجود خود وارد سیستم شوید" signup_with_auth_provider: "or sign up using" - auth_source_login: Please login as %{login} to activate your account. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Please login to activate your account. actionview_instancetag_blank_option: "لطفا انتخاب کنید" activemodel: @@ -1636,6 +1767,11 @@ fa: consented_at: "Consented at" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1644,8 +1780,6 @@ fa: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "حالت دسترسی" auto_hide_popups: "Automatically hide success banners" @@ -1666,6 +1800,28 @@ fa: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Finish date" sharing: "اشتراک گذاری" @@ -1720,6 +1876,8 @@ fa: before: "must be before %{date}." before_or_equal_to: "must be before or equal to %{date}." blank: "can't be blank." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1756,8 +1914,9 @@ fa: less_than_or_equal_to: "must be less than or equal to %{count}." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is not the current user." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "is not a valid date." not_a_datetime: "is not a valid date time." @@ -1788,6 +1947,10 @@ fa: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "is the wrong length (should be %{count} characters)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1898,6 +2061,9 @@ fa: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "still in use by work packages: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "با توجه به وابستگی %{module} به افزونه %{dependency}، این افزونه نیز بایستی فعال شود." format: "%{message}" @@ -2103,6 +2269,10 @@ fa: description: "'Password confirmation' should match the input in the 'New password' field." status: invalid_on_create: "is not a valid status for new users." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "لطفا حداقل یک کاربر یا گروه را انتخاب کنید." role_blank: "need to be assigned." @@ -2369,7 +2539,7 @@ fa: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: بازنشانی verification_word_create: ایجاد @@ -2809,7 +2979,7 @@ fa: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2826,10 +2996,8 @@ fa: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2917,8 +3085,8 @@ fa: work_package_edit: "Work Package edited" work_package_note: "Work Package note added" title: - project: "پروژه: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "خروجی" @@ -3169,6 +3337,7 @@ fa: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3176,9 +3345,9 @@ fa: links: configuration_guide: "راهنمای پیکربندی" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "You can sign in as soon as your account has been activated by clicking %{signin}." - instructions_after_logout: "You can sign in again by clicking %{signin}." - instructions_after_error: "You can try to sign in again by clicking %{signin}. If the error persists, ask your admin for help." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3370,6 +3539,8 @@ fa: label_calendar_show: "نمایش تقویم" label_category: "Category" label_completed: Completed + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "User Consent" label_wiki_menu_item: Wiki menu item label_select_main_menu_item: Select new main menu item @@ -3536,6 +3707,7 @@ fa: label_subject_or_id: "Subject or ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "شناسه" + label_project_identifier: "Project identifier" label_in: "in" label_in_less_than: "in less than" label_in_more_than: "in more than" @@ -3669,11 +3841,13 @@ fa: label_news_view_all: "View all news" label_next: "Next" label_next_week: "Next week" + label_next_year: "Next year" label_no_change_option: "(No change)" label_no_data: "No data to display" label_no_due_date: "no finish date" label_no_start_date: "بدون تاریخ شروع" label_no_parent_page: "No parent page" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Nothing to display" label_nobody: "هیچ‌کس" @@ -3702,6 +3876,8 @@ fa: label_overall_activity: "Overall activity" label_overview: "نمای کلی" label_page_title: "Page title" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "part of" label_password_lost: "Forgot your password?" label_password_rule_lowercase: "Lowercase" @@ -3728,6 +3904,7 @@ fa: label_preview_not_available: "Preview not available" label_previous: "Previous" label_previous_week: "Previous week" + label_previous_year: "Previous year" label_principal_invite_via_email: " or invite new users via email" label_principal_search: "Add existing users or groups" label_privacy_policy: "Data privacy and security policy" @@ -3839,6 +4016,7 @@ fa: label_start_to_start: "start to start" label_statistics: "Statistics" label_status: "وضعیت" + label_status_plural: "Statuses" label_storage_free_space: "Remaining disk space" label_storage_used_space: "Used disk space" label_storage_group: "Storage filesystem %{identifier}" @@ -3867,6 +4045,7 @@ fa: label_title: "عنوان" label_projects_menu: "پروژه‌ها" label_today: "today" + label_today_capitalized: "امروز" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3887,7 +4066,7 @@ fa: label_user: "کاربر" label_user_and_permission: "Users and permissions" label_user_named: "User %{name}" - label_user_activity: "%{value}'s activity" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonymous" label_user_menu: "User menu" label_user_new: "New user" @@ -3974,6 +4153,15 @@ fa: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "yesterday" label_zen_mode: "Zen mode" label_role_type: "نوع" @@ -3982,6 +4170,22 @@ fa: label_not_changeable: "(not changeable)" label_global: "عمومی" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Error executing the macro %{macro_name}" macro_unavailable: "Macro %{macro_name} cannot be displayed." macros: @@ -4016,7 +4220,7 @@ fa: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4046,7 +4250,7 @@ fa: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4145,7 +4349,7 @@ fa: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: User activation limit reached - message: | + message_html: | A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). The user cannot activate their account since the user limit has been reached. steps: @@ -4331,6 +4535,12 @@ fa: permission_manage_versions: "Manage versions" permission_manage_wiki: "Manage wiki" permission_manage_wiki_menu: "Manage wiki menu" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Move work packages" permission_protect_wiki_pages: "Protect wiki pages" permission_rename_wiki_pages: "Rename wiki pages" @@ -4476,10 +4686,10 @@ fa: info: "Deleting the repository is an irreversible action." info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." managed_path_note: "The following directory will be erased: %{path}" - repository_verification: "Enter the project's identifier %{identifier} to verify the deletion of its repository." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Do you really want to delete the %{repository_type} of the project %{project_name}?" - subtitle_not_managed: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" - title: "Delete the %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Remove the linked %{repository_type}?" errors: build_failed: "Unable to create the repository with the selected configuration. %{reason}" @@ -4529,7 +4739,7 @@ fa: storage: not_available: "Disk storage consumption is not available for this repository." update_timeout: "Keep the last required disk space information for a repository for N minutes.\nAs counting the required disk space of a repository may be costly, increase this value to reduce performance impact." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4574,15 +4784,15 @@ fa: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4679,7 +4889,7 @@ fa: setting_work_package_properties: "Work package properties" setting_work_package_startdate_is_adddate: "Use current date as start date for new work packages" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Log user login, name, and mail address for all requests" setting_login_required: "Authentication required" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4760,6 +4970,12 @@ fa: setting_welcome_text: "Welcome block text" setting_welcome_title: "Welcome block title" setting_welcome_on_homescreen: "Display welcome block on homescreen" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Working days" @@ -4926,10 +5142,12 @@ fa: section_work_week: "هفته کاری" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Plain text" @@ -5051,6 +5269,10 @@ fa: text_plugin_assets_writable: "Plugin assets directory writable" text_powered_by: "Powered by %{link}" text_project_identifier_info: "Only lower case letters (a-z), numbers, dashes and underscores are allowed, must start with a lower case letter." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassign to work package:" text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' text_repository_usernames_mapping: "Select or update the OpenProject user mapped to each username found in the repository log.\nUsers with the same OpenProject and repository username or email are automatically mapped." @@ -5158,18 +5380,18 @@ fa: version_status_locked: "locked" version_status_open: "باز" note: Note - note_password_login_disabled: "Password login has been disabled by %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Warning warning_attachments_not_saved: "%{count} file(s) could not be saved." - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5229,7 +5451,7 @@ fa: reminders: label_remind_at: "تاریخ" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5260,8 +5482,8 @@ fa: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5381,6 +5603,7 @@ fa: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/fi.yml b/config/locales/crowdin/fi.yml index a7244449a04..812116930db 100644 --- a/config/locales/crowdin/fi.yml +++ b/config/locales/crowdin/fi.yml @@ -108,7 +108,7 @@ fi: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ fi: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -607,6 +667,14 @@ fi: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -767,6 +835,11 @@ fi: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -999,9 +1072,9 @@ fi: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Tämä käyttäjä ei ole projektin jäsen. open_profile: "Open profile" @@ -1056,6 +1129,64 @@ fi: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Teksti" placeholder_users: @@ -1063,11 +1194,11 @@ fi: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1099,8 +1230,8 @@ fi: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1365,7 +1496,7 @@ fi: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "tai kirjaudu sisään jo olemassa olevalle tilille" signup_with_auth_provider: "tai rekisteröidy käyttäen" - auth_source_login: Kirjaudu sisään käyttäjänä %{login} aktivoidaksesi tilisi. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Kirjaudu sisään aktivoidaksesi tilisi. actionview_instancetag_blank_option: "Valitse" activemodel: @@ -1636,6 +1767,11 @@ fi: consented_at: "Hyväksytty" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1644,8 +1780,6 @@ fi: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Helppokäyttötoimintojen tila" auto_hide_popups: "Automatically hide success banners" @@ -1666,6 +1800,28 @@ fi: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Päättymispäivä" sharing: "Jakaminen" @@ -1720,6 +1876,8 @@ fi: before: "on oltava ennen %{date}." before_or_equal_to: "on oltava %{date} tai sitä ennen." blank: "ei voi olla sisällötön." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1756,8 +1914,9 @@ fi: less_than_or_equal_to: "täytyy olla pienempi tai yhtä suuri kuin %{count}." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is not the current user." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "ei ole kelvollinen päivämäärä." not_a_datetime: "ei ole kelvollinen aika." @@ -1788,6 +1947,10 @@ fi: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "on väärän pituinen (täytyy olla täsmälleen %{count} merkkiä)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1898,6 +2061,9 @@ fi: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "edelleen käytössä tehtävissä: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2103,6 +2269,10 @@ fi: description: "\"Salasanan vahvistus\" -kentän arvon tulee olla identtinen \"Uusi salasana\" -kentän arvon kanssa." status: invalid_on_create: "ei ole kelvollinen tila uusille käyttäjille." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Valitse vähintään yksi käyttäjä tai ryhmä." role_blank: "need to be assigned." @@ -2369,7 +2539,7 @@ fi: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: create @@ -2809,7 +2979,7 @@ fi: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2826,10 +2996,8 @@ fi: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2917,8 +3085,8 @@ fi: work_package_edit: "Tehtävää muokattu" work_package_note: "Kommentti lisätty tehtävään" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Vie" @@ -3169,6 +3337,7 @@ fi: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3176,9 +3345,9 @@ fi: links: configuration_guide: "Configuration guide" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "Heti kun tilisi on aktivoitu voit kirjatua painamalla %{signin}." - instructions_after_logout: "Voit kirjautua sisään uudelleen napsauttamalla %{signin}." - instructions_after_error: "Voit kirjautua uudelleen napsauttamalla %{signin}. Jos virhe toistuu, pyydä apua järjestelmävalvojalta." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3370,6 +3539,8 @@ fi: label_calendar_show: "Näytä kalenteri" label_category: "Kategoria" label_completed: Completed + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Käyttäjän suostumus" label_wiki_menu_item: Wiki-valikkovaihtoehto label_select_main_menu_item: Valitse uusi valikkovaihtoehto päävalikkoon @@ -3536,6 +3707,7 @@ fi: label_subject_or_id: "Aihe tai ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Tunniste" + label_project_identifier: "Project identifier" label_in: "tässä" label_in_less_than: "pienempi kuin" label_in_more_than: "suurempi kuin" @@ -3669,11 +3841,13 @@ fi: label_news_view_all: "Näytä kaikki uutiset" label_next: "Seuraava" label_next_week: "Seuraava viikko" + label_next_year: "Next year" label_no_change_option: "(Ei muutosta)" label_no_data: "Ei tietoja" label_no_due_date: "no finish date" label_no_start_date: "ei aloituspäivää" label_no_parent_page: "Ei yläsivua" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Ei näytettävää" label_nobody: "ei kukaan" @@ -3702,6 +3876,8 @@ fi: label_overall_activity: "Kaikki tapahtumat" label_overview: "Yleiskatsaus" label_page_title: "Page title" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "osana" label_password_lost: "Unohditko salasanasi?" label_password_rule_lowercase: "Pienet kirjaimet" @@ -3728,6 +3904,7 @@ fi: label_preview_not_available: "Preview not available" label_previous: "Edellinen" label_previous_week: "Edellinen viikko" + label_previous_year: "Previous year" label_principal_invite_via_email: " tai kutsu uusia käyttäjiä sähköpostilla" label_principal_search: "Lisää olemassa olevia käyttäjiä tai ryhmiä" label_privacy_policy: "Data privacy and security policy" @@ -3839,6 +4016,7 @@ fi: label_start_to_start: "start to start" label_statistics: "Tilastot" label_status: "Tila" + label_status_plural: "Statuses" label_storage_free_space: "Vapaa levytila" label_storage_used_space: "Käytetty levytila" label_storage_group: "Storage filesystem %{identifier}" @@ -3867,6 +4045,7 @@ fi: label_title: "Otsikko" label_projects_menu: "Projektit" label_today: "tänään" + label_today_capitalized: "Tänään" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3887,7 +4066,7 @@ fi: label_user: "Käyttäjä" label_user_and_permission: "Users and permissions" label_user_named: "Käyttäjä %{name}" - label_user_activity: "Käyttäjän %{value} historia" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonyymi" label_user_menu: "User menu" label_user_new: "Uusi käyttäjä" @@ -3974,6 +4153,15 @@ fi: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "eilen" label_zen_mode: "Zen mode" label_role_type: "Tyyppi" @@ -3982,6 +4170,22 @@ fi: label_not_changeable: "(ei vaihdettavissa)" label_global: "Yleinen" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Error executing the macro %{macro_name}" macro_unavailable: "Macro %{macro_name} cannot be displayed." macros: @@ -4016,7 +4220,7 @@ fi: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4046,7 +4250,7 @@ fi: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4145,7 +4349,7 @@ fi: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: User activation limit reached - message: | + message_html: | A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). The user cannot activate their account since the user limit has been reached. steps: @@ -4331,6 +4535,12 @@ fi: permission_manage_versions: "Hallinnoi versioita" permission_manage_wiki: "Hallinnoi wikiä" permission_manage_wiki_menu: "Hallinnoi Wiki-valikkoa" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Siirrä tehtäviä" permission_protect_wiki_pages: "Suojaa wiki sivut" permission_rename_wiki_pages: "Uudelleennimeä wiki sivuja" @@ -4476,10 +4686,10 @@ fi: info: "Deleting the repository is an irreversible action." info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." managed_path_note: "The following directory will be erased: %{path}" - repository_verification: "Enter the project's identifier %{identifier} to verify the deletion of its repository." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Do you really want to delete the %{repository_type} of the project %{project_name}?" - subtitle_not_managed: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" - title: "Delete the %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Remove the linked %{repository_type}?" errors: build_failed: "Ei voi luoda säilytyspaikka kanssa valitun kokoonpanon. %{reason}" @@ -4529,7 +4739,7 @@ fi: storage: not_available: "Disk storage consumption is not available for this repository." update_timeout: "Keep the last required disk space information for a repository for N minutes.\nAs counting the required disk space of a repository may be costly, increase this value to reduce performance impact." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4574,15 +4784,15 @@ fi: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4679,7 +4889,7 @@ fi: setting_work_package_properties: "Tehtävän ominaisuudet" setting_work_package_startdate_is_adddate: "Käytä nykyistä päivämäärää uuden tehtävän aloistuspäivänä" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Kirjaa lokiin käyttäjien kirjautumiset, nimet ja sähköpostiosoitteet kaikista pyynnöistä" setting_login_required: "Pakollinen kirjautuminen" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4760,6 +4970,12 @@ fi: setting_welcome_text: "Tervehdysteksti" setting_welcome_title: "Tervehdyspalkki" setting_welcome_on_homescreen: "Näytä tervehdyspalkki kotinäkymässä" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Working days" @@ -4926,10 +5142,12 @@ fi: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Plain text" @@ -5051,6 +5269,10 @@ fi: text_plugin_assets_writable: "Plugin varat hakemisto kirjoitettavissa" text_powered_by: "Powered by %{link}" text_project_identifier_info: "Vain pienet kirjaimet (a-z), numerot, väliviivat ja alaviivat ovat sallittuja. Ensimmäisenä tulee olla pieni kirjain." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassign to work package:" text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' text_repository_usernames_mapping: "Valitse päivittääksesi Redmine käyttäjä jokaiseen käyttäjään joka löytyy tietovaraston lokista.\nKäyttäjät joilla on sama Redmine ja tietovaraston käyttäjänimi tai sähköpostiosoite, yhdistetään automaattisesti." @@ -5158,18 +5380,18 @@ fi: version_status_locked: "lukittu" version_status_open: "avoin" note: Huomautus - note_password_login_disabled: "Password login has been disabled by %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Varoitus warning_attachments_not_saved: "%{count} tiedostoa ei voitu tallentaa." - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5229,7 +5451,7 @@ fi: reminders: label_remind_at: "Päivämäärä" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5260,8 +5482,8 @@ fi: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5381,6 +5603,7 @@ fi: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/fil.yml b/config/locales/crowdin/fil.yml index ab0051bcdf2..43dd1fb8bd0 100644 --- a/config/locales/crowdin/fil.yml +++ b/config/locales/crowdin/fil.yml @@ -108,7 +108,7 @@ fil: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ fil: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -607,6 +667,14 @@ fil: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -767,6 +835,11 @@ fil: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -999,9 +1072,9 @@ fil: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Ang user na ito ay kasalukuyang hindi myembro ng proyekto. open_profile: "Open profile" @@ -1056,6 +1129,64 @@ fil: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Teksto" placeholder_users: @@ -1063,11 +1194,11 @@ fil: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1099,8 +1230,8 @@ fil: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1365,7 +1496,7 @@ fil: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "o kaya ay mag-sig in sa pamamagitan ng iyong umiiral na akawnt" signup_with_auth_provider: "o mag-sign up gamit ang" - auth_source_login: Mangyaring mag-login bilang isang %{login} upang i-aktibi ang iyong akwant. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Mangyaring mag-login upang i-aktibo ang iyong akwant. actionview_instancetag_blank_option: "Pakiusap pumili" activemodel: @@ -1636,6 +1767,11 @@ fil: consented_at: "Consented at" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1644,8 +1780,6 @@ fil: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Aksezibilidad mode" auto_hide_popups: "Automatically hide success banners" @@ -1666,6 +1800,28 @@ fil: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Finish date" sharing: "Pagbababahagi" @@ -1720,6 +1876,8 @@ fil: before: "dapat ay bago ang %{date}." before_or_equal_to: "dapat ay bago o katumbas sa %{date}." blank: "hindi pwedeng blanko." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1756,8 +1914,9 @@ fil: less_than_or_equal_to: "dapat ay hindi baba o katumbas sa %{count}." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is not the current user." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "ay hindi balido ang petsa." not_a_datetime: "ay hindi balido ang petsa ng oras." @@ -1788,6 +1947,10 @@ fil: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "ay ang maling haba (dapat ay %{count} ang mga karakter)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1898,6 +2061,9 @@ fil: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "ginagamit pa sa mga work packages: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2103,6 +2269,10 @@ fil: description: "'Kompirmasyon ng password' ay dapat tugma sa input ng 'Bagong password' na patlang." status: invalid_on_create: "ay hindi isang balidong estado para sa mga bagong gumagamit." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Mangayring pumili na kahit isang gumagamit o grupo." role_blank: "need to be assigned." @@ -2369,7 +2539,7 @@ fil: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: create @@ -2809,7 +2979,7 @@ fil: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2826,10 +2996,8 @@ fil: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2917,8 +3085,8 @@ fil: work_package_edit: "Naka-edit ang work package" work_package_note: "Nadagdag ang talaan ng work package" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "I-export" @@ -3169,6 +3337,7 @@ fil: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3176,9 +3345,9 @@ fil: links: configuration_guide: "Gabay ng kumpigurasyon" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "Maari kang mag-sign in sa lalong madaling panahon bilang ang iyong akwant ay naka-aktibo sa pamamagitan ng pagpipindut%{signin}." - instructions_after_logout: "Maari kang maka-sign in ulit sa pamamagitan ng pagpipindut %{signin}." - instructions_after_error: "Maaring mong subukan muli sa pamamagitan ng pagpipindut %{signin}. kung ang mali ay nagpatuloy, magtanong sa namuno para sa tulong." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3370,6 +3539,8 @@ fil: label_calendar_show: "Ipakita ang kalendaryo" label_category: "Kategorya" label_completed: Completed + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "User Consent" label_wiki_menu_item: Ang aytem ng wiki na pagpipilian label_select_main_menu_item: Piliin ang bagong pangunahing pagpipilian aytem @@ -3536,6 +3707,7 @@ fil: label_subject_or_id: "Subject or ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Ang pagkakakilanlan" + label_project_identifier: "Project identifier" label_in: "sa" label_in_less_than: "mas mababa kaysa" label_in_more_than: "mahigit sa" @@ -3669,11 +3841,13 @@ fil: label_news_view_all: "Tanawin lahat ang mga balita" label_next: "Susunod" label_next_week: "Susunod na linggo" + label_next_year: "Next year" label_no_change_option: "( Walang pagbago)" label_no_data: "Walang data upang ipakita" label_no_due_date: "no finish date" label_no_start_date: "walang simulang petsa" label_no_parent_page: "No parent page" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Walang maipakita" label_nobody: "walang sinuman" @@ -3702,6 +3876,8 @@ fil: label_overall_activity: "Pangkalahatang gawain" label_overview: "Buod" label_page_title: "Page title" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "bahagi ng" label_password_lost: "Nakalimutan ang iyong password?" label_password_rule_lowercase: "Lowercase" @@ -3728,6 +3904,7 @@ fil: label_preview_not_available: "Preview not available" label_previous: "Nakaraan" label_previous_week: "Nakaraang linggo" + label_previous_year: "Previous year" label_principal_invite_via_email: " o imbitahin ang bagong gumagamit sa pamamagitan ng email" label_principal_search: "Magdagdag ng umiiral na mga user o grupo" label_privacy_policy: "Data privacy and security policy" @@ -3839,6 +4016,7 @@ fil: label_start_to_start: "simula hanggang simula" label_statistics: "Istatistika" label_status: "Estado" + label_status_plural: "Statuses" label_storage_free_space: "Natitirang espasyo ng disk" label_storage_used_space: "Nagamit na espasyo ng disk" label_storage_group: "Lalagyan ng filesystem %{identifier}" @@ -3867,6 +4045,7 @@ fil: label_title: "Pamagat" label_projects_menu: "Mga proyekto" label_today: "ngayon" + label_today_capitalized: "Today" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3887,7 +4066,7 @@ fil: label_user: "Gumagamit" label_user_and_permission: "Users and permissions" label_user_named: "User %{name}" - label_user_activity: "%{value} aktibidad" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Hindi kilala" label_user_menu: "User menu" label_user_new: "Bagong gumagamit" @@ -3974,6 +4153,15 @@ fil: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "kahapon" label_zen_mode: "Zen mode" label_role_type: "Uri" @@ -3982,6 +4170,22 @@ fil: label_not_changeable: "(not changeable)" label_global: "Global" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "May mali habang isinasagawa ang macro %{macro_name}" macro_unavailable: "Macro %{macro_name} hindi naka-display." macros: @@ -4016,7 +4220,7 @@ fil: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4046,7 +4250,7 @@ fil: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4145,7 +4349,7 @@ fil: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: User activation limit reached - message: | + message_html: | A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). The user cannot activate their account since the user limit has been reached. steps: @@ -4331,6 +4535,12 @@ fil: permission_manage_versions: "Pamahalain ang mga bersyon" permission_manage_wiki: "Pamahalain ang wiki" permission_manage_wiki_menu: "Pagpipilian ng pamahalaing wiki" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Ilipat ang work package" permission_protect_wiki_pages: "Protektahan ang mga wiki package" permission_rename_wiki_pages: "Baguhin ang pangalan ng mga wiki na pahina" @@ -4474,10 +4684,10 @@ fil: info: "Pagbubura ng repositoryo ay isang hindi mababawi ang aksyon." info_not_managed: "Tandaan: Ito ay HINDI tatanggalin ang mga nilalaman sa repositoryi ito, bilang ito ay hindi pinamahalaan sa OpenProject." managed_path_note: "Ang sumusunod na direktoryo ay buburahin: %{path}" - repository_verification: "Ipasok ang pagkakilanlan ng proyekto %{identifier} upang matiyak ang pagbubuta ng repositoryo ito." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Gusto mo ba talaga na burahin ang %{repository_type} ng proyektong %{project_name}?" - subtitle_not_managed: "Gusto mo ba talaga na alisin ang naka-link %{repository_type}%{url} mula sa proyektong%{project_name}?" - title: "Burahin ang %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Alisin ang naka-link %{repository_type}?" errors: build_failed: "Hindi makalikha ng repositoryo sa napiling kumpigurasyon. %{reason}" @@ -4527,7 +4737,7 @@ fil: storage: not_available: "Ang konsumo ng disk storage ay hindi available para sa ganitong repository." update_timeout: "Panatilihin ang huling kailangang espasyo disk impormasyon para sa repositoryo ng N minuto.\nBilang pagbibilang ang kailangang espasyo ng disk ng repositoryo ay maaring gastos, palakihin ang hakaga na ito upang mabawasan ang epekto ng pagganap." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4572,15 +4782,15 @@ fil: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4677,7 +4887,7 @@ fil: setting_work_package_properties: "Ang mga property ng work package" setting_work_package_startdate_is_adddate: "Gamitin ang kasulukuyang petsa bilang pagsisimula ng petsa para sa mga bagong work package" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Log user login, pangalan at mga mail address para sa lahat na hiling" setting_login_required: "Kailangan ng pagpapatunay" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4758,6 +4968,12 @@ fil: setting_welcome_text: "Teskstong welcome block" setting_welcome_title: "Titulo ng welcome back" setting_welcome_on_homescreen: "I-display ang welcome block sa homescreen" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Working days" @@ -4924,10 +5140,12 @@ fil: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Plain text" @@ -5049,6 +5267,10 @@ fil: text_plugin_assets_writable: "Plugin asstes directory writable" text_powered_by: "Pinalatakbo ng %{link}" text_project_identifier_info: "Maliit na titik lamang (a-z), mga numero, mga dash at underscore ang pinahintulutan, dapat magsimula sa maliit na titik." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "I-reassign sa work package:" text_regexp_multiline: 'Ang regex ay nakalagay sa multi-line mlde. hal., ^---\s+' text_repository_usernames_mapping: "Piliin o i-update ang OpenProject usrt naka-map sa bawat username nakita sa repositoryo log.\nAng mga gumagamit sa kaparehong OpenProject at repositoryong username o ang email ay automatikong naka-map." @@ -5156,18 +5378,18 @@ fil: version_status_locked: "nakakandado" version_status_open: "buksan" note: Talaan - note_password_login_disabled: "Ang paglog-in sa password ay di gumagana dahil sa %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Babala warning_attachments_not_saved: "%{count} na(mga) file ay hindi mai-save." - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | Ang pagaaktibo ng email ay nag-expire na. Nagpadala kami ng isang bagi sa %{email}. Mangyaring pindutin ang link sa loob nito. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5227,7 +5449,7 @@ fil: reminders: label_remind_at: "Petsa" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5258,8 +5480,8 @@ fil: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5379,6 +5601,7 @@ fil: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/fr.yml b/config/locales/crowdin/fr.yml index 8ae638ca522..614d83f5665 100644 --- a/config/locales/crowdin/fr.yml +++ b/config/locales/crowdin/fr.yml @@ -108,7 +108,7 @@ fr: jemalloc_allocator: Allocateur de mémoire Jemalloc journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + Les actions de l'utilisateur sur un lot de travaux (modification de la description, du statut, des valeurs ou rédaction de commentaires) sont regroupées si elles sont effectuées au cours de cette période. Il contrôle également les délais de notification et de [webhook](webhook_link). import: title: "Importation" jira: @@ -379,11 +379,71 @@ fr: project_creation: "Création d'un projet" notification_text_default: >

Bonjour,

Un nouveau projet a été créé : projectValue:name

Nous vous remercions de votre attention et vous prions d'agréer nos salutations distinguées.

+ work_packages_identifier: + page_header: + description: Vous avez le choix entre des identifiants numériques de base pour les lots de travail et des identifiants spécifiques aux projets qui ajoutent l'identifiant du projet à l'identifiant du lot de travail. + banner: + existing_identifiers_notice: > + Les identifiants existants de %{project_count} projets ne répondent pas aux exigences des identifiants alphanumériques basés sur les projets. OpenProject peut les mettre à jour automatiquement pour qu'ils soient valides, comme dans les exemples ci-dessous. Cliquez sur "Autofixer et sauvegarder" pour mettre à jour les identifiants de tous les projets de cette manière et activer les identifiants alphanumériques basés sur le projet. + box_header: + label_project: Projet + label_previous_identifier: Identifiant précédent + label_autofixed_suggestion: Futur identifiant + label_example_work_package_id: Exemple d'identifiant de lot de travaux + autofix_preview: + error_too_long: Doit avoir moins de 5 caractères + error_special_characters: Caractères spéciaux non autorisés + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 projet supplémentaire" + other: "... %{count} projets supplémentaires" + button_autofix: Réparer automatiquement et enregistrer + dialog: + title: Modifier les identifiants de lots de travaux + heading: Activer les ID de lots de travaux basés sur le projet ? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Modifier les identifiants + checkbox_label: Je comprends que cela changera définitivement tous les identifiants du lot de travaux + success_banner: Le format de l'identifiant du lot de travaux a été mis à jour. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Transitions par défaut" user_author: "L'utilisateur est l'auteur" user_assignee: "L'utilisateur est la personne assignée" + index: + description: "Configurez les transitions d'état pour chaque type de lot de travail." + type_filter: + label: "Filtrer par nom de type…" + status_button: "Statut" + statuses_dialog: + title: "Statuts" + label: "Statuts activés pour ce type" + caption: "Ajoutez ou supprimez les statuts que vous souhaitez associer à ce type. La suppression d'un statut entraîne également la suppression du flux de travail qui lui est associé." + statuses_removal_dialog: + title: "Supprimer des statuts" + heading: + one: "Supprimer un statut ?" + other: "Supprimer %{count} statuts ?" + description: "La suppression de ces statuts les rendra indisponibles pour ce type et supprimera les flux de travail existants. Êtes-vous sûr de vouloir continuer ?" + confirm: "Supprimer" + leave_confirmation: + title: "Enregistrer les modifications avant de continuer ?" + description: "Vous êtes sur le point de quitter cette page mais vous avez des modifications non enregistrées. Souhaitez-vous les enregistrer avant de continuer ?" + ignore: "Ignorer les changements" + save: "Enregistrer les modifications et continuer" + role_selector: + label: "Rôle : %{role}" + no_role: "Sélectionner un rôle" + blankslate: + title: "Aucune transition de statut configurée" + description: "Ajouter des statuts pour commencer à configurer des workflows pour ce rôle" + info: + database_deprecation_html: > + À partir d'OpenProject 16.0, PostgreSQL 16 est nécessaire pour utiliser OpenProject. Votre installation restera fonctionnelle avec votre base de données actuelle, mais anticipez l'incompatibilité dans les versions futures.
Nous avons préparé des [guides de mise à jour pour toutes les méthodes d'installation](upgrade_guide). Vous pouvez effectuer la mise à jour avant la prochaine version à tout moment en suivant les guides. authentication: login_and_registration: "Connexion et inscription" announcements: @@ -607,6 +667,14 @@ fr: danger_dialog: confirmation_live_message_checked: "Le bouton pour continuer est maintenant actif." confirmation_live_message_unchecked: "Le bouton pour continuer est maintenant inactif. Vous devez cocher la case pour continuer." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "L'URL à laquelle le serveur MCP OpenProject sera joignable. Requis pour la configuration des clients MCP." @@ -767,6 +835,11 @@ fr: description: > Le projet ne sera visible que par les membres du projet en fonction de leur rôle et des autorisations associées. Les sous-projets ne sont pas affectés et ont leurs propres paramètres. change_identifier: Changer l'identifiant + change_identifier_dialog_title: Modifier l'identifiant du projet + change_identifier_format_hint_semantic: "Uniquement des lettres majuscules (A-Z), des chiffres ou des traits de soulignement. Maximum 10 caractères. Doit commencer par une lettre." + change_identifier_format_hint_legacy: "Uniquement des lettres minuscules (a-z), des chiffres, des tirets ou des traits de soulignement." + change_identifier_warning: > + Cela modifiera de manière permanente les identifiants et les URL de tous les work packages de ce projet. L'identifiant et l'URL précédents continueront néanmoins à être redirigés correctement. subitems: template_section: > Sélectionnez les modèles à utiliser lors de la création de nouveaux sous-postes. @@ -999,9 +1072,9 @@ fr: groups: member_in_these_groups: "Cet utilisateur est actuellement membre des groupes suivants :" no_results_title_text: Cet utilisateur n'est actuellement membre d'aucun groupe. - summary_with_more: Membre de %{names} et %{count_link}. + summary_with_more_html: Membre de %{names} et %{count_link}. more: "%{count} de plus" - summary: Membre de %{names}. + summary_html: Membre de %{names}. memberships: no_results_title_text: Cet utilisateur n'est membre d'aucun projet pour le moment. open_profile: "Ouvrir le profil" @@ -1056,6 +1129,64 @@ fr: user: "L'utilisateur peut maintenant se connecter pour accéder à %{project}. En attendant, vous pouvez déjà compter sur cet utilisateur et l'assigner à des lots de travaux, par exemple." placeholder_user: "L'utilisateur fictif peut maintenant être utilisé dans %{project}. En attendant, vous pouvez déjà planifier des tâches avec cet utilisateur et l'assigner à des lots de travaux, par exemple." group: "Le groupe fait maintenant partie du projet %{project}. En attendant, vous pouvez déjà compter sur ce groupe et l'assigner à des lots de travaux, par exemple." + working_hours: + current_schedule: + title: "Planification actuelle" + work_days: "Journées de travail" + work_hours: "Heures de travail" + availability_factor: "Facteur de disponibilité" + availability_subtitle: "Dédié au travail de projet" + effective_hours: "Horaire de travail effectif" + effective_subtitle: "Par semaine" + not_set: "Non défini" + future: + title: "Futures planifications" + description: "Planifiez à l'avance les changements d'horaires de travail. Une fois la date arrivée, vos horaires de travail seront automatiquement mis à jour." + add_button: "Ajouter un futur horaire" + blank_title: "Aucun calendrier futur n'est prévu" + blank_description: "Créer un calendrier futur pour planifier les changements à l'avance" + history: + title: "Historique des horaires" + description: "Visualisez vos calendriers de travail passés." + blank_title: "Pas encore d'historique des horaires" + blank_description: "Les changements d'horaire antérieurs seront affichés ici" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Date de début" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Journées de travail" + working_hours_label: "Heures de travail" + hours_mode_label: "Hours mode" + same_hours_mode: "Mêmes heures par jour" + individual_hours_mode: "Heures individuelles par jour" + work_hours: "Heures de travail" + hours_per_day: "Heures par jour" + per_day: "par jour" + per_week: "par semaine" + total_work_hours: "Heures de travail totales " + availability_description: "Le facteur de disponibilité représente le pourcentage réel de votre temps de travail consacré aux tâches du projet. Il tient compte des réunions, des courriels, du travail administratif et d'autres activités non liées au projet." + availability_factor: "Facteur de disponibilité" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Facteur de disponibilité" + title_days_and_hours: "Jours et heures" + title_future_dates: "Dates futures" + table: + mobile_title: "Horaires de travail" + start_date: "Date de début" + work_days: "Journées de travail" + work_hours: "Heures de travail" + availability_factor: "Facteur de disponibilité" + effective_work_hours: "Heures de travail effectives" + work_days_count: + one: "1 jour ouvrable" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Texte" placeholder_users: @@ -1063,11 +1194,11 @@ fr: Vous n'avez pas le droit de supprimer l'utilisateur fictif. Vous n'avez pas le droit de gérer les membres de tous les projets dont l'utilisateur fictif est membre. delete_tooltip: "Supprimer l’utilisateur fictif" deletion_info: - heading: "Supprimer l’utilisateur fictif %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > Toutes les occurrences de l'utilisateur fictif (par exemple, en tant que responsable ou autre valeur utilisateur) seront réaffectées à un compte appelé « Utilisateur supprimé ». Comme les données de chaque compte supprimé sont réaffectées à ce compte, il ne sera pas possible de distinguer les données que l'utilisateur a créées des données d'un autre compte supprimé. irreversible: "Cette action est irréversible" - confirmation: "Saisissez le nom d'utilisateur fictif %{name} pour confirmer sa suppression." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1098,9 +1229,10 @@ fr: Les nouveaux lots de travaux sont définis par défaut sur ce type. Ils ne peuvent pas être en lecture seule. status_excluded_from_totals_text: |- Cochez cette option pour exclure les lots de travaux ayant ce statut des totaux de Travail, Travail restant et % réalisé dans une hiérarchie. - status_percent_complete_text: |- - En mode de calcul de la progression basé sur le statut, le pourcentage d'achèvement d'un lot de travaux est automatiquement fixé sur cette valeur lorsque ce statut est sélectionné. - Cette valeur est ignorée en mode basé sur le travail. + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work + package is automatically set to this value when this status is selected. + Ignored in work-based mode. status_readonly_html: | Cochez cette option pour marquer les lots de travaux avec ce statut en lecture seule. Aucun attribut ne peut être modifié à l'exception du statut. @@ -1363,7 +1495,7 @@ fr: L'inscription est limitée pour le fournisseur d'authentification unique '%{name}'. Veuillez demander à un administrateur d'activer le compte pour vous ou de modifier la limite d'auto-inscription pour ce fournisseur. login_with_auth_provider: "ou connectez-vous avec votre compte existant" signup_with_auth_provider: "ou inscrivez-vous à l'aide de" - auth_source_login: Veuillez vous connecter en tant que %{login} pour activer votre compte. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Veuillez vous connecter pour activer votre compte. actionview_instancetag_blank_option: "Veuillez sélectionner" activemodel: @@ -1634,6 +1766,11 @@ fr: consented_at: "Consenti à" group: identity_url: "URL d'identité" + parent: "Groupe parent" + organizational_unit: "Unité organisationnelle" + group_detail: + parent: "Groupe parent" + organizational_unit: "Unité organisationnelle" user_preference: header_look_and_feel: "Apparence et ergonomie" header_alerts: "Alertes" @@ -1642,8 +1779,6 @@ fr: button_update_user_information: "Mettre à jour le profil" comments_sorting: "Afficher l'activité du lot de travaux triée par" disable_keyboard_shortcuts: "Désactiver les raccourcis clavier" - disable_keyboard_shortcuts_caption_html: |- - Vous pouvez choisir de désactiver les raccourcis clavier par défaut si vous utilisez un lecteur d'écran ou si vous voulez éviter de déclencher accidentellement une action avec un raccourci. dismissed_enterprise_banners: "Bannières d'entreprise masquées" impaired: "Mode d'accessibilité" auto_hide_popups: "Masquer automatiquement les bannières de réussite" @@ -1664,6 +1799,28 @@ fr: users/invitation/form_model: principal_type: "Type d'invitation" id_or_email: "Nom ou adresse e-mail" + user_non_working_time: + start_date: "Date de début" + end_date: "Date de fin" + user_working_hours: + valid_from: "Valable à partir du" + monday: "Lundi" + monday_hours: "Horaires du lundi" + tuesday: "Mardi" + tuesday_hours: "Horaires du mardi" + wednesday: "Mercredi" + wednesday_hours: "Horaires du mercredi" + thursday: "Jeudi" + thursday_hours: "Horaires du jeudi" + friday: "Vendredi" + friday_hours: "Horaires du vendredi" + saturday: "Samedi" + saturday_hours: "Heures du samedi" + sunday: "Dimanche" + sunday_hours: "Horaires du dimanche" + availability_factor: "Facteur de disponibilité" + shared_hours: "Heures de travail" + days: "Working days" version: effective_date: "Date de fin" sharing: "Partage" @@ -1718,6 +1875,8 @@ fr: before: "doit être antérieur(e) à %{date}." before_or_equal_to: "doit être antérieur(e) ou égal(e) à %{date}." blank: "ne peut pas être vide." + not_before_start_date: "ne doit pas être avant la date de début." + overlapping_range: "chevauche une plage de jours non ouvrables existante." blank_nested: "doit avoir la propriété « %{property} » définie." cannot_delete_mapping: "est requis. Ne peut être supprimé." is_for_all_cannot_modify: "s'applique à tous les projets et ne peut donc pas être modifié." @@ -1754,8 +1913,9 @@ fr: less_than_or_equal_to: "doit être inférieur ou égal à %{count}." not_available: "n'est pas disponible en raison d'une configuration système." not_deletable: "ne peut pas être supprimé" + not_editable: "ne peut pas être modifiée car elle est déjà en vigueur." not_current_user: "n'est pas l'utilisateur actuel." - only_one_active_sprint_allowed: "un seul sprint actif est autorisé par projet." + system_wide_non_working_day_exists: "entre en conflit avec un jour chômé existant dans le système pour cette date." not_found: "introuvable." not_a_date: "n'est pas une date valide." not_a_datetime: "n'est pas une heure valide." @@ -1786,6 +1946,10 @@ fr: ne fournit pas de « Contexte sécurisé ». Utilisez soit HTTPS, soit une adresse de bouclage, comme localhost. wrong_length: "est de mauvaise longueur (devrait être %{count} caractères)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1896,6 +2060,9 @@ fr: project_initiation_request_disabled: "La demande de lancement du projet est désactivée. Elle doit être activée pour créer le lot de travaux de l'artefact." types: in_use_by_work_packages: "toujours en cours d'utilisation par les lots de travaux : %{types}" + identifier: + must_start_with_letter: "doit commencer par une lettre" + no_special_characters: "ne peut contenir que des lettres majuscules, des chiffres et des traits de soulignement" enabled_modules: dependency_missing: "Le module « %{dependency} » doit également être activé car le module « %{module} » en dépend." format: "%{message}" @@ -2101,6 +2268,10 @@ fr: description: "La confirmation du mot de passe doit correspondre à celui saisi dans le champ “Nouveau mot de passe”." status: invalid_on_create: "n’est pas un statut valide pour les nouveaux utilisateurs." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Veuillez choisir au moins un utilisateur ou un groupe." role_blank: "doit être assigné." @@ -2367,8 +2538,8 @@ fr: L'activation des sauvegardes permettra à tout utilisateur ayant les autorisations requises et ce jeton de sauvegarde de télécharger une sauvegarde contenant toutes les données de cette installation OpenProject. Cela inclut les données de tous les autres utilisateurs. info: > Vous devrez générer un jeton de sauvegarde pour pouvoir créer une sauvegarde. Vous devrez fournir ce jeton à chaque fois que vous demanderez une sauvegarde. Vous pouvez supprimer le jeton de sauvegarde pour désactiver les sauvegardes pour cet utilisateur. - verification: > - Entrez %{word} pour confirmer que vous souhaitez %{action} le jeton de sauvegarde. + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: réinitialiser verification_word_create: créer warning: > @@ -2807,7 +2978,7 @@ fr: title: one: "Un jour restant pour le jeton d'essai %{trial_plan}" other: "%{count} jours restants pour le jeton d'essai %{trial_plan}" - description: "Vous avez accès à toutes les fonctionnalités %{trial_plan}." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "Vous avez demandé un jeton d'essai, mais cette demande n'est plus disponible. Veuillez réessayer." wait_for_confirmation: "Nous vous avons envoyé un e-mail pour confirmer votre adresse afin de récupérer un jeton d'essai." @@ -2824,10 +2995,8 @@ fr: confirmation_subline: > Veuillez consulter votre boîte de réception et suivre les étapes pour commencer votre essai gratuit de 14 jours. domain_caption: Le jeton sera valable pour votre nom d'hôte actuellement configuré. - receive_newsletter_html: > - Je souhaite recevoir la lettre d'information d'OpenProject. - consent_html: > - J'accepte les conditions d'utilisation et la politique de confidentialité. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Désactivé." @@ -2915,8 +3084,8 @@ fr: work_package_edit: "Lot de travaux édité" work_package_note: "Note de lot de travaux ajoutée" title: - project: "Projet : %{name}" - subproject: "Sous-projet : %{name}" + project_html: "Projet : %{name}" + subproject_html: "Sous-projet : %{name}" export: dialog: title: "Exporter" @@ -3167,6 +3336,7 @@ fr: Mode de planification automatiquement ajusté avec la mise à jour de version. totals_removed_from_childless_work_packages: >- Les totaux de travail et de progression sont automatiquement supprimés pour les lots de travaux non parents avec la mise à jour de la version. Il s'agit d'une tâche de maintenance qui peut être ignorée. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Les lots de travaux enfants sans travail sont ignorés. total_percent_complete_mode_changed_to_simple_average: >- @@ -3174,9 +3344,9 @@ fr: links: configuration_guide: "Guide de configuration" get_in_touch: "Vous avez des questions ? Contactez-nous." - instructions_after_registration: "Vous pourrez vous connecter après avoir activé votre compte en cliquant sur %{signin}." - instructions_after_logout: "Vous pouvez vous ré-authentifier en cliquant sur %{signin}." - instructions_after_error: "Vous pouvez encore essayer de vous authentifier en cliquant sur %{signin}. Si l'erreur persiste, demandez de l'aide à votre administrateur." + instructions_after_registration_link: "Vous pourrez vous connecter après avoir activé votre compte en cliquant [Ici](%{signin}." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Intelligence artificielle (IA)" @@ -3368,6 +3538,8 @@ fr: label_calendar_show: "Afficher le calendrier" label_category: "Catégorie" label_completed: Terminé + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Accord de l'utilisateur" label_wiki_menu_item: Élément de menu wiki label_select_main_menu_item: Sélectionner nouvel élément de menu principal @@ -3534,6 +3706,7 @@ fr: label_subject_or_id: "Objet ou ID" label_calendar_subscriptions: "Abonnements au calendrier" label_identifier: "Identifiant" + label_project_identifier: "Identifiant de projet" label_in: "dans" label_in_less_than: "dans moins de" label_in_more_than: "dans plus de" @@ -3667,11 +3840,13 @@ fr: label_news_view_all: "Afficher toutes les actualités" label_next: "Suivante" label_next_week: "Semaine suivante" + label_next_year: "Année suivante" label_no_change_option: "(Aucun changement)" label_no_data: "Aucune donnée à afficher" label_no_due_date: "pas de date de fin" label_no_start_date: "pas de date de début" label_no_parent_page: "Aucune page parente" + label_no_parent_group: "(Pas de groupe de parents)" label_notification_center_plural: "Notifications" label_nothing_display: "Rien à afficher" label_nobody: "personne" @@ -3700,6 +3875,8 @@ fr: label_overall_activity: "Activité totale" label_overview: "Vue globale" label_page_title: "Titre de la page" + label_parent_group_caption: > + La définition d'un groupe parent fera de ce groupe un sous-groupe du groupe parent sélectionné. Il héritera également de toutes les adhésions, y compris les autorisations du groupe parent. label_part_of: "partie de" label_password_lost: "Mot de passe oublié ?" label_password_rule_lowercase: "Minuscules" @@ -3726,6 +3903,7 @@ fr: label_preview_not_available: "Aperçu indisponible." label_previous: "Précédent" label_previous_week: "Semaine précédente" + label_previous_year: "Année précédente" label_principal_invite_via_email: " ou inviter de nouveaux utilisateurs par e-mail" label_principal_search: "Ajouter des utilisateurs ou groupes existant" label_privacy_policy: "Politique de confidentialité et de sécurité des données" @@ -3837,6 +4015,7 @@ fr: label_start_to_start: "de début à début" label_statistics: "Statistiques" label_status: "Statut" + label_status_plural: "Statuses" label_storage_free_space: "Espace disque restant" label_storage_used_space: "Espace disque utilisé" label_storage_group: "Système de fichiers de stockage %{identifier}" @@ -3865,6 +4044,7 @@ fr: label_title: "Titre" label_projects_menu: "Projets" label_today: "aujourd'hui" + label_today_capitalized: "Aujourd'hui" label_token_version: "Version du jeton" label_today_as_start_date: "Sélectionnez la date d'aujourd'hui comme date de début." label_today_as_due_date: "Sélectionnez la date d'aujourd'hui comme date de fin." @@ -3885,7 +4065,7 @@ fr: label_user: "Utilisateur" label_user_and_permission: "Utilisateurs et autorisations" label_user_named: "Utilisateur %{name}" - label_user_activity: "Activité de %{value}" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonyme" label_user_menu: "Menu utilisateur" label_user_new: "Nouvel utilisateur" @@ -3972,6 +4152,15 @@ fr: one: "1 fichier" other: "%{count} fichiers" zero: "Aucun fichier" + label_x_days: + one: "un jour" + other: "%{count} jours" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Temps libre : 1 jour ouvrable" + other: "Temps libre : %{count} jours ouvrables" label_yesterday: "hier" label_zen_mode: "Mode zen" label_role_type: "Type" @@ -3980,6 +4169,22 @@ fr: label_not_changeable: "(non modifiable)" label_global: "Global" label_seeded_from_env_warning: Cet enregistrement a été créé grâce à une variable d'environnement de paramétrage. Il n'est pas modifiable via l'interface utilisateur. + label_schedule_and_availability: "Horaire et disponibilité" + label_working_hours: "Horaires de travail" + label_non_working_days: "Calendrier des disponibilités" + label_non_working_days_with_count: "Jours non ouvrables (%{count})" + label_non_working_days_summary: "Résumé" + button_add_non_working_time: "Temps libre" + button_edit_non_working_time: "Modifier les temps libres" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Date de fin" + label_working_days: "Journées de travail" + label_non_working_times_with_count: "%{year} de temps libre (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Nombre total de jours de congé" macro_execution_error: "Erreur lors de l'exécution de la macro %{macro_name}" macro_unavailable: "La macro %{macro_name} ne peut être affichée." macros: @@ -4044,7 +4249,7 @@ fr: note: "Note : « %{note} »" sharing: work_packages: - allowed_actions: "Vous pouvez %{allowed_actions} ce lot de travaux. Cela peut changer en fonction de votre rôle dans le projet et de vos droits." + allowed_actions_html: "Vous pouvez %{allowed_actions} ce lot de travaux. Cela peut changer en fonction de votre rôle dans le projet et de vos droits." create_account: "Pour accéder à ce lot de travaux, vous aurez besoin de créer et activer un compte sur %{instance}." open_work_package: "Ouvrir ce lot de travaux" subject: "Le lot de travaux #%{id} a été partagé avec vous" @@ -4143,7 +4348,7 @@ fr: roles: "Vous avez maintenant les rôles suivants :" mail_user_activation_limit_reached: subject: Limite d'activation de l'utilisateur atteinte - message: | + message_html: | Un nouvel utilisateur (%{email}) a essayé de créer un compte sur un environnement OpenProject que vous gérez (%{host}). L'utilisateur ne peut pas activer son compte puisque la limite d'utilisateurs a été atteinte. steps: @@ -4207,7 +4412,7 @@ fr: notice_parent_item_not_found: "L'élément parent est introuvable." notice_project_not_deleted: "Le projet n'a pas été supprimé." notice_project_not_found: "Projet introuvable." - notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable." + notice_smtp_address_unsafe_env_hint: "L'adresse SMTP %{address} n'est pas sûre. Veuillez l'ajouter à la liste blanche en utilisant la variable d'environnement %{env_name}." notice_successful_connection: "Connexion réussie." notice_successful_create: "Création réussie." notice_successful_delete: "Suppression réussie." @@ -4329,6 +4534,12 @@ fr: permission_manage_versions: "Gérer les versions" permission_manage_wiki: "Gérer le wiki" permission_manage_wiki_menu: "Gérer le menu Wiki" + permission_manage_own_working_times: "Gérer son propre temps de travail" + permission_manage_own_working_times_explanation: > + Permet aux utilisateurs de gérer leur propre temps de travail et leurs jours de congé personnels. + permission_manage_working_times: "Gérer les temps de travail de tous les utilisateurs" + permission_manage_working_times_explanation: > + Permet aux utilisateurs de gérer le temps de travail pour tous les utilisateurs, y compris les jours non travaillés personnels. permission_move_work_packages: "Déplacer les Lots de Travaux" permission_protect_wiki_pages: "Protéger les pages wiki" permission_rename_wiki_pages: "Renommer les pages wiki" @@ -4474,10 +4685,10 @@ fr: info: "La suppression du dépôt est une action irréversible." info_not_managed: "Remarque : Ceci ne supprimera PAS le contenu de ce dépôt, étant donné qu'il n'est pas géré par OpenProject." managed_path_note: "Le répertoire suivant sera effacé : %{path}" - repository_verification: "Entrez l'identifiant du projet %{identifier} pour vérifier la suppression de son dépôt." + repository_verification_html: "Saisissez l'identifiant du projet %{identifier} pour valider la suppression de son dépôt." subtitle: "Voulez-vous vraiment supprimer le %{repository_type} du projet %{project_name} ?" - subtitle_not_managed: "Voulez-vous vraiment supprimer le %{repository_type} %{url} lié du projet %{project_name} ?" - title: "Supprimer le %{repository_type}" + subtitle_not_managed_html: "Voulez-vous vraiment supprimer le %{repository_type} %{url} lié du projet %{project_name} ?" + title_html: "Supprimer le %{repository_type}" title_not_managed: "Supprimer le %{repository_type} lié ?" errors: build_failed: "Impossible de créer le dépôt avec la configuration sélectionnée. %{reason}" @@ -4527,7 +4738,7 @@ fr: storage: not_available: "La consommation d'espace disque n'est pas disponible pour ce dépôt." update_timeout: "Garder les dernières informations de l'espace disque requis pour un dépôt pendant N minutes.\nEtant donné que l'opération de comptabilisation de l'espace disque requis pour un dépôt peut être coûteuse, augmentez cette valeur pour réduire l'impact sur les performances." - oauth_application_details: "La clé secrète du client ne sera plus accessible après la fermeture de cette fenêtre. Veuillez copier ces valeurs dans les paramètres d'intégration Nextcloud OpenProject :" + oauth_application_details_html: "La clé secrète du client ne sera plus accessible après la fermeture de cette fenêtre. Veuillez copier ces valeurs dans les paramètres d'intégration Nextcloud OpenProject :" oauth_application_details_link_text: "Aller à la page des paramètres" setup_documentation_details: "Si vous avez besoin d'aide pour configurer un nouvel espace de stockage des fichiers, veuillez consulter la documentation : " setup_documentation_details_link_text: "Configuration des espaces de stockage des fichiers" @@ -4572,15 +4783,15 @@ fr: setting_apiv3_cors_title: "Partage croisé des ressources (CORS)" setting_apiv3_cors_enabled: "Activer CORS" setting_apiv3_cors_origins: "Origines autorisées de l'API V3 Cross-Origin Resource Sharing (CORS)" - setting_apiv3_cors_origins_text_html: > - Si CORS est activé, ce sont les origines qui sont autorisées à accéder à l'API OpenProject.
Veuillez vérifier la documentation sur l'en-tête Origin sur la façon de spécifier les valeurs attendues. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Accès en écriture aux attributs en lecture seule" setting_apiv3_write_readonly_attributes_instructions: > Si cette option est activée, l'API permettra aux administrateurs d'écrire des attributs statiques en lecture seule lors de la création, tels que createdAt et author. setting_apiv3_write_readonly_attributes_warning: > Ce paramètre est utile, par exemple, pour l'importation de données, mais il permet aux administrateurs de se faire passer pour d'autres utilisateurs lors de la création d'éléments. Toutes les demandes de création sont toutefois enregistrées avec le véritable auteur. - setting_apiv3_write_readonly_attributes_additional: > - Pour plus d'informations sur les attributs et les ressources prises en charge, veuillez consulter le site %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Taille maximale de page d'API" setting_apiv3_max_page_size_instructions: > Définissez la taille maximale de la page à laquelle l'API répondra. Il ne sera pas possible d'effectuer des demandes d'API qui renvoient plus de valeurs sur une seule page. @@ -4677,7 +4888,7 @@ fr: setting_work_package_properties: "Propriétés du lot de travaux" setting_work_package_startdate_is_adddate: "Utiliser la date actuelle comme date de début des nouveaux lots de travaux" setting_work_packages_projects_export_limit: "Limite d'exportation des lots de travaux/projets" - setting_journal_aggregation_time_minutes: "Actions utilisateur agrégées dans" + setting_journal_aggregation_time_minutes: "Période d'agrégation" setting_log_requesting_user: "Enregistrer le login utilisateur, nom et adresse e-mail pour toutes les requêtes" setting_login_required: "Authentification requise" setting_login_required_caption: "Lorsque cette case est cochée, toutes les requêtes envoyées à l'application doivent être authentifiées." @@ -4758,6 +4969,12 @@ fr: setting_welcome_text: "Bloc de texte de bienvenue" setting_welcome_title: "Bloc de titre de bienvenue" setting_welcome_on_homescreen: "Afficher le bloc de bienvenue sur l'écran d'accueil" + setting_work_packages_identifier_numeric: Séquence numérique à l'échelle de l'instance (par défaut) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Identifiants alphanumériques basés sur le projet + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Mode de surbrillance par défaut" setting_work_package_list_default_highlighted_attributes: "Attributs en ligne mis en surbrillance par défaut" setting_working_days: "Jours ouvrés" @@ -4924,10 +5141,12 @@ fr: section_work_week: "Semaine de travail" section_holidays_and_closures: "Vacances et fermetures" work_packages: + work_package_identifier: "Identifiant du lot de travail" not_allowed_text: "Vous n'avez pas les autorisations nécessaires pour voir cette page." activities: enable_internal_comments: "Activer les commentaires internes" - helper_text: "Les commentaires internes permettent aux membres d'une équipe interne de communiquer entre eux en privé. Les commentaires ne sont visibles que pour les rôles sélectionnés qui ont les autorisations nécessaires et ne seront pas visibles publiquement. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Texte brut" @@ -5049,6 +5268,10 @@ fr: text_plugin_assets_writable: "Répertoire des « plugin assets » est accessible en écriture" text_powered_by: "Propulsé par %{link}" text_project_identifier_info: "Seulement les lettres en minuscule (a-z), les nombres, les tirets et les underscores sont autorisés, il est obligatoire de commencer avec une lettre en minuscule." + text_project_identifier_description: 'L''identifiant du projet est préfixé à tous les identifiants du lot de travaux. Si, par exemple, l''identifiant est "PROJ", l''identifiant du lot de travaux sera "PROJ-12" ou "PROJ-246".' + text_project_identifier_url_description: "L'identifiant du projet est inclus dans l'URL du projet." + text_project_identifier_handle_format: "Doit commencer par une lettre et ne contenir que des majuscules, des chiffres et des traits de soulignement (10 caractères au maximum)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Réaffecter au lot de travaux :" text_regexp_multiline: 'L''expression régulière est appliquée en mode multi-ligne, e.g. ^---\\s+' text_repository_usernames_mapping: "Définir ou modifier les associations entre les utilisateurs d'OpenProject et les utilisateurs trouvés dans le dépôt.\nLes utilisateurs ayant des noms ou des adresses e-mail identiques sont automatiquement associés." @@ -5156,17 +5379,17 @@ fr: version_status_locked: "verrouillé" version_status_open: "ouvert" note: Note - note_password_login_disabled: "L'authentification via mot de passe a été désactivé par %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Attention warning_attachments_not_saved: "%{count} fichier(s) n'ont pu être sauvegardés." - warning_imminent_user_limit: > - Vous avez invité plus d'utilisateurs que ce qui est prévu dans votre plan actuel. Les utilisateurs invités peuvent ne pas être en mesure de rejoindre votre environnement OpenProject. Veuillez mettre à jour votre plan ou bloquer les utilisateurs existants afin de permettre aux utilisateurs invités et enregistrés de rejoindre votre environnement. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | L’émail d’activation a expiré. Nous vous avons envoyé un nouveau lien à l'adresse %{email}. Merci de cliquer sur ce lien pour activer votre compte. warning_user_limit_reached: > L'ajout d'utilisateurs supplémentaires dépassera la limite actuelle. Veuillez contacter un administrateur pour augmenter la limite d'utilisateurs afin que les utilisateurs externes puissent accéder à cette instance. - warning_user_limit_reached_admin: > - L'ajout d'utilisateurs supplémentaires dépassera la limite actuelle. Veuillez mettre à niveau votre plan pour que les utilisateurs externes puissent accéder à cette instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > Vous avez atteint le nombre limite d'utilisateurs (%{current}/%{max} utilisateurs actifs). Veuillez contacter sales@openproject.com pour mettre à jour votre abonnement Entreprise et ajouter des utilisateurs supplémentaires. warning_protocol_mismatch_html: > @@ -5226,7 +5449,7 @@ fr: reminders: label_remind_at: "Date" note_placeholder: "Pourquoi définissez-vous ce rappel ?" - create_success_message: "Le rappel a été défini avec succès. Vous recevrez une notification pour ce lot de travaux %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Rappel mis à jour avec succès." success_deletion_message: "Rappel supprimé avec succès." sharing: @@ -5257,8 +5480,8 @@ fr: text_user_limit_reached_admins: 'L''ajout d''utilisateurs supplémentaires dépassera la limite actuelle. Veuillez mettre à niveau votre formule d''abonnement pour ajouter d''autres utilisateurs.' warning_user_limit_reached: > L'ajout d'utilisateurs supplémentaires dépassera la limite actuelle. Veuillez contacter un administrateur pour augmenter la limite d'utilisateurs afin que les utilisateurs externes puissent accéder à ce(tte) %{entity}. - warning_user_limit_reached_admin: > - L'ajout d'utilisateurs supplémentaires dépassera la limite actuelle. Veuillez mettre à jour votre formule d'abonnement pour que les utilisateurs externes puissent accéder à ce(tte) %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Veuillez sélectionner les utilisateurs avec lesquels vous souhaitez partager ce(tte) %{entity}" warning_locked_user: "L'utilisateur %{user} est verrouillé et ne peut pas être partagé avec" user_details: @@ -5378,6 +5601,7 @@ fr: project: Non divulgué - Le projet est invisible parce qu'il n'a pas les autorisations nécessaires. ancestor: Non divulgué - l'ancêtre est invisible en raison d'un manque de permissions. definingProject: Non divulgué - Le projet est invisible parce qu'il n'a pas les autorisations nécessaires. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Préautorisation" diff --git a/config/locales/crowdin/he.yml b/config/locales/crowdin/he.yml index 17be71154c6..46c6c95be82 100644 --- a/config/locales/crowdin/he.yml +++ b/config/locales/crowdin/he.yml @@ -108,7 +108,7 @@ he: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -391,11 +391,75 @@ he: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + two: "... %{count} more projects" + many: "... %{count} more projects" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + two: "Remove %{count} statuses?" + many: "Remove %{count} statuses?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -619,6 +683,14 @@ he: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -781,6 +853,11 @@ he: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -1025,9 +1102,9 @@ he: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: This user is currently not a member of a project. open_profile: "Open profile" @@ -1082,6 +1159,66 @@ he: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + two: "%{count} working days" + many: "%{count} working days" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "טקסט" placeholder_users: @@ -1089,11 +1226,11 @@ he: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1127,8 +1264,8 @@ he: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1395,7 +1532,7 @@ he: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "או היכנס באמצעות החשבון הקיים שלך" signup_with_auth_provider: "or sign up using" - auth_source_login: Please login as %{login} to activate your account. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Please login to activate your account. actionview_instancetag_blank_option: "אנא בחר" activemodel: @@ -1666,6 +1803,11 @@ he: consented_at: "Consented at" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1674,8 +1816,6 @@ he: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "מצב נגישות" auto_hide_popups: "Automatically hide success banners" @@ -1696,6 +1836,28 @@ he: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Finish date" sharing: "שיתוף" @@ -1750,6 +1912,8 @@ he: before: "must be before %{date}." before_or_equal_to: "must be before or equal to %{date}." blank: "can't be blank." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1786,8 +1950,9 @@ he: less_than_or_equal_to: "must be less than or equal to %{count}." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "זה לא המשתמש הנכון." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "is not a valid date." not_a_datetime: "is not a valid date time." @@ -1818,6 +1983,10 @@ he: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "is the wrong length (should be %{count} characters)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1930,6 +2099,9 @@ he: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "still in use by work packages: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2137,6 +2309,10 @@ he: description: "'סיסמה' צריך להתאים הקלט 'סיסמה חדשה' שדה." status: invalid_on_create: "is not a valid status for new users." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "נא לבחור לפחות משתמש אחד או קבוצה." role_blank: "need to be assigned." @@ -2439,7 +2615,7 @@ he: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: create @@ -2921,7 +3097,7 @@ he: two: "%{count} days left of %{trial_plan} trial token" many: "%{count} days left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2938,10 +3114,8 @@ he: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -3029,8 +3203,8 @@ he: work_package_edit: "חבילת עבודה נערכה" work_package_note: "הערה לחבילת העבודה נוספה" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "ייצוא" @@ -3281,6 +3455,7 @@ he: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3288,9 +3463,9 @@ he: links: configuration_guide: "Configuration guide" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "באפשרותך להיכנס ברגע חשבונך הופעל על-ידי לחיצה על %{signin}." - instructions_after_logout: "אתה יכול להיכנס שוב על ידי לחיצה על %{signin}." - instructions_after_error: "באפשרותך לנסות לבצע כניסה שוב על ידי לחיצה על %{signin}. אם השגיאה נמשכת, בקש עזרה שלך admin." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3482,6 +3657,8 @@ he: label_calendar_show: "הצג לוח שנה" label_category: "קטגוריה" label_completed: Completed + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "User Consent" label_wiki_menu_item: פריט ויקי בתפריט label_select_main_menu_item: בחר פריט תפריט ראשי חדש @@ -3648,6 +3825,7 @@ he: label_subject_or_id: "Subject or ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "מזהה" + label_project_identifier: "Project identifier" label_in: "ב" label_in_less_than: "in less than" label_in_more_than: "in more than" @@ -3781,11 +3959,13 @@ he: label_news_view_all: "הצג את כל החדשות" label_next: "הבא" label_next_week: "שבוע הבא" + label_next_year: "Next year" label_no_change_option: "(ללא שינוי)" label_no_data: "אין נתונים להצגה" label_no_due_date: "no finish date" label_no_start_date: "אין תאריך התחלה" label_no_parent_page: "No parent page" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Nothing to display" label_nobody: "nobody" @@ -3814,6 +3994,8 @@ he: label_overall_activity: "Overall activity" label_overview: "Overview" label_page_title: "Page title" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "part of" label_password_lost: "שכחת את הסיסמא?" label_password_rule_lowercase: "אותיות קטנות" @@ -3840,6 +4022,7 @@ he: label_preview_not_available: "Preview not available" label_previous: "Previous" label_previous_week: "Previous week" + label_previous_year: "Previous year" label_principal_invite_via_email: " or invite new users via email" label_principal_search: "Add existing users or groups" label_privacy_policy: "Data privacy and security policy" @@ -3951,6 +4134,7 @@ he: label_start_to_start: "start to start" label_statistics: "סטטיסטיקות" label_status: "מצב" + label_status_plural: "Statuses" label_storage_free_space: "Remaining disk space" label_storage_used_space: "Used disk space" label_storage_group: "Storage filesystem %{identifier}" @@ -3979,6 +4163,7 @@ he: label_title: "כותרת" label_projects_menu: "פרויקטים" label_today: "today" + label_today_capitalized: "Today" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3999,7 +4184,7 @@ he: label_user: "משתמש" label_user_and_permission: "Users and permissions" label_user_named: "User %{name}" - label_user_activity: "%{value}'s activity" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "אנונימי" label_user_menu: "User menu" label_user_new: "משתמש חדש" @@ -4086,6 +4271,21 @@ he: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + two: "%{count} days" + many: "%{count} days" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + two: "%{count} working days" + many: "%{count} working days" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + two: "Time off: %{count} working days" + many: "Time off: %{count} working days" + other: "Time off: %{count} working days" label_yesterday: "אתמול" label_zen_mode: "Zen mode" label_role_type: "סוג" @@ -4094,6 +4294,22 @@ he: label_not_changeable: "(not changeable)" label_global: "Global" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Error executing the macro %{macro_name}" macro_unavailable: "Macro %{macro_name} cannot be displayed." macros: @@ -4128,7 +4344,7 @@ he: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4160,7 +4376,7 @@ he: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4259,7 +4475,7 @@ he: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: User activation limit reached - message: | + message_html: | A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). The user cannot activate their account since the user limit has been reached. steps: @@ -4447,6 +4663,12 @@ he: permission_manage_versions: "Manage versions" permission_manage_wiki: "ניהול wiki" permission_manage_wiki_menu: "Manage wiki menu" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Move work packages" permission_protect_wiki_pages: "Protect wiki pages" permission_rename_wiki_pages: "Rename wiki pages" @@ -4592,10 +4814,10 @@ he: info: "Deleting the repository is an irreversible action." info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." managed_path_note: "The following directory will be erased: %{path}" - repository_verification: "Enter the project's identifier %{identifier} to verify the deletion of its repository." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Do you really want to delete the %{repository_type} of the project %{project_name}?" - subtitle_not_managed: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" - title: "Delete the %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Remove the linked %{repository_type}?" errors: build_failed: "Unable to create the repository with the selected configuration. %{reason}" @@ -4645,7 +4867,7 @@ he: storage: not_available: "Disk storage consumption is not available for this repository." update_timeout: "Keep the last required disk space information for a repository for N minutes.\nAs counting the required disk space of a repository may be costly, increase this value to reduce performance impact." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4690,15 +4912,15 @@ he: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4795,7 +5017,7 @@ he: setting_work_package_properties: "Work package properties" setting_work_package_startdate_is_adddate: "Use current date as start date for new work packages" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Log user login, name, and mail address for all requests" setting_login_required: "Authentication required" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4876,6 +5098,12 @@ he: setting_welcome_text: "Welcome block text" setting_welcome_title: "Welcome block title" setting_welcome_on_homescreen: "Display welcome block on homescreen" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Working days" @@ -5042,10 +5270,12 @@ he: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Plain text" @@ -5167,6 +5397,10 @@ he: text_plugin_assets_writable: "Plugin assets directory writable" text_powered_by: "Powered by %{link}" text_project_identifier_info: "Only lower case letters (a-z), numbers, dashes and underscores are allowed, must start with a lower case letter." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassign to work package:" text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' text_repository_usernames_mapping: "Select or update the OpenProject user mapped to each username found in the repository log.\nUsers with the same OpenProject and repository username or email are automatically mapped." @@ -5276,18 +5510,18 @@ he: version_status_locked: "locked" version_status_open: "פתוח" note: Note - note_password_login_disabled: "Password login has been disabled by %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Warning warning_attachments_not_saved: "%{count} file(s) could not be saved." - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5347,7 +5581,7 @@ he: reminders: label_remind_at: "תאריך" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5378,8 +5612,8 @@ he: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5499,6 +5733,7 @@ he: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/hi.yml b/config/locales/crowdin/hi.yml index 6b5d70bd0e4..44eaca0ca50 100644 --- a/config/locales/crowdin/hi.yml +++ b/config/locales/crowdin/hi.yml @@ -108,7 +108,7 @@ hi: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ hi: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -607,6 +667,14 @@ hi: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -767,6 +835,11 @@ hi: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -999,9 +1072,9 @@ hi: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: This user is currently not a member of a project. open_profile: "Open profile" @@ -1056,6 +1129,64 @@ hi: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "टेक्स्ट" placeholder_users: @@ -1063,11 +1194,11 @@ hi: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1097,8 +1228,8 @@ hi: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1363,7 +1494,7 @@ hi: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "या अपने मौजूदा खाते से साइन इन करें" signup_with_auth_provider: "or sign up using" - auth_source_login: Please login as %{login} to activate your account. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Please login to activate your account. actionview_instancetag_blank_option: "कृपया चयन करें" activemodel: @@ -1634,6 +1765,11 @@ hi: consented_at: "Consented at" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1642,8 +1778,6 @@ hi: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "पहुँच क्षमता" auto_hide_popups: "Automatically hide success banners" @@ -1664,6 +1798,28 @@ hi: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "समाप्ति दिनांक" sharing: "साझा करना" @@ -1718,6 +1874,8 @@ hi: before: "must be before %{date}." before_or_equal_to: "must be before or equal to %{date}." blank: "can't be blank." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1754,8 +1912,9 @@ hi: less_than_or_equal_to: "must be less than or equal to %{count}." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is not the current user." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "is not a valid date." not_a_datetime: "is not a valid date time." @@ -1786,6 +1945,10 @@ hi: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "is the wrong length (should be %{count} characters)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1896,6 +2059,9 @@ hi: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "still in use by work packages: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2101,6 +2267,10 @@ hi: description: "' पासवर्ड पुष्टिकरण ' नए पासवर्ड फ़ील्ड में इनपुट से मेल खाना चाहिए ।" status: invalid_on_create: "is not a valid status for new users." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "कृपया कम से कम एक समूह या उपयोगकर्ता चुनें।" role_blank: "need to be assigned." @@ -2367,7 +2537,7 @@ hi: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: create @@ -2807,7 +2977,7 @@ hi: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2824,10 +2994,8 @@ hi: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2915,8 +3083,8 @@ hi: work_package_edit: "Work Package edited" work_package_note: "Work Package note added" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "निर्यात" @@ -3167,6 +3335,7 @@ hi: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3174,9 +3343,9 @@ hi: links: configuration_guide: "Configuration guide" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "You can sign in as soon as your account has been activated by clicking %{signin}." - instructions_after_logout: "You can sign in again by clicking %{signin}." - instructions_after_error: "You can try to sign in again by clicking %{signin}. If the error persists, ask your admin for help." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3368,6 +3537,8 @@ hi: label_calendar_show: "कैलेंडर दिखाएं" label_category: "श्रेणी" label_completed: Completed + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "User Consent" label_wiki_menu_item: विकी मेनू आइटम label_select_main_menu_item: नए मुख्य मेनू आइटम का चयन करें @@ -3534,6 +3705,7 @@ hi: label_subject_or_id: "Subject or ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "पहचानकर्ता" + label_project_identifier: "Project identifier" label_in: "में" label_in_less_than: "से भी कम समय में" label_in_more_than: "से अधिक में" @@ -3667,11 +3839,13 @@ hi: label_news_view_all: "View all news" label_next: "Next" label_next_week: "अगले सप्ताह" + label_next_year: "Next year" label_no_change_option: "(कोई परिवर्तन नहीं)" label_no_data: "प्रदर्शित करने के लिए कोई डेटा नहीं" label_no_due_date: "no finish date" label_no_start_date: "कोई प्रारंभ दिनांक नहीं" label_no_parent_page: "कोई पैरेंट पृष्ठ नहीं" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Nothing to display" label_nobody: "कोई नहीं" @@ -3700,6 +3874,8 @@ hi: label_overall_activity: "समग्र गतिविधि" label_overview: "संक्षिप्त अवलोकन" label_page_title: "पृष्ठ का शीर्षक" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "part of" label_password_lost: "आपना पासवर्ड भूल गए?" label_password_rule_lowercase: "लोअरकेस" @@ -3726,6 +3902,7 @@ hi: label_preview_not_available: "Preview not available" label_previous: "पिछला" label_previous_week: "पिछला सप्ताह" + label_previous_year: "Previous year" label_principal_invite_via_email: " or invite new users via email" label_principal_search: "Add existing users or groups" label_privacy_policy: "Data privacy and security policy" @@ -3837,6 +4014,7 @@ hi: label_start_to_start: "start to start" label_statistics: "Statistics" label_status: "अवस्था" + label_status_plural: "Statuses" label_storage_free_space: "Remaining disk space" label_storage_used_space: "Used disk space" label_storage_group: "Storage filesystem %{identifier}" @@ -3865,6 +4043,7 @@ hi: label_title: "शीर्षक" label_projects_menu: "Projects" label_today: "आज" + label_today_capitalized: "Today" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3885,7 +4064,7 @@ hi: label_user: "उपयोगकर्ता" label_user_and_permission: "Users and permissions" label_user_named: "उपयोगकर्ता %{name}" - label_user_activity: "%{value}'s activity" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "अज्ञात" label_user_menu: "User menu" label_user_new: "New user" @@ -3972,6 +4151,15 @@ hi: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "yesterday" label_zen_mode: "Zen mode" label_role_type: "प्रकार" @@ -3980,6 +4168,22 @@ hi: label_not_changeable: "(not changeable)" label_global: "Global" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Error executing the macro %{macro_name}" macro_unavailable: "Macro %{macro_name} cannot be displayed." macros: @@ -4014,7 +4218,7 @@ hi: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4044,7 +4248,7 @@ hi: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4143,7 +4347,7 @@ hi: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: User activation limit reached - message: | + message_html: | A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). The user cannot activate their account since the user limit has been reached. steps: @@ -4329,6 +4533,12 @@ hi: permission_manage_versions: "Manage versions" permission_manage_wiki: "Manage wiki" permission_manage_wiki_menu: "Manage wiki menu" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Move work packages" permission_protect_wiki_pages: "Protect wiki pages" permission_rename_wiki_pages: "Rename wiki pages" @@ -4474,10 +4684,10 @@ hi: info: "Deleting the repository is an irreversible action." info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." managed_path_note: "The following directory will be erased: %{path}" - repository_verification: "Enter the project's identifier %{identifier} to verify the deletion of its repository." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Do you really want to delete the %{repository_type} of the project %{project_name}?" - subtitle_not_managed: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" - title: "Delete the %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Remove the linked %{repository_type}?" errors: build_failed: "Unable to create the repository with the selected configuration. %{reason}" @@ -4527,7 +4737,7 @@ hi: storage: not_available: "Disk storage consumption is not available for this repository." update_timeout: "Keep the last required disk space information for a repository for N minutes.\nAs counting the required disk space of a repository may be costly, increase this value to reduce performance impact." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4572,15 +4782,15 @@ hi: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4677,7 +4887,7 @@ hi: setting_work_package_properties: "Work package properties" setting_work_package_startdate_is_adddate: "Use current date as start date for new work packages" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Log user login, name, and mail address for all requests" setting_login_required: "Authentication required" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4758,6 +4968,12 @@ hi: setting_welcome_text: "Welcome block text" setting_welcome_title: "Welcome block title" setting_welcome_on_homescreen: "Display welcome block on homescreen" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "डिफ़ॉल्ट हाइलाइटिंग तरीका" setting_work_package_list_default_highlighted_attributes: "डिफ़ॉल्ट पंक्ति ही में हाइलाइट किए गए गुण" setting_working_days: "Working days" @@ -4924,10 +5140,12 @@ hi: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "सादा पाठ" @@ -5049,6 +5267,10 @@ hi: text_plugin_assets_writable: "Plugin assets directory writable" text_powered_by: "Powered by %{link}" text_project_identifier_info: "Only lower case letters (a-z), numbers, dashes and underscores are allowed, must start with a lower case letter." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassign to work package:" text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' text_repository_usernames_mapping: "Select or update the OpenProject user mapped to each username found in the repository log.\nUsers with the same OpenProject and repository username or email are automatically mapped." @@ -5156,18 +5378,18 @@ hi: version_status_locked: "locked" version_status_open: "खोलें" note: Note - note_password_login_disabled: "Password login has been disabled by %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Warning warning_attachments_not_saved: "%{count} file(s) could not be saved." - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5227,7 +5449,7 @@ hi: reminders: label_remind_at: "तिथि" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5258,8 +5480,8 @@ hi: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5379,6 +5601,7 @@ hi: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/hr.yml b/config/locales/crowdin/hr.yml index 2e0e5a37496..02142cbff3d 100644 --- a/config/locales/crowdin/hr.yml +++ b/config/locales/crowdin/hr.yml @@ -108,7 +108,7 @@ hr: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -385,11 +385,73 @@ hr: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + few: "... %{count} more projects" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + few: "Remove %{count} statuses?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -613,6 +675,14 @@ hr: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -774,6 +844,11 @@ hr: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -1012,9 +1087,9 @@ hr: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Korisnik trenutno nije član projekta. open_profile: "Open profile" @@ -1069,6 +1144,65 @@ hr: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + few: "%{count} working days" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Tekst" placeholder_users: @@ -1076,11 +1210,11 @@ hr: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1113,8 +1247,8 @@ hr: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1380,7 +1514,7 @@ hr: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "ili pristupite s vašim postojećim korinisičkim računom" signup_with_auth_provider: "ili pristupite koristeći" - auth_source_login: Molimo vas, prijavite se kao %{login} da bi ste aktivirali vaš korisnički račun. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Molim vas prijavite se da bi ste aktivirali vaš korisnički račun. actionview_instancetag_blank_option: "Molimo odaberite" activemodel: @@ -1651,6 +1785,11 @@ hr: consented_at: "Pristanak na" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1659,8 +1798,6 @@ hr: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Mod dostupnosti" auto_hide_popups: "Automatically hide success banners" @@ -1681,6 +1818,28 @@ hr: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Finish date" sharing: "Dijeljenje" @@ -1735,6 +1894,8 @@ hr: before: "mora biti prije %{date}." before_or_equal_to: "mora biti prije ili jednako %{date}." blank: "ne može biti prazan unos." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1771,8 +1932,9 @@ hr: less_than_or_equal_to: "mora biti manji od ili jednak %{count}." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is not the current user." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "is not a valid date." not_a_datetime: "is not a valid date time." @@ -1803,6 +1965,10 @@ hr: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "je krive duljine (mora biti %{count} znakova)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1914,6 +2080,9 @@ hr: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "još uvijek u uporabi od strane radnih paketa: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2120,6 +2289,10 @@ hr: description: "' Potvrda lozinke' mora se podudarati s unosom unutar polja 'Nova lozinka'." status: invalid_on_create: "is not a valid status for new users." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Molim vas odaberite najamnje jednog korisnika ili grupu." role_blank: "need to be assigned." @@ -2404,7 +2577,7 @@ hr: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: create @@ -2865,7 +3038,7 @@ hr: one: "One day left of %{trial_plan} trial token" few: "%{count} days left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2882,10 +3055,8 @@ hr: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2973,8 +3144,8 @@ hr: work_package_edit: "Radni paket je uređen" work_package_note: "Bilješka za Radni paket je dodana" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Izvezi" @@ -3225,6 +3396,7 @@ hr: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3232,9 +3404,9 @@ hr: links: configuration_guide: "Vodič za konfiguraciju" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "Nakon uspješne aktivacije, kliknite %{signin} za prijavu u sustav." - instructions_after_logout: "Prijaviti se možete tako da kliknete %{signin}." - instructions_after_error: "Da bi ste se ponovno pokušali ulogirati kliknite %{signin}. Ukoliko je greška i dalje prisutna, molim vas obratite se administratoru za pomoć." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3426,6 +3598,8 @@ hr: label_calendar_show: "Pokaži kalendar" label_category: "Kategorija" label_completed: Completed + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Pristanak korisnika" label_wiki_menu_item: Element Wiki izbornika label_select_main_menu_item: Odaberite novi element glavnog izbornika @@ -3592,6 +3766,7 @@ hr: label_subject_or_id: "Subject or ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Identifikator" + label_project_identifier: "Project identifier" label_in: "u" label_in_less_than: "u manje od" label_in_more_than: "u više od" @@ -3725,11 +3900,13 @@ hr: label_news_view_all: "Pogledaj sve vijesti" label_next: "Sljedeći" label_next_week: "Sljedeći tjedan" + label_next_year: "Next year" label_no_change_option: "(Nema promjene)" label_no_data: "Nema podataka za prikaz" label_no_due_date: "no finish date" label_no_start_date: "nema datuma početka" label_no_parent_page: "No parent page" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Ništa za prikazati" label_nobody: "nitko" @@ -3758,6 +3935,8 @@ hr: label_overall_activity: "Ukupna aktivnost" label_overview: "Pregled" label_page_title: "Page title" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "dio" label_password_lost: "Zaboravili ste lozinku?" label_password_rule_lowercase: "Mala slova" @@ -3784,6 +3963,7 @@ hr: label_preview_not_available: "Preview not available" label_previous: "Prethodni" label_previous_week: "Prethodni tjedan" + label_previous_year: "Previous year" label_principal_invite_via_email: " ili pozovite nove korisnike putem emaila" label_principal_search: "Dodaj postojeće korisnike ili grupe" label_privacy_policy: "Data privacy and security policy" @@ -3895,6 +4075,7 @@ hr: label_start_to_start: "s početka na početak" label_statistics: "Statistika" label_status: "Status" + label_status_plural: "Statuses" label_storage_free_space: "Dostupna veličina prostora na disku" label_storage_used_space: "Iskorišteni prostor na disku" label_storage_group: "Datotečni sustav sustava za pohranu %{identifier}" @@ -3923,6 +4104,7 @@ hr: label_title: "Naziv" label_projects_menu: "Projekti" label_today: "danas" + label_today_capitalized: "Today" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3943,7 +4125,7 @@ hr: label_user: "Korisnik" label_user_and_permission: "Users and permissions" label_user_named: "User %{name}" - label_user_activity: "%{value}-a aktivnost" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonimno" label_user_menu: "User menu" label_user_new: "Novi korisnik" @@ -4030,6 +4212,18 @@ hr: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + few: "%{count} days" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + few: "%{count} working days" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + few: "Time off: %{count} working days" + other: "Time off: %{count} working days" label_yesterday: "jučer" label_zen_mode: "Zen mode" label_role_type: "Tip" @@ -4038,6 +4232,22 @@ hr: label_not_changeable: "(ne promijenjiv)" label_global: "Globalne" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Došlo je do pogreške tijekom izvođenja makroa %{macro_name}" macro_unavailable: "Makro %{macro_name} ne možete biti prikazan." macros: @@ -4072,7 +4282,7 @@ hr: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4103,7 +4313,7 @@ hr: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4202,7 +4412,7 @@ hr: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: Korisnička granica aktivacije dostignuta - message: | + message_html: | A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). The user cannot activate their account since the user limit has been reached. steps: @@ -4389,6 +4599,12 @@ hr: permission_manage_versions: "Upravljanje verzijama" permission_manage_wiki: "Uredi wiki" permission_manage_wiki_menu: "Upravljanje wiki izbornikom" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Premjesti radne pakete" permission_protect_wiki_pages: "Zaštiti wiki stranice" permission_rename_wiki_pages: "Preimenuj wiki stranice" @@ -4534,10 +4750,10 @@ hr: info: "Brisanje repozitorija je nepovratan čin." info_not_managed: "Uzmite u obzir: Ovo NEĆE izbrisati sadržaj ovog repozitorija, zbog toga što nije upravljano OpenProject-om." managed_path_note: "Sljedeći direktorij će biti izbrisan: %{path}" - repository_verification: "Unesite identifikator projekta %{identifier} da bi ste potvrdili brisanje njegova repozitorija." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Da li sigurno želite izbrisati %{repository_type} iz projekta %{project_name}?" - subtitle_not_managed: "Da li stvarno želite izbrisati povezani %{repository_type}%{url} iz projekta %{project_name}?" - title: "Izbriši %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Ukloni povezani %{repository_type}?" errors: build_failed: "Nije moguće kreirati repozitorij s odabranom konfiguracijom. %{reason}" @@ -4587,7 +4803,7 @@ hr: storage: not_available: "Pregled zauzeća diska nije dostupano u ovom repozitoriju." update_timeout: "Spremi informaciju o potrebnom prostoru na disku za repozitorij za N minuta.\nTijekom izračuna potrebnog prostora na disku može doći do usprenja rada mašine, da bi ste izbjegli smanjenje performansi podignite ovu vrijednost." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4632,15 +4848,15 @@ hr: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4737,7 +4953,7 @@ hr: setting_work_package_properties: "Postavke radnih paketa" setting_work_package_startdate_is_adddate: "Koristite današanji datum kao početni datum novih radnih paketa" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Zabilježite korisnički pristup, ime, i email adresu za sve zahtjeve" setting_login_required: "Potrebna autentifikacija" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4818,6 +5034,12 @@ hr: setting_welcome_text: "Tekst dobrodošlice" setting_welcome_title: "Naslov dobrodošlice" setting_welcome_on_homescreen: "Prikaži tekst dobrodošlice na početnoj stranici" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Working days" @@ -4984,10 +5206,12 @@ hr: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Plain text" @@ -5109,6 +5333,10 @@ hr: text_plugin_assets_writable: "Plugin assets directory writable" text_powered_by: "Powered by %{link}" text_project_identifier_info: "Only lower case letters (a-z), numbers, dashes and underscores are allowed, must start with a lower case letter." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Dodijeli radnom paketu:" text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' text_repository_usernames_mapping: "Select or update the OpenProject user mapped to each username found in the repository log.\nUsers with the same OpenProject and repository username or email are automatically mapped." @@ -5217,18 +5445,18 @@ hr: version_status_locked: "zaključano" version_status_open: "otvori" note: Bilješka - note_password_login_disabled: "Prijava korištenjem lozinke je onemogućena %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Upozorenje warning_attachments_not_saved: "%{count} datoteka(e) ne mogu biti spremljene." - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5288,7 +5516,7 @@ hr: reminders: label_remind_at: "Datum" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5319,8 +5547,8 @@ hr: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5440,6 +5668,7 @@ hr: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/hu.yml b/config/locales/crowdin/hu.yml index f5af9fffa46..00dd4ea6e29 100644 --- a/config/locales/crowdin/hu.yml +++ b/config/locales/crowdin/hu.yml @@ -108,7 +108,7 @@ hu: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ hu: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -606,6 +666,14 @@ hu: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -766,6 +834,11 @@ hu: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Azonosító megváltoztatása + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -998,9 +1071,9 @@ hu: groups: member_in_these_groups: "A felhasználó a következő csoportoknak a tagja:" no_results_title_text: A falhasználó egyik csoportnak se a tagja - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Ez a felhasználó jelenleg nem tagja egy projektnek sem. open_profile: "Open profile" @@ -1055,6 +1128,64 @@ hu: user: "A felhasználó most már bejelentkezhet, hogy hozzáférjen a %{project}-hez. Eközben már tervezhet ezzel a felhasználóval, és például munkacsomagokat rendelhet hozzá." placeholder_user: "A tesztfelhasználó mostantól használható a %{project}-ben. Eközben már tervezhetünk ezzel a felhasználóval, és például munkacsomagokat rendelhetünk hozzá." group: "A csoport mostantól a %{project} része. Eközben már tervezhet ezzel a csoporttal, és például munkacsomagokat rendelhet hozzá.\n" + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Szöveg" placeholder_users: @@ -1062,11 +1193,11 @@ hu: Nem törölheti a teszt felhasználót. Nincs joga a tagok kezeléséhez minden olyan projektben, amelynek a teszt felhasználó tagja. delete_tooltip: "Teszt felhasználó törlése" deletion_info: - heading: "Teszt felhasználó%{name} törlése" + heading_html: "Delete placeholder user %{name}" data_consequences: > A teszt felhasználó minden előfordulása (pl. Mint jogosult, felelős vagy más felhasználói érték) át lesz rendelve a "Törölt felhasználó" nevű fiókba. Mivel minden törölt fiók adatait újra hozzárendeli ehhez a fiókhoz, nem lehet megkülönböztetni a felhasználó által létrehozott adatokat egy másik törölt fiók adataitól. irreversible: "Ez a művelet visszavonhatatlan" - confirmation: "Adja meg a teszt felhasználó nevét %{name} a törlés megerősítéséhez." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1098,8 +1229,8 @@ hu: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1364,7 +1495,7 @@ hu: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "vagy jelentkezzen be a meglévő hozzáférésével." signup_with_auth_provider: "vagy jelentkezzen be" - auth_source_login: Kérjük, jelentkezzen be %{login}ként, hogy aktiválja fiókját. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Kérjük, jelentkezzen be, hogy aktiválja fiókját. actionview_instancetag_blank_option: "Kérem válasszon" activemodel: @@ -1635,6 +1766,11 @@ hu: consented_at: "Ehhez hozzájárult a" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1643,8 +1779,6 @@ hu: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Kisegítő mód" auto_hide_popups: "Automatically hide success banners" @@ -1665,6 +1799,28 @@ hu: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Név vagy e-mail cím" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Befejezési dátum" sharing: "Megosztás" @@ -1719,6 +1875,8 @@ hu: before: "korábbinak kell lennie, mint %{date}." before_or_equal_to: "korábbinak vagy egyenlőnek kell lennie, mint %{date}." blank: "nem lehet üres." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "be kell állítani a '%{property}' tulajdonságot.\n" cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1755,8 +1913,9 @@ hu: less_than_or_equal_to: "kisebbnek vagy egyenlőnek kell lennie mint, %{count}." not_available: "nem érhető el a rendszer konfigurációja miatt.\n" not_deletable: "nem törölhető" + not_editable: "cannot be edited because it is already in effect." not_current_user: "nem az aktuális felhasználó" - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "nem érvényes dátum." not_a_datetime: "ez nem érvényes dátum." @@ -1787,6 +1946,10 @@ hu: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "nem megfelelő hosszúságú (%{count} karakter szükséges)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1897,6 +2060,9 @@ hu: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "munkacsomagok használatban vannak: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "A '%{dependency}' modult is engedélyezni kell, mivel a '%{module}' modul függ tőle." format: "%{message}\n" @@ -2102,6 +2268,10 @@ hu: description: "A \"'Jelszó megerősítés\"-nek meg kell egyeznie az \"Új jelszó\" mezővel." status: invalid_on_create: "ez nem egy érvényes állapot, az új felhasználó számára." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Kérem, válasszon legalább egy felhasználót vagy csoportot." role_blank: "Hozzá kell rendelve lennie" @@ -2368,8 +2538,8 @@ hu: A biztonsági mentések engedélyezésével a szükséges jogosultságokkal és ezzel a biztonsági mentési jogkivonattal rendelkező felhasználók letölthetnek egy biztonsági másolatot, amely tartalmazza az OpenProject telepítés összes adatát. Ez magában foglalja az összes többi felhasználó adatait. info: > A biztonsági mentés létrehozásához biztonsági másolatot kell generálnia. Minden alkalommal, amikor biztonsági másolatot szeretne kérni, meg kell adnia ezt a tokent. A biztonsági mentés törlésével letilthatja a biztonsági mentést ennél a felhasználónál. - verification: > - Írja be a %{word} billentyűt, hogy megerősítse, hogy %{action} a biztonsági mentés tokent szeretné használni. + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: visszaállít verification_word_create: létrehoz warning: > @@ -2808,7 +2978,7 @@ hu: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2825,10 +2995,8 @@ hu: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2916,8 +3084,8 @@ hu: work_package_edit: "A feladatcsoport szerkesztve" work_package_note: "A feladatcsoport jegyzet hozzáadva" title: - project: "Projekt: %{name}" - subproject: "Alprojekt: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Exportálás" @@ -3168,6 +3336,7 @@ hu: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3175,9 +3344,9 @@ hu: links: configuration_guide: "Konfigurációs útmutató" get_in_touch: "Kérdése van? Lépjen kapcsolatba velünk" - instructions_after_registration: "Be tud jelentkezni, amint fiókját aktiválta ide %{signin} kattintva." - instructions_after_logout: "Újra be tud jelentkezni ide %{signin} kattintva." - instructions_after_error: "Próbáljon meg újból bejelentkezni ide %{signin} kattintva. Ha a hiba továbbra is fennáll, kérje a rendszergazda segítséget." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3369,6 +3538,8 @@ hu: label_calendar_show: "Kalendárium mutatása" label_category: "Kategória" label_completed: Befejeződött + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Felhasználói jóváhagyás" label_wiki_menu_item: Wiki menüpont label_select_main_menu_item: Válasszon ki új fő menüpontot @@ -3535,6 +3706,7 @@ hu: label_subject_or_id: "Tárgy, vagy azonosító" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Azonosító" + label_project_identifier: "Project identifier" label_in: "in" label_in_less_than: "kevesebb, mint" label_in_more_than: "több mint" @@ -3668,11 +3840,13 @@ hu: label_news_view_all: "Az összes hir megtekintése" label_next: " Következő" label_next_week: "A jövő héten" + label_next_year: "Next year" label_no_change_option: "(Nincs változás)" label_no_data: "Nincs megjelenítendő adat" label_no_due_date: "nincs befejezési dátum" label_no_start_date: "nincs kezdő dátuma" label_no_parent_page: "Nincs szülő oldal" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Értesítések" label_nothing_display: "Nincs megjeleníthető" label_nobody: "senki sem" @@ -3701,6 +3875,8 @@ hu: label_overall_activity: "Általános tevékenység" label_overview: "Áttekintés" label_page_title: "Oldalcím" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "része" label_password_lost: "Elfelejtetted a jelszavad?" label_password_rule_lowercase: "Kisbetűk" @@ -3727,6 +3903,7 @@ hu: label_preview_not_available: "Preview not available" label_previous: "Korábbi" label_previous_week: "Előző héten" + label_previous_year: "Previous year" label_principal_invite_via_email: " vagy új felhasználót hívhat meg e-mailben" label_principal_search: "Meglévő felhasználók vagy csoportok hozzáadása" label_privacy_policy: "Adatvédelmi és biztonsági szabályzat" @@ -3838,6 +4015,7 @@ hu: label_start_to_start: "elejétől az elejéig" label_statistics: "Statisztika" label_status: "Állapot" + label_status_plural: "Statuses" label_storage_free_space: "Fennmaradó lemezterület" label_storage_used_space: "Felhasznált lemezterület" label_storage_group: "Tároló fájlrendszer %{identifier}" @@ -3866,6 +4044,7 @@ hu: label_title: "Cím" label_projects_menu: "Projektek" label_today: "Ma" + label_today_capitalized: "Ma" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3886,7 +4065,7 @@ hu: label_user: "Felhasználó" label_user_and_permission: "Felhasználók és jogok" label_user_named: "Felhasználó: %{name}" - label_user_activity: "%{value} tevékenység" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonymous" label_user_menu: "User menu" label_user_new: "Új felhasználó" @@ -3973,6 +4152,15 @@ hu: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "tegnap" label_zen_mode: "Zen mode" label_role_type: "Típus" @@ -3981,6 +4169,22 @@ hu: label_not_changeable: "(nem módosítható)" label_global: "Globális" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Hiba a makro %{macro_name} végrehajtásában" macro_unavailable: "A %{macro_name} makró nem jeleníthető meg." macros: @@ -4015,7 +4219,7 @@ hu: center: "Az értesítési központba\n" see_in_center: "Lásd a megjegyzést az értesítési központban" settings: "E-mail beállítások módosítása\n" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "%{timestamp} időpontban %{user} létrehozta" @@ -4045,7 +4249,7 @@ hu: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4144,8 +4348,9 @@ hu: roles: "A következő jogosultságaid vannak :" mail_user_activation_limit_reached: subject: A felhasználó aktiválási korlátját elérte - message: | - Egy új felhasználó (%{email}) megpróbált létrehozni egy fiókot az Ön által kezelt OpenProject környezetben (%{host}). A felhasználó nem tudja aktiválni fiókját, mivel elérte a felhasználói korlátot. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "A felhasználó bejelentkezéséhez a következőket teheti: " a: "Fizetés módjának frissítése ([here](upgrade_url))" #here turned into a link @@ -4329,6 +4534,12 @@ hu: permission_manage_versions: "Verziók kezelése" permission_manage_wiki: "Wiki kezelése" permission_manage_wiki_menu: "Wiki menü kezelése" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Feladatcsoportok áthelyezése" permission_protect_wiki_pages: "Védett wiki oldalak" permission_rename_wiki_pages: "Wiki oldalak átnevezése" @@ -4474,10 +4685,10 @@ hu: info: "A tároló törlése visszafordíthatatlan művelet." info_not_managed: "Megjegyzés: Ez NEM törli a tároló tartalmát, mivel nem az OpenProject által kezelt." managed_path_note: "Az következő könyvtár törlésre kerül: %{path}" - repository_verification: "Írja be a projekt azonosítót %{identifier} a tároló törlésének megerősítéséhez." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Biztosan törli a %{project_name} projekthez tartozó %{repository_type}-t?" - subtitle_not_managed: "Biztosan törli a %{project_name} projekthez kapcsolt %{repository_type} %{url} -t?" - title: "%{repository_type} törlése" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Törli a csatolt %{repository_type}-t?" errors: build_failed: "A tároló nem hozható létre a kiválasztott konfigurációval. %{reason}" @@ -4527,7 +4738,7 @@ hu: storage: not_available: "A lemez felhasználási adatai nem érhetőek el a tárolón." update_timeout: "Tartsa meg az utolsó szükséges lemezterület-információt egy tárolóhoz N percig. Mivel egy tároló szükséges lemezterületének kiszámítása erőforrás igényes lehet, növelje ezt az értéket a teljesítmény növelésének érdekében." - oauth_application_details: "Az ablak bezárása után az ügyfél titkos értéke nem lesz többé elérhető. Kérjük, másolja be ezeket az értékeket a Nextcloud OpenProject Integration beállításaiba:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Menjen a beállítások oldalra" setup_documentation_details: "Ha segítségre van szüksége egy új fájltároló beállításához, kérjük, ellenőrizze a dokumentációt:" setup_documentation_details_link_text: "File storages setup" @@ -4572,15 +4783,15 @@ hu: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "A CORS engedélyezése" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) engedélyezett származások" - setting_apiv3_cors_origins_text_html: > - Ha a CORS engedélyezve van, ezek azok az eredetiek, amelyek hozzáférhetnek az OpenProject API-hoz.
Kérjük, olvassa el a Dokumentáció az Origin fejlécről című dokumentumot az elvárt értékek megadásáról. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API oldal méret" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4677,7 +4888,7 @@ hu: setting_work_package_properties: "feladatcsoport tulajdonságok" setting_work_package_startdate_is_adddate: "Az aktuális dátum használata, mint kezdő dátuma az új feladatcsoportoknak" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "Felhasználói műveletek összevontan\n" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Jelentkezzen be a felhasználóként, név és e-mail cím minden lekéréshez" setting_login_required: "Hitelesítés szükséges" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4758,6 +4969,12 @@ hu: setting_welcome_text: "Üdvözlő blokk szöveg" setting_welcome_title: "Üdvözlő blokk címe" setting_welcome_on_homescreen: "Üdvözlő blokk megjelenítése a kezdőképernyőn" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Alapértelmezett kiemelési mód" setting_work_package_list_default_highlighted_attributes: "Alapértelmezett kiemelt attribútumok sorai" setting_working_days: "Munkanapok" @@ -4924,10 +5141,12 @@ hu: section_work_week: "Munkahét" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Egyszerű szöveg" @@ -5049,6 +5268,10 @@ hu: text_plugin_assets_writable: "Plugin eszközök könyvtára írható" text_powered_by: "Készítette %{link}" text_project_identifier_info: "Csak kisbetű (a-z), számok, kötőjelek és aláhúzásjelek van engedélyezve, és kisbetűvel kell kezdődnie." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "A munkacsomag ismételt hozzárendelése:" text_regexp_multiline: 'A reguláris kifejezés többsoros módban legyen alkalmazva. pld. ^---\s+' text_repository_usernames_mapping: "Jelölje be, vagy frissítse az alkalmazás felhasználóit, minden felhasználónév eltárolva, megtalálhatóak a csomagtároló naplóban. A felhasználók ugyanazzal az alkalmazási és csomagtárolói felhasználó névvel vagy email címmel automatikusan tárolódnak." @@ -5156,18 +5379,18 @@ hu: version_status_locked: "zárolt" version_status_open: "nyitott" note: Szöveg - note_password_login_disabled: "Bejelentkezési jelszót a %{configuration} letiltotta." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Figyelem warning_attachments_not_saved: "%{count} fájl nem menthető." - warning_imminent_user_limit: > - Több olyan felhasználót hívott meg, akiket a jelenlegi beállítás támogat. A meghívott felhasználók nem tudnak csatlakozni az OpenProject környezetéhez. Kérjük, frissítse a beállítást , vagy blokkolja a meglévő felhasználókat, hogy engedélyezhesse a meghívott és regisztrált felhasználók csatlakozását. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | Az aktiváló e-mail lejárt. Új levelet küldtünk Önnek %{email} részére. Kérjük, kattintson a belsejében lévő linkre a fiók aktiválásához. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5227,7 +5450,7 @@ hu: reminders: label_remind_at: "dátum" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5258,8 +5481,8 @@ hu: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5379,6 +5602,7 @@ hu: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - Az ős láthatatlan, mert nem rendelkezik engedélyekkel. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Előzetes engedélyezés\n" diff --git a/config/locales/crowdin/id.yml b/config/locales/crowdin/id.yml index 44c0c8fac20..669ecd7563b 100644 --- a/config/locales/crowdin/id.yml +++ b/config/locales/crowdin/id.yml @@ -108,7 +108,7 @@ id: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -373,11 +373,69 @@ id: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -597,6 +655,14 @@ id: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -756,6 +822,11 @@ id: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Ubah pengenal + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -982,9 +1053,9 @@ id: groups: member_in_these_groups: "Pengguna ini saat ini adalah anggota dari grup berikut:" no_results_title_text: Pengguna ini saat ini bukan anggota di grup mana pun. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: This user is currently not a member of a project. open_profile: "Open profile" @@ -1039,6 +1110,63 @@ id: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Teks" placeholder_users: @@ -1046,11 +1174,11 @@ id: Anda tidak diizinkan untuk menghapus pengguna placeholder. Anda tidak memiliki hak untuk mengelola anggota untuk semua proyek yang menjadi anggota pengguna placeholder. delete_tooltip: "Hapus pengguna placeholder" deletion_info: - heading: "Hapus pengguna placeholder %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > Semua kemunculan pengguna placeholder (mis., sebagai penerima tugas, penanggung jawab, atau nilai pengguna lainnya) akan dipindahkan ke akun yang disebut "Pengguna yang dihapus". Karena data setiap akun yang dihapus dipindahkan ke akun ini, data yang dibuat pengguna tidak dapat dibedakan dari data akun lain yang dihapus. irreversible: "Tindakan ini tidak dapat diubah" - confirmation: "Masukkan nama pengguna placeholder %{name} untuk mengonfirmasi penghapusan." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1081,8 +1209,8 @@ id: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1346,7 +1474,7 @@ id: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "atau Login dengan akun yang ada" signup_with_auth_provider: "or sign up using" - auth_source_login: Please login as %{login} to activate your account. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Please login to activate your account. actionview_instancetag_blank_option: "Silakan pilih" activemodel: @@ -1617,6 +1745,11 @@ id: consented_at: "Setuju pada" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1625,8 +1758,6 @@ id: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Mode aksesibel" auto_hide_popups: "Automatically hide success banners" @@ -1647,6 +1778,28 @@ id: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Tanggal selesai" sharing: "Sharing" @@ -1701,6 +1854,8 @@ id: before: "harus sebelum %{date}." before_or_equal_to: "harus sebelum atau maksimal %{date}." blank: "harus di isi." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "harus menyetel properti '%{property}'." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1737,8 +1892,9 @@ id: less_than_or_equal_to: "harus kurang dari atau sama dengan %{count}." not_available: "tidak tersedia karena konfigurasi sistem." not_deletable: "tidak dapat dihapus." + not_editable: "cannot be edited because it is already in effect." not_current_user: "bukan pengguna saat ini." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "bukan tanggal yang valid." not_a_datetime: "bukan tanggal waktu yang valid." @@ -1769,6 +1925,10 @@ id: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "panjang tidak sesuai (harus %{count} karakter)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1878,6 +2038,9 @@ id: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "still in use by work packages: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2082,6 +2245,10 @@ id: description: "Isian konfirmasi password tidak sama dengan masukan password." status: invalid_on_create: "bukan status yang valid untuk user baru." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Silakan pilih setidaknya satu user atau grup." role_blank: "need to be assigned." @@ -2330,8 +2497,8 @@ id: Mengaktifkan cadangan akan memungkinkan setiap pengguna dengan izin yang diperlukan dan token cadangan ini untuk mengunduh cadangan yang berisi semua data instalasi OpenProject ini. Ini termasuk data semua pengguna lain. info: > Anda harus membuat token cadangan agar dapat membuat cadangan. Setiap kali Anda ingin meminta cadangan, Anda harus memberikan token ini. Anda dapat menghapus token cadangan untuk menonaktifkan cadangan bagi pengguna ini. - verification: > - Masukkan %{word} untuk mengonfirmasi bahwa Anda ingin %{action} token cadangan. + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: mengatur ulang verification_word_create: membuat warning: > @@ -2749,7 +2916,7 @@ id: teaser: title: other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2766,10 +2933,8 @@ id: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2857,8 +3022,8 @@ id: work_package_edit: "Paket-Penugasan telah diedit" work_package_note: "Catatan Paket-Penugasan telah ditambah" title: - project: "Proyek: %{name}" - subproject: "Subproyek: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Ekspor" @@ -3109,6 +3274,7 @@ id: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3116,9 +3282,9 @@ id: links: configuration_guide: "Petunjuk Konfigurasi" get_in_touch: "Anda punya pertanyaan? Hubungi kami." - instructions_after_registration: "Anda dapat login setelah akun Anda diaktifkan, klik %{signin}." - instructions_after_logout: "Anda dapat login kembali dengan mengklik %{signin}." - instructions_after_error: "Anda dapat login lagi dengan mengklik %{signin}. Jika masih muncul error, tanyakan admin Anda untuk bantuan." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3310,6 +3476,8 @@ id: label_calendar_show: "Tampilkan kalender" label_category: "Kategori" label_completed: Selesai + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Persetujuan Pengguna" label_wiki_menu_item: Wiki menu item label_select_main_menu_item: Pilih item main menu baru @@ -3476,6 +3644,7 @@ id: label_subject_or_id: "Subyek atau ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Pengenal" + label_project_identifier: "Project identifier" label_in: "dalam" label_in_less_than: "kurang dari" label_in_more_than: "lebih dari" @@ -3609,11 +3778,13 @@ id: label_news_view_all: "Tampilkan semua berita" label_next: "Lanjut" label_next_week: "Minggu depan" + label_next_year: "Next year" label_no_change_option: "(tdk berubah)" label_no_data: "Tidak ada data untuk ditampilkan" label_no_due_date: "no finish date" label_no_start_date: "tidak ada tanggal mulai" label_no_parent_page: "Tidak ada halaman induk" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Tidak ada yang ditampilkan" label_nobody: "tidak ada" @@ -3642,6 +3813,8 @@ id: label_overall_activity: "Keseluruhan Activity" label_overview: "Tinjauan" label_page_title: "Judul Halaman" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "bagian dari" label_password_lost: "Lupa password?" label_password_rule_lowercase: "Huruf kecil" @@ -3668,6 +3841,7 @@ id: label_preview_not_available: "Preview not available" label_previous: "Sebelumnya" label_previous_week: "Minggu sebelumnya" + label_previous_year: "Previous year" label_principal_invite_via_email: " or invite new users via email" label_principal_search: "Add existing users or groups" label_privacy_policy: "Data privacy and security policy" @@ -3779,6 +3953,7 @@ id: label_start_to_start: "start untuk memulai" label_statistics: "Statistik" label_status: "Status" + label_status_plural: "Statuses" label_storage_free_space: "Sisa space di disk" label_storage_used_space: "Space disk terpakai" label_storage_group: "Storage filesystem %{identifier}" @@ -3807,6 +3982,7 @@ id: label_title: "Judul" label_projects_menu: "Project" label_today: "hari ini" + label_today_capitalized: "Hari Ini" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3827,7 +4003,7 @@ id: label_user: "User" label_user_and_permission: "Users and permissions" label_user_named: "User %{name}" - label_user_activity: "%{value} aktivitas" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonimus" label_user_menu: "User menu" label_user_new: "User baru" @@ -3914,6 +4090,12 @@ id: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + other: "%{count} days" + label_x_working_days: + other: "%{count} working days" + label_x_working_days_time_off: + other: "Time off: %{count} working days" label_yesterday: "kemarin" label_zen_mode: "Zen mode" label_role_type: "Mengetik" @@ -3922,6 +4104,22 @@ id: label_not_changeable: "(tidak berubah)" label_global: "Global" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "ERROR eksekusi makro %{macro_name}" macro_unavailable: "Makro %{macro_name} tidak dapat ditampilkan." macros: @@ -3956,7 +4154,7 @@ id: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -3985,7 +4183,7 @@ id: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4084,9 +4282,9 @@ id: roles: "Anda sekarang memiliki peran berikut:" mail_user_activation_limit_reached: subject: Batas aktivasi pengguna tercapai - message: | - Pengguna baru (%{email}) mencoba membuat akun di lingkungan OpenProject yang Anda kelola (%{host}). - Pengguna tidak dapat mengaktifkan akun mereka karena batas pengguna telah tercapai. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "Untuk mengizinkan pengguna masuk, Anda dapat:" a: "Tingkatkan paket pembayaran Anda ([here](upgrade_url))" #here turned into a link @@ -4268,6 +4466,12 @@ id: permission_manage_versions: "Kelola Versi" permission_manage_wiki: "Kelola Wiki" permission_manage_wiki_menu: "Kelola menu Wiki" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Pindahkan Paket-Penugasan" permission_protect_wiki_pages: "Proteksi halaman Wiki" permission_rename_wiki_pages: "Rename halaman Wiki" @@ -4411,10 +4615,10 @@ id: info: "Deleting the repository is an irreversible action." info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." managed_path_note: "Berikut direktory yang akan dihapus: %{path}" - repository_verification: "Enter the project's identifier %{identifier} to verify the deletion of its repository." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Do you really want to delete the %{repository_type} of the project %{project_name}?" - subtitle_not_managed: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" - title: "Delete the %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Remove the linked %{repository_type}?" errors: build_failed: "Pembuatan repository gagal. %{reason}" @@ -4464,7 +4668,7 @@ id: storage: not_available: "Storage tidak tersedia untuk repository ini." update_timeout: "Pertahankan informasi kebutuhan disk repository selama N menit. Semakin besar nilai N akan mengurangi beban komputasi." - oauth_application_details: "Nilai rahasia klien tidak akan dapat diakses lagi setelah Anda menutup jendela ini. Harap salin nilai-nilai ini ke pengaturan Nextcloud OpenProject Integration:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Buka halaman pengaturan" setup_documentation_details: "Jika Anda memerlukan bantuan untuk mengonfigurasi penyimpanan file baru, harap periksa dokumentasinya:" setup_documentation_details_link_text: "File storages setup" @@ -4509,15 +4713,15 @@ id: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Aktifkan CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) memungkinkan asal" - setting_apiv3_cors_origins_text_html: > - Jika CORS diaktifkan, ini adalah asal yang diizinkan untuk mengakses OpenProject API.
Harap periksa Dokumentasi pada header Asal tentang cara menentukan nilai yang diharapkan. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Ukuran halaman API maksimum" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4614,7 +4818,7 @@ id: setting_work_package_properties: "Properti Paket-Penugasan" setting_work_package_startdate_is_adddate: "Gunakan tanggal sekarang untuk start Paket-Penugasan" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Catat user login, nama dan email untuk semua permintaan" setting_login_required: "Diperlukan otentikasi" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4695,6 +4899,12 @@ id: setting_welcome_text: "Welcome block text" setting_welcome_title: "Welcome block title" setting_welcome_on_homescreen: "Display welcome block on homescreen" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Hari kerja" @@ -4861,10 +5071,12 @@ id: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Plain text" @@ -4986,6 +5198,10 @@ id: text_plugin_assets_writable: "Plugin aset direktori, bisa ditulisi" text_powered_by: "Didukung oleh %{link}" text_project_identifier_info: "Hanya huruf kecil (a-z), angka, garis dan garis bawah yang diperbolehkan, harus diawali dengan huruf kecil." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassign to work package:" text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' text_repository_usernames_mapping: "Pilih atau update user untuk dipetakan ke setiap username yang ditemukan di log repositori. User dengan username dan repositori atau email yang sama otomatis akan dipetakan." @@ -5092,18 +5308,18 @@ id: version_status_locked: "terkunci" version_status_open: "buka" note: Catatan - note_password_login_disabled: "Password login telah dinonaktifkan (by %{configuration})." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Warning warning_attachments_not_saved: "%{count} file tidak akan disimpan." - warning_imminent_user_limit: > - Anda mengundang lebih banyak pengguna daripada yang didukung oleh paket Anda saat ini. Pengguna yang diundang mungkin tidak dapat bergabung dengan lingkungan OpenProject Anda. Harap tingkatkan versi paket Anda atau blokir pengguna yang ada agar pengguna yang diundang dan terdaftar dapat bergabung. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | Email aktivasi telah kedaluwarsa. Kami mengirimkan Anda yang baru ke %{email}. Silakan klik tautan di dalamnya untuk mengaktifkan akun Anda. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5163,7 +5379,7 @@ id: reminders: label_remind_at: "Tanggal" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5194,8 +5410,8 @@ id: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5315,6 +5531,7 @@ id: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Dirahasiakan - Leluhur tidak terlihat karena tidak memiliki izin. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pra-otorisasi" diff --git a/config/locales/crowdin/it.yml b/config/locales/crowdin/it.yml index 6fc282640d4..a7b3ff897d3 100644 --- a/config/locales/crowdin/it.yml +++ b/config/locales/crowdin/it.yml @@ -108,7 +108,7 @@ it: jemalloc_allocator: Allocatore di memoria Jemalloc journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Importa" jira: @@ -379,11 +379,71 @@ it: project_creation: "Creazione del progetto" notification_text_default: >

Ciao,

È stato creato un nuovo progetto: projectValue:name

Grazie

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Transizioni predefinite" user_author: "L'utente è l'autore" user_assignee: "L'utente è l'assegnatario" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Accesso e registrazione" announcements: @@ -605,6 +665,14 @@ it: danger_dialog: confirmation_live_message_checked: "Il pulsante per procedere è ora attivo." confirmation_live_message_unchecked: "Il pulsante per procedere è ora inattivo. Devi spuntare la casella per continuare." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "URL a cui sarà raggiungibile il server OpenProject MCP. Necessario per la configurazione dei client MCP." @@ -765,6 +833,11 @@ it: description: > Il progetto sarà visibile solo ai membri del progetto a seconda del loro ruolo e dei permessi associati. I sotto-progetti non rientrano in questo caso e hanno le loro impostazioni. change_identifier: Cambia identificatore + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Seleziona i modelli da usare nella creazione di nuovi sottoelementi. @@ -997,9 +1070,9 @@ it: groups: member_in_these_groups: "Questo utente è attualmente membro dei seguenti gruppi:" no_results_title_text: Questo utente al momento non è un membro di alcun gruppo. - summary_with_more: Membro di %{names} e %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "altri %{count}" - summary: Membro di %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Questo utente non è attualmente membro di alcun progetto. open_profile: "Apri il profilo" @@ -1054,6 +1127,64 @@ it: user: "L'utente può ora connettersi per accedere a %{project}. Nel mentre puoi ad esempio già pianificare con quell'utente e assegnare pacchetti di lavoro." placeholder_user: "Il segnaposto è ora utilizzabile in %{project}. Nel mentre puoi ad esempio già pianificare con quell'utente e assegnare pacchetti di lavoro." group: "Il gruppo è ora parte di %{project}. Nel mentre puoi ad esempio già pianificare con quel gruppo e assegnare pacchetti di lavoro." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Testo" placeholder_users: @@ -1061,11 +1192,11 @@ it: Non è consentito eliminare l'utente segnaposto. Non hai il permesso per gestire i membri per tutti i progetti di cui l'utente segnaposto è membro. delete_tooltip: "Elimina utente segnaposto" deletion_info: - heading: "Elimina l'utente segnaposto %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > Tutte le occorrenze dell'utente segnaposto (ad esempio, come assegnatario, responsabile o altri valori) saranno riassegnate a un account chiamato "Utente eliminato". Poiché i dati di ogni account eliminato vengono riassegnati a questo account, non sarà possibile distinguere i dati creati dall'utente dai dati di un altro account eliminato. irreversible: "Questa azione è irreversibile" - confirmation: "Inserisci il nome utente del segnaposto %{name} per confermare l'eliminazione." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1097,9 +1228,10 @@ it: status_excluded_from_totals_text: |- Seleziona questa opzione per escludere i pacchetti di lavoro con questo stato dai totali di Lavoro, Lavoro rimanente e % Completamento in una gerarchia. - status_percent_complete_text: |- - Nella modalità di calcolo dell'avanzamento basata sullo stato, la % di completamento di una macro-attività viene impostata automaticamente su questo valore quando viene selezionato questo stato. - Ignorato nella modalità basata sul lavoro. + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work + package is automatically set to this value when this status is selected. + Ignored in work-based mode. status_readonly_html: | Seleziona questa opzione per contrassegnare i pacchetti di lavoro con questo stato come di sola lettura. Nessun attributo può essere modificato a eccezione dello stato. @@ -1362,7 +1494,7 @@ it: La registrazione dell'utente è limitata per il fornitore di Single Sign-on "%{name}". Chiedi all'amministratore di attivare l'account per te o modificare il limite di registrazione autonoma per questo fornitore. login_with_auth_provider: "o accedi con il tuo account esistente" signup_with_auth_provider: "o accedi utilizzando" - auth_source_login: Accedi come %{login} per attivare il tuo account. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Accedi per attivare il tuo account. actionview_instancetag_blank_option: "Si prega di selezionare" activemodel: @@ -1633,6 +1765,11 @@ it: consented_at: "Consenso a" group: identity_url: "URL identificativo" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Aspetto" header_alerts: "Avvisi" @@ -1641,8 +1778,6 @@ it: button_update_user_information: "Aggiorna il profilo" comments_sorting: "Visualizza le attività della macro-attività ordinate per" disable_keyboard_shortcuts: "Disabilita le scorciatoie da tastiera" - disable_keyboard_shortcuts_caption_html: |- - Puoi scegliere di disabilitare le scorciatoie da tastiera predefinite se usi un lettore di schermo o vuoi evitare accidentalmente di innescare un'azione con una scorciatoia. dismissed_enterprise_banners: "Banner aziendali nascosti" impaired: "Modalità di accesso facilitato" auto_hide_popups: "Nascondi automaticamente i banner di successo" @@ -1663,6 +1798,28 @@ it: users/invitation/form_model: principal_type: "Tipo di invito" id_or_email: "Nome o indirizzo email" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Data di fine" sharing: "Condivisione" @@ -1717,6 +1874,8 @@ it: before: "deve essere precedente al %{date}." before_or_equal_to: "deve essere precedente o uguale al %{date}." blank: "non può essere lasciato vuoto." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "deve avere la proprietà '%{property}' impostata." cannot_delete_mapping: "è necessario. Non può essere cancellato." is_for_all_cannot_modify: "è per tutti i progetti e non può quindi essere modificato." @@ -1753,8 +1912,9 @@ it: less_than_or_equal_to: "deve essere inferiore o uguale a %{count}." not_available: "non è disponibile a causa di una configurazione di sistema." not_deletable: "non può essere eliminato." + not_editable: "cannot be edited because it is already in effect." not_current_user: "non è l'utente attuale." - only_one_active_sprint_allowed: "è consentito un solo sprint attivo per progetto." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "non trovato." not_a_date: "non è una data valida." not_a_datetime: "non è un'orario valido." @@ -1785,6 +1945,10 @@ it: non fornisce un "Contesto sicuro". Usa HTTPS o un indirizzo di loopback, come localhost. wrong_length: "è della lunghezza sbagliata (dovrebbe essere %{count} caratteri)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1895,6 +2059,9 @@ it: project_initiation_request_disabled: "La richiesta di avvio del progetto è disattivata. Deve essere attivata per creare la macro-attività dell'artefatto." types: in_use_by_work_packages: "ancora in uso dalla macro-attività: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "Anche il modulo '%{dependency}' deve essere abilitato dal momento che il modulo '%{module}' dipende da esso." format: "%{message}" @@ -2100,6 +2267,10 @@ it: description: "'Conferma password' deve coincidere con il testo del campo 'Nuova password'." status: invalid_on_create: "non è uno stato valido per i nuovi utenti." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Si prega di scegliere almeno un utente o un gruppo." role_blank: "deve essere assegnato." @@ -2366,8 +2537,8 @@ it: Abilitare i backup consentirà a ogni utente i permessi necessari e a questo token di backup di scaricare un backup contenente tutti i dati di quest'installazione di OpenProject. Questo include i dati di tutti gli altri utenti. info: > Dovrai generare un token di backup per poterne creare uno. Ogni volta che vorrai richiedere un backup dovrai fornire questo token. Puoi eliminare il token di backup per disabilitarli per questo utente. - verification: > - Inserisci %{word} per confermare di voler %{action} il token di backup. + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: ripristina verification_word_create: crea warning: > @@ -2806,7 +2977,7 @@ it: title: one: "Un giorno rimanente del token di prova %{trial_plan}" other: "%{count} giorni rimanenti del token di prova %{trial_plan}" - description: "Hai accesso a tutte le funzionalità %{trial_plan}." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "Hai richiesto un token di prova, ma questa richiesta non è più disponibile. Riprova." wait_for_confirmation: "Ti abbiamo inviato un'e-mail per confermare il tuo indirizzo al fine di recuperare un token di prova." @@ -2823,10 +2994,8 @@ it: confirmation_subline: > Controlla la tua casella di posta e segui i passaggi per iniziare la tua prova gratuita di 14 giorni. domain_caption: Il token sarà valido per il tuo nome host attualmente configurato. - receive_newsletter_html: > - Voglio ricevere la newsletter di OpenProject. - consent_html: > - Accetto i termini di servizio e l'informativa sulla privacy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabilitati." @@ -2914,8 +3083,8 @@ it: work_package_edit: "Macro-attività modificata" work_package_note: "Aggiunta nota alla macro-attività" title: - project: "Progetto: %{name}" - subproject: "Sottoprogetto: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Esporta" @@ -3166,6 +3335,7 @@ it: Modalità di programmazione regolata automaticamente con aggiornamento della versione. totals_removed_from_childless_work_packages: >- I totali di lavoro e avanzamento vengono rimossi automaticamente per le macro-attività non principali con l'aggiornamento della versione. Questa è un'attività di manutenzione e può essere tranquillamente ignorata. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Le macro-attività figlie senza Lavoro vengono ignorate. total_percent_complete_mode_changed_to_simple_average: >- @@ -3173,9 +3343,9 @@ it: links: configuration_guide: "Guida di configurazione" get_in_touch: "Hai dei dubbi? Mettiti in contatto con noi." - instructions_after_registration: "Puoi accedere non appena il tuo account è stato attivato cliccando %{signin}." - instructions_after_logout: "Può accedere nuovamente cliccando %{signin}." - instructions_after_error: "Si può provare ad accedere nuovamente cliccando %{signin}. Se l'errore persiste, chiedi aiuto al tuo amministratore." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Intelligenza artificiale (IA)" @@ -3367,6 +3537,8 @@ it: label_calendar_show: "Mostra Calendario" label_category: "Categoria" label_completed: Completato + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Consenso dell'utente" label_wiki_menu_item: Voce di menu wiki label_select_main_menu_item: Seleziona una nuova voce del menu principale @@ -3533,6 +3705,7 @@ it: label_subject_or_id: "Oggetto o ID" label_calendar_subscriptions: "Iscrizioni calendario" label_identifier: "Identificatore" + label_project_identifier: "Project identifier" label_in: "in" label_in_less_than: "in meno di" label_in_more_than: "in più di" @@ -3666,11 +3839,13 @@ it: label_news_view_all: "Vedi tutte le notizie" label_next: "Prossimo" label_next_week: "Prossima settimana" + label_next_year: "Next year" label_no_change_option: "(Nessuna modifica)" label_no_data: "Nessun dato da visualizzare" label_no_due_date: "nessuna data di fine" label_no_start_date: "nessuna data di inizio" label_no_parent_page: "Nessuna pagina genitore" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifiche" label_nothing_display: "Niente da visualizzare" label_nobody: "nessuno" @@ -3699,6 +3874,8 @@ it: label_overall_activity: "Totale attività" label_overview: "Panoramica" label_page_title: "Titolo della Pagina" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "parte di" label_password_lost: "Password dimenticata?" label_password_rule_lowercase: "Minuscolo" @@ -3725,6 +3902,7 @@ it: label_preview_not_available: "Anteprima non disponibile" label_previous: "Precedente" label_previous_week: "Settimana precedente" + label_previous_year: "Previous year" label_principal_invite_via_email: " o invita nuovi utenti via e-mail" label_principal_search: "Aggiungi utenti o gruppi esistenti" label_privacy_policy: "Politica di privacy e sicurezza dei dati" @@ -3836,6 +4014,7 @@ it: label_start_to_start: "dall'inizio all'inizio" label_statistics: "Statistiche" label_status: "Stato" + label_status_plural: "Statuses" label_storage_free_space: "Spazio di archiviazione su disco rimanente" label_storage_used_space: "Spazio di archiviazione su disco utilizzato" label_storage_group: "File System di archiviazione %{identifier}" @@ -3864,6 +4043,7 @@ it: label_title: "Titolo" label_projects_menu: "Progetti" label_today: "oggi" + label_today_capitalized: "Oggi" label_token_version: "Versione Token" label_today_as_start_date: "Seleziona oggi come data di inizio." label_today_as_due_date: "Seleziona oggi come data di fine." @@ -3884,7 +4064,7 @@ it: label_user: "Utente" label_user_and_permission: "Utenti e autorizzazioni" label_user_named: "Utente %{name}" - label_user_activity: "attività di %{value}" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonimo" label_user_menu: "Menu utente" label_user_new: "Nuovo utente" @@ -3971,6 +4151,15 @@ it: one: "1 file" other: "%{count} file" zero: "nessun file" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "ieri" label_zen_mode: "Modalità Zen" label_role_type: "Tipo" @@ -3979,6 +4168,22 @@ it: label_not_changeable: "(non modificabile)" label_global: "Globale" label_seeded_from_env_warning: Questo record è stato creato tramite l'impostazione di una variabile d'ambiente. Non è modificabile tramite l'interfaccia utente. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Errore nell'esecuzione della macro %{macro_name}" macro_unavailable: "Non può essere visualizzata la macro %{macro_name}." macros: @@ -4013,7 +4218,7 @@ it: center: "Al centro notifiche" see_in_center: "Vedi commento nel centro notifiche" settings: "Modifica impostazioni email" - salutation: "Ciao %{user}" + salutation: "Hello %{user}," salutation_full_name: "Nome e cognome" work_packages: created_at: "Creato il %{timestamp} da %{user} " @@ -4043,7 +4248,7 @@ it: note: "Nota: \"%{note}\"" sharing: work_packages: - allowed_actions: "Puoi %{allowed_actions} questa macro-attività. Questa impostazione può cambiare a seconda del ruolo e delle autorizzazioni del progetto." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "Per accedere a questa macro-attività è necessario creare e attivare un account su %{instance}" open_work_package: "Apri macro-attività" subject: "La macro-attività #%{id} è stata condivisa con te" @@ -4142,9 +4347,9 @@ it: roles: "Ora hai i seguenti ruoli:" mail_user_activation_limit_reached: subject: Limite di attivazione dell'utente raggiunto - message: | - Un nuovo utente (%{email}) ha tentato di creare un account su un ambiente OpenProject che gestisci (%{host}). - L'utente non può attivare il proprio account dal momento che è stato raggiunto il limite di utente. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "Per consentire all'utente di registrarsi puoi: " a: "Aggiorna il tuo piano di pagamento ([here](upgrade_url))" #here turned into a link @@ -4328,6 +4533,12 @@ it: permission_manage_versions: "Gestire le versioni" permission_manage_wiki: "Gestire le pagine wiki" permission_manage_wiki_menu: "Gestire i menu wiki" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Spostare le macro-attività" permission_protect_wiki_pages: "Proteggere l'accesso a pagine wiki" permission_rename_wiki_pages: "Rinominare pagine wiki" @@ -4473,10 +4684,10 @@ it: info: "L'eliminazione del repository è un'operazione irreversibile." info_not_managed: "Nota: questa azione NON eliminerà il contenuto di questo archivio, che non è gestito direttamente da OpenProject." managed_path_note: "La seguente cartella sarà eliminata: %{path}" - repository_verification: "Immettere l'identificatore del progetto %{identifier} per verificare l'eliminazione del suo archivio gestito dal sistema." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Vuoi davvero eliminare la risorsa %{repository_type} del %{project_name} progetto?" - subtitle_not_managed: "Vuoi davvero eliminare la risorsa %{repository_type} accessibile al link %{url} dal progetto %{project_name}?" - title: "Elimina la risorsa %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Eliminare la risorsa collegata %{repository_type}?" errors: build_failed: "Impossibile creare il repository con la configurazione richiesta. %{reason}" @@ -4526,7 +4737,7 @@ it: storage: not_available: "Consumo di spazio su disco non è disponibile per questo repository." update_timeout: "Mantieni l'ultima informazione sullo spazio su disco richiesto per un archivio di progetto per N minuti.\nPoichè il calcolo dello spazio su disco richiesto per un archivio di progetto può essere un'attività costosa, aumentare questo intervallo riduce l'impatto sulle prestazioni." - oauth_application_details: "Il valore segreto del client non sarà nuovamente accessibile dopo aver chiuso questa finestra. Copia questi valori nelle impostazioni d'integrazione di Nextcloud OpenProject:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Vai alla pagina delle impostazioni" setup_documentation_details: "Se hai bisogno di aiuto per configurare un nuovo archivio file, controlla la documentazione: " setup_documentation_details_link_text: "Configurazione archivi file" @@ -4571,15 +4782,15 @@ it: setting_apiv3_cors_title: "Condivisione incrociata delle risorse (CORS - Cross-Origin Resource Sharing)" setting_apiv3_cors_enabled: "Abilita CORS" setting_apiv3_cors_origins: "Origini di condivisione CORS (Cross-Origin Resource Sharing) API V3 consentite" - setting_apiv3_cors_origins_text_html: > - Se CORS è abilitato, queste sono le origini che possono accedere alle API di OpenProject.
Controlla la Documentazione sull'intestazione dell'origine per sapere come specificare i valori previsti. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Accesso in scrittura agli attributi di sola lettura" setting_apiv3_write_readonly_attributes_instructions: > Se l'opzione è abilitata, l'API consentirà agli amministratori di scrivere attributi statici di sola lettura durante la creazione, come createdAt e author. setting_apiv3_write_readonly_attributes_warning: > Questa impostazione è utile, ad esempio, per l'importazione di dati, ma consente agli amministratori di impersonare altri utenti nella creazione di elementi. Tutte le richieste di creazione vengono comunque registrate con il vero autore. - setting_apiv3_write_readonly_attributes_additional: > - Per maggiori informazioni sugli attributi e sulle risorse supportate, consulta %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Dimensione massima della pagina API" setting_apiv3_max_page_size_instructions: > Imposta la dimensione massima della pagina con cui l'API risponderà. Non sarà possibile eseguire richieste API che restituiscano più valori in una singola pagina. @@ -4676,7 +4887,7 @@ it: setting_work_package_properties: "Proprietà della macro-attività" setting_work_package_startdate_is_adddate: "Usa la data corrente come data di inizio per le nuove macro-attività" setting_work_packages_projects_export_limit: "Limite di esportazione di macro-attività/progetti" - setting_journal_aggregation_time_minutes: "Azioni utente aggregate all'interno" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Registra il nome d'accesso, il nome utente, e l'indirizzo mail per tutte le richieste" setting_login_required: "Autenticazione richiesta" setting_login_required_caption: "Quando l'opzione è selezionata, tutte le richieste all'applicazione devono essere autenticate." @@ -4757,6 +4968,12 @@ it: setting_welcome_text: "Blocco di testo di benvenuto" setting_welcome_title: "Blocco di testo del titolo" setting_welcome_on_homescreen: "Mostra il blocco testo di benvenuto nella pagina home" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Modalità evidenziazione predefinita" setting_work_package_list_default_highlighted_attributes: "Attributi evidenziati in linea predefiniti" setting_working_days: "Giorni lavorativi" @@ -4923,10 +5140,12 @@ it: section_work_week: "Settimana lavorativa" section_holidays_and_closures: "Festività e chiusure" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "Non hai i permessi necessari per visualizzare questa pagina." activities: enable_internal_comments: "Abilita commenti interni" - helper_text: "I commenti interni consentono a un team interno di comunicare privatamente. Questi sono visibili solo a determinati ruoli che hanno i permessi necessari e non saranno visibili pubblicamente. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Testo semplice" @@ -5048,6 +5267,10 @@ it: text_plugin_assets_writable: "Cartella del pool di plugin installati scrivibile" text_powered_by: "Offerto da %{link}" text_project_identifier_info: "Solo le lettere minuscole (a-z), numeri, trattini e trattini bassi sono consentiti, devi iniziare con una lettera maiuscola." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Riassegna alla macro-attività:" text_regexp_multiline: 'L''espressione regolare viene applicata in modalità multi-linea. ad esempio, ^---\s+' text_repository_usernames_mapping: "Seleziona o aggiorna l'utente OpenProject mappato per ogni nome utente trovato nel registro dell'archivio. Gli utenti con lo stesso nome utente e repository OpenProject o e-mail vengono mappati automaticamente." @@ -5155,18 +5378,18 @@ it: version_status_locked: "bloccato" version_status_open: "aperte" note: Nota - note_password_login_disabled: "L'accesso tramite password è stato disabilitato da %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Attenzione warning_attachments_not_saved: "%{count} file non possono essere salvati." - warning_imminent_user_limit: > - Hai invitato più utenti di quanti siano supportati dal tuo attuale piano. Gli utenti invitati potrebbero non essere in grado di unirsi al vostro ambiente OpenProject. Per favore aggiorna il tuo piano o blocca gli utenti esistenti al fine di consentire agli utenti invitati e e registrati di unirsi. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | L'attivazione della e-mail è scaduta. Te ne abbiamo mandata una nuova a %{email}. Clicca il link al suo interno per attivare il tuo account. warning_user_limit_reached: > L'aggiunta di ulteriori utenti supererà il limite attuale. Contatta un amministratore per aumentare il limite di utenti e garantire che gli utenti esterni possano accedere a questa istanza. - warning_user_limit_reached_admin: > - L'aggiunta di ulteriori utenti supererà il limite attuale. Aggiorna il tuo piano per poter garantire che gli utenti esterni possano accedere a questa istanza. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > Raggiunto il limite di utenti (%{current}/%{max} utenti attivi). Si prega di contattare sales@openproject.com per aggiornare il tuo piano dell'edizione Enterprise e aggiungere ulteriori utenti. warning_protocol_mismatch_html: > @@ -5226,7 +5449,7 @@ it: reminders: label_remind_at: "Data" note_placeholder: "Perché stai impostando questo promemoria?" - create_success_message: "Il promemoria è stato impostato con successo. Riceverai una notifica per questa macro-attività %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Promemoria aggiornato con successo." success_deletion_message: "Promemoria eliminato con successo." sharing: @@ -5257,8 +5480,8 @@ it: text_user_limit_reached_admins: 'Con l''aggiunta di ulteriori utenti, verrà superato il limite attuale. Passa a un piano superiore per poter aggiungere altri utenti.' warning_user_limit_reached: > Con l'aggiunta di ulteriori utenti, verrà superato il limite attuale. Contatta un amministratore per incrementare il limite di utenti e garantire che gli utenti esterni possano accedere a questo %{entity}. - warning_user_limit_reached_admin: > - Con l'aggiunta di ulteriori utenti, verrà superato il limite attuale. Passa a un piano superiore per garantire che gli utenti esterni possano accedere a questo %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Seleziona gli utenti con cui condividere questo %{entity}" warning_locked_user: "Non è possibile condividere con l'utente %{user}: l'utente è bloccato" user_details: @@ -5378,6 +5601,7 @@ it: project: Non divulgato - Il progetto è invisibile a causa della mancanza dei permessi. ancestor: Non divulgato - L'antenato è invisibile a causa della mancanza dei permessi. definingProject: Non divulgato - Il progetto è invisibile a causa della mancanza dei permessi. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-autorizzazione" diff --git a/config/locales/crowdin/ja.yml b/config/locales/crowdin/ja.yml index a266d2d5d6b..4a73d0e65a3 100644 --- a/config/locales/crowdin/ja.yml +++ b/config/locales/crowdin/ja.yml @@ -108,7 +108,7 @@ ja: jemalloc_allocator: Jemalloc メモリアロケータ journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -127,7 +127,7 @@ ja: description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: - name: "Name" + name: "名前" url: "Jira Server/Data Center URL" personal_access_token: "Personal Access Token" button_add: "Add configuration" @@ -153,7 +153,7 @@ ja: parse_error: "Failed to parse Jira API response: %{message}" api_error: "Jira API returned error status %{status}" columns: - projects: "Projects" + projects: "プロジェクト" last_change: "Last change" added: "Added" label_ago: "%{amount} ago" @@ -373,11 +373,69 @@ ja: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "ログインと登録" announcements: @@ -599,6 +657,14 @@ ja: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -758,6 +824,11 @@ ja: description: > プロジェクトは、その役割と関連する権限に応じてプロジェクトメンバーにのみ表示されます。子プロジェクトは影響を受けず、独自の設定があります。 change_identifier: 識別子の変更 + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -984,9 +1055,9 @@ ja: groups: member_in_these_groups: "このユーザーは現在以下のグループのメンバーです:" no_results_title_text: このユーザーは現在どのグループのメンバーでもありません。 - summary_with_more: '%{names} と %{count_link} のメンバー。' + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} 以上" - summary: '%{names} のメンバー .' + summary_html: Member of %{names}. memberships: no_results_title_text: このユーザは現在プロジェクトのメンバーではありません。 open_profile: "プロファイルを開く" @@ -1041,6 +1112,63 @@ ja: user: "ユーザはログインして %{project} にアクセスできるようになりました。一方で、そのユーザを使って計画を立てたり、ワークパッケージを割り当てたりすることができます。" placeholder_user: "プレースホルダーを %{project} で使用できるようになりました。一方で、そのユーザを使って計画を立てたり、ワークパッケージを割り当てたりすることができます。" group: "グループは %{project} の一部になりました。一方で、そのグループを使って計画を立てたり、ワークパッケージを割り当てたりすることができます。" + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "テキスト(本文)" placeholder_users: @@ -1048,11 +1176,11 @@ ja: プレースホルダーユーザを削除する権限がありません。 プレースホルダー ユーザーがメンバーであるすべてのプロジェクトのメンバーを管理する権利はありません。 delete_tooltip: "プレースホルダー ユーザーを削除" deletion_info: - heading: "プレースホルダー ユーザー %{name} を削除" + heading_html: "Delete placeholder user %{name}" data_consequences: > プレースホルダー ユーザのすべての発生(担当者、担当者、その他のユーザ値など)は、「削除されたユーザー」というアカウントに再割り当てられます。 削除されたすべてのアカウントのデータがこのアカウントに再割り当てられるため、ユーザーが作成したデータと別の削除されたアカウントのデータを区別することはできません。 irreversible: "この操作は元に戻せません" - confirmation: "削除を確認するため、プレースホルダーユーザー名 %{name} を入力してください。" + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1083,10 +1211,10 @@ ja: status_excluded_from_totals_text: |- このオプションをオンにすると、このステータスのワークパッケージを合計作業量、 残作業量、および階層構造で完了させることができます。 - status_percent_complete_text: |- - ステータスベースの進捗計算モードでは、このステータスが選択されると、作業 - パッケージの「完了%」が自動的にこの値に設定される。 - ワークベースモードでは無視される。 + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work + package is automatically set to this value when this status is selected. + Ignored in work-based mode. status_readonly_html: | ワークパッケージを読み取り専用としてマークするには、このオプションをオンにしてください。 ステータスを除いて変更することはできません。 @@ -1349,7 +1477,7 @@ ja: シングルサインオンプロバイダー '%{name}' のユーザー登録は制限されています。 管理者にアカウントを有効にするか、このプロバイダーの自己登録制限を変更してください。 login_with_auth_provider: "または、既存のアカウントでログインしてください。" signup_with_auth_provider: "もしくはこちらでサインアップ" - auth_source_login: アカウントをアクティブにするのに%{login}としてログインしてください。 + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: アカウントをアクティブにするのにログインしてください。 actionview_instancetag_blank_option: "選択してください" activemodel: @@ -1620,6 +1748,11 @@ ja: consented_at: "同意しました。" group: identity_url: "アイデンティティ URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "ルック&フィール" header_alerts: "アラート" @@ -1628,8 +1761,6 @@ ja: button_update_user_information: "Update profile" comments_sorting: "ワークパッケージのアクティビティを並べ替えて表示する" disable_keyboard_shortcuts: "キーボードショートカットを無効にする" - disable_keyboard_shortcuts_caption_html: |- - スクリーンリーダーを使用している場合や、ショートカットでアクションを誤ってトリガーすることを避けたい場合は、デフォルトの キーボードショートカット を無効にすることができます。 dismissed_enterprise_banners: "非表示の企業バナー" impaired: "アクセシビリティモード" auto_hide_popups: "サクセスバナーを自動的に隠す" @@ -1650,6 +1781,28 @@ ja: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "名前またはメールアドレス" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "終了日" sharing: "共有" @@ -1704,6 +1857,8 @@ ja: before: "は%{date}の前にしてください。" before_or_equal_to: "は%{date}より以前にしてください。" blank: "は空白にすることができません。" + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "プロパティ '%{property}' が設定されている必要があります。" cannot_delete_mapping: "必須です。削除できません。" is_for_all_cannot_modify: "はすべてのプロジェクトで使用されているため、変更できません。" @@ -1740,8 +1895,9 @@ ja: less_than_or_equal_to: "は%{count}以下の値にしてください。" not_available: "はシステム構成のため使用できません。" not_deletable: "削除できません。" + not_editable: "cannot be edited because it is already in effect." not_current_user: "現在のユーザーではありません。" - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "見つかりません。" not_a_date: "は有効な日付ではありません。" not_a_datetime: "は有効な日時ではありません。" @@ -1772,6 +1928,10 @@ ja: は「セキュアコンテキスト」を提供していません。HTTPSを使用するか、localhostのようなループバックアドレスを使用してください。 wrong_length: "は%{count}文字を入力してください。" models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1881,6 +2041,9 @@ ja: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "まだワークパッケージによって使用されています: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "モジュール '%{dependency}' も有効にする必要があります。なぜなら、モジュール '%{module}' はそれに依存しているからです。" format: "%{message}" @@ -2085,6 +2248,10 @@ ja: description: "「パスワードの確認」は、「新しいパスワード」フィールドの入力と一致する必要があります。" status: invalid_on_create: "新規ユーザーの有効なステータスではありません。" + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "一つ以上のユーザまたはグループを選択してください。" role_blank: "を割り当てる必要があります。" @@ -2333,8 +2500,8 @@ ja: バックアップを有効にすると、必要な権限とこのバックアップトークンを持つすべてのユーザーが、この OpenProject にインストールされたすべてのデータを含むバックアップをダウンロードできるようになります。これには、他のすべてのユーザーのデータも含まれます。 info: > バックアップを作成するためには、バックアップトークンを生成する必要があります。バックアップを要求するたびに、このトークンを指定する必要があります。バックアップトークンを削除すると、このユーザーのバックアップを無効にすることができます。 - verification: > - %{word} と入力して、バックアップトークンを %{action} することを確認します。 + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: リセット verification_word_create: 作成 warning: > @@ -2752,7 +2919,7 @@ ja: teaser: title: other: "%{count} 日後 %{trial_plan} トライアルトークンです" - description: "すべての %{trial_plan} 機能にアクセスできます。" + description_html: "You have access to all %{trial_plan} features." trial: not_found: "トライアルトークンをリクエストしましたが、そのリクエストはもう利用できません。もう一度やり直してください。" wait_for_confirmation: "トライアルトークンを取得するために、あなたのアドレスを確認するためのメールを送信しました。" @@ -2769,10 +2936,8 @@ ja: confirmation_subline: > 受信トレイを確認し、手順に従って14日間の無料トライアルを開始してください。 domain_caption: このトークンは、現在設定されているホスト名に対して有効です。 - receive_newsletter_html: > - OpenProject ニュースレター を受け取りたい。 - consent_html: > - サービス規約 および プライバシーポリシーに同意します。 + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "無効だ。" @@ -2860,8 +3025,8 @@ ja: work_package_edit: "ワークパッケージが編集されました" work_package_note: "ワークパッケージに注記が追加されました" title: - project: "プロジェクト: %{name}" - subproject: "子プロジェクト: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "エクスポート" @@ -3112,6 +3277,7 @@ ja: スケジュールモードはバージョンアップ時に自動的に調整されます。 totals_removed_from_childless_work_packages: >- バージョンアップデートを伴う親でないワークパッケージに対して作業と進捗の合計が自動的に削除されます。 これはメンテナンス作業であり、無視することができます。 + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- 「予定時間」が含まれていない子ワークパッケージは無視されます。 total_percent_complete_mode_changed_to_simple_average: >- @@ -3119,9 +3285,9 @@ ja: links: configuration_guide: "設定ガイド" get_in_touch: "ご質問がありますか?ご連絡ください。" - instructions_after_registration: "%{signin}をクリックして、アカウントが有効された後にログインできます。" - instructions_after_logout: "%{signin}をクリックして再びログインできます。" - instructions_after_error: "%{signin} をクリックして再びログインを試行できます。エラーが解決しない場合は、管理者にお問い合わせください。" + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3313,6 +3479,8 @@ ja: label_calendar_show: "カレンダーを表示" label_category: "カテゴリ" label_completed: 完了しました + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "ユーザーの同意" label_wiki_menu_item: Wikiのメニュー項目 label_select_main_menu_item: 新しいメインメニュー項目を選択する @@ -3479,6 +3647,7 @@ ja: label_subject_or_id: "タイトルまたはID" label_calendar_subscriptions: "カレンダーのサブスクリプション" label_identifier: "識別子" + label_project_identifier: "Project identifier" label_in: "今日から○日後" label_in_less_than: "今日から○日後以前" label_in_more_than: "今日から○日後以降" @@ -3612,11 +3781,13 @@ ja: label_news_view_all: "全てのニュースを表示" label_next: "次へ" label_next_week: "次の週" + label_next_year: "Next year" label_no_change_option: "(変更なし)" label_no_data: "表示できるデータがありません。" label_no_due_date: "終了日なし" label_no_start_date: "開始日なし" label_no_parent_page: "親ページはありません" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "通知" label_nothing_display: "表示するものはありません" label_nobody: "無記名" @@ -3645,6 +3816,8 @@ ja: label_overall_activity: "全ての活動" label_overview: "概要" label_page_title: "ページタイトル" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "以下の一部:" label_password_lost: "パスワードの再発行" label_password_rule_lowercase: "小文字" @@ -3671,6 +3844,7 @@ ja: label_preview_not_available: "プレビューは利用できません" label_previous: "前へ" label_previous_week: "先週" + label_previous_year: "Previous year" label_principal_invite_via_email: " またはメールで新しいユーザを招待" label_principal_search: "既存のユーザーまたはグループを追加する" label_privacy_policy: "データのプライバシーとセキュリティポリシー" @@ -3782,6 +3956,7 @@ ja: label_start_to_start: "最初~最初" label_statistics: "統計情報" label_status: "ステータス" + label_status_plural: "Statuses" label_storage_free_space: "残りのディスク容量" label_storage_used_space: "使用ディスク容量" label_storage_group: "ストレージのファイルシステム %{identifier}" @@ -3810,6 +3985,7 @@ ja: label_title: "タイトル" label_projects_menu: "プロジェクト" label_today: "今日" + label_today_capitalized: "今日" label_token_version: "トークンのバージョン" label_today_as_start_date: "開始日として今日を選択してください。" label_today_as_due_date: "今日を終了日として選択してください。" @@ -3830,7 +4006,7 @@ ja: label_user: "ユーザ" label_user_and_permission: "ユーザーと権限" label_user_named: "ユーザー名 %{name}" - label_user_activity: "%{value}の活動" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "匿名ユーザ" label_user_menu: "ユーザーメニュー" label_user_new: "新規ユーザ" @@ -3917,6 +4093,12 @@ ja: one: "1 ファイル" other: "%{count} ファイル" zero: "ファイルがありません" + label_x_days: + other: "%{count} days" + label_x_working_days: + other: "%{count} working days" + label_x_working_days_time_off: + other: "Time off: %{count} working days" label_yesterday: "昨日" label_zen_mode: "禅モード" label_role_type: "種別" @@ -3925,6 +4107,22 @@ ja: label_not_changeable: "(変更不可)" label_global: "全般" label_seeded_from_env_warning: このレコードは設定環境変数によって作成されています。UIでは編集できません。 + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "マクロ%{macro_name}を実行中にエラーが発生しました。" macro_unavailable: "マクロ%{macro_name}を表示できません。" macros: @@ -3959,7 +4157,7 @@ ja: center: "通知センターへ" see_in_center: "通知センターにコメントを表示" settings: "メール設定の変更" - salutation: "%{user}さん,こんにちは" + salutation: "Hello %{user}," salutation_full_name: "フルネーム" work_packages: created_at: "%{timestamp} で %{user} によって作成されました " @@ -3988,7 +4186,7 @@ ja: note: "注意: “%{note}”" sharing: work_packages: - allowed_actions: "このワークパッケージは %{allowed_actions} 可能です。プロジェクトのロールと権限によって変更できます。" + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "このワークパッケージにアクセスするには、 %{instance} のアカウントを作成して有効化する必要があります。" open_work_package: "ワークパッケージを開く" subject: "ワークパッケージ%{id} があなたと共有されました" @@ -4087,9 +4285,9 @@ ja: roles: "次のロールがあります:" mail_user_activation_limit_reached: subject: ユーザーのアクティブ化の上限に達しました。 - message: | - 新しいユーザー(%{email})が管理しているOpenProjectの環境(%{host}))上にアカウントを作成しようとしました。 - ユーザーの制限に達しているため、ユーザーは自分のアカウントをアクティブ化できません。 + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "ユーザーがサインインできるようにするには、次のいずれかを行います: " a: "お支払いプランをアップグレードします。 ([ここ](upgrade_url))" #here turned into a link @@ -4272,6 +4470,12 @@ ja: permission_manage_versions: "バージョンの管理" permission_manage_wiki: "Wiki の管理" permission_manage_wiki_menu: "Wikiメニューの管理" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "ワークパッケージの移動" permission_protect_wiki_pages: "Wikiページの凍結" permission_rename_wiki_pages: "Wikiページ名の変更" @@ -4417,10 +4621,10 @@ ja: info: "リポジトリの削除は復元できない操作です。" info_not_managed: "注: これは、このリポジトリの内容を削除しません。OpenProject によって管理されていません。" managed_path_note: "次のディレクトリが消去されます: %{path}" - repository_verification: "リポジトリの削除を確認するため、プロジェクトの識別子 %{identifier} を入力してください。" + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "プロジェクト %{project_name} の %{repository_type} を削除してもよろしいですか?" - subtitle_not_managed: "プロジェクト %{project_name} からリンクされた %{repository_type} %{url} を削除してもよろしいですか?" - title: "%{repository_type} を削除" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "リンクされた %{repository_type} を削除しますか?" errors: build_failed: "選択した構成のリポジトリを作成することができません。%{reason}" @@ -4470,7 +4674,7 @@ ja: storage: not_available: "このリポジトリのディスク ストレージ消費量は利用できません。" update_timeout: "最後のリポジトリに必要なディスク容量の情報を N 分間保持します。\nリポジトリの必要なディスク容量を計算するにはコストがかかるため、パフォーマンスへの影響を減らすにはこの値を増やしてください。" - oauth_application_details: "このウィンドウを閉じた後、クライアントの秘密の値にはアクセスできません。これらの値をNextcloudのOpenProject統合設定にコピーしてください:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "設定ページに移動" setup_documentation_details: "新しいファイルストレージの設定にヘルプが必要な場合は、ドキュメントを確認してください。 " setup_documentation_details_link_text: "ファイルストレージのセットアップ" @@ -4515,15 +4719,15 @@ ja: setting_apiv3_cors_title: "クロスオリジン資源共有 (CORS)" setting_apiv3_cors_enabled: "CORSを有効にする" setting_apiv3_cors_origins: "API V3のオリジン間リソース共有 (CORS) が許可されています" - setting_apiv3_cors_origins_text_html: > - CORS が有効になっている場合、これらは OpenProject API へのアクセスが許可されている起源です。
期待される値を指定する方法については、 Origin ヘッダー のドキュメントを確認してください。 + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "読み取り専用属性への書き込み権限" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "API ページの最大サイズ" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4620,7 +4824,7 @@ ja: setting_work_package_properties: "項目名" setting_work_package_startdate_is_adddate: "今日の日付を新しいワークパッケージの開始日とする" setting_work_packages_projects_export_limit: "ワークパッケージ/プロジェクトのエクスポート制限" - setting_journal_aggregation_time_minutes: "以下で集計されたユーザーアクション" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "全てのリクエストに対し、ユーザのログイン名、名前、メールアドレスをログに記録する" setting_login_required: "認証が必要" setting_login_required_caption: "チェックすると、アプリケーションへのすべてのリクエストが認証される必要があります。" @@ -4701,6 +4905,12 @@ ja: setting_welcome_text: "ようこそブロックのテキスト" setting_welcome_title: "ようこそブロックのタイトル" setting_welcome_on_homescreen: "ホーム画面にようこそブロックを表示" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "デフォルトの強調表示モード" setting_work_package_list_default_highlighted_attributes: "デフォルトのインライン強調表示属性" setting_working_days: "営業日" @@ -4867,10 +5077,12 @@ ja: section_work_week: "作業週" section_holidays_and_closures: "休日と休業日" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "このページを表示するために必要な権限がありません。" activities: enable_internal_comments: "内部コメントを有効にする" - helper_text: "社内コメントにより、社内チームは個人的にコミュニケーションを取ることができます。 これらは、必要な権限を持つ選択したロールにのみ表示され、公開されません。 %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "プレーンテキスト" @@ -4992,6 +5204,10 @@ ja: text_plugin_assets_writable: "プラグインの「assets」ディレクトリが書き込み可能" text_powered_by: "Powered by %{link}" text_project_identifier_info: "アルファベット小文字(a-z)・数字・ハイフン・アンダースコアが使えます。アルファベット小文字で始まる必要があります。" + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "ワークパッケージへの再割り当て:" text_regexp_multiline: '正規表現は、複数行モードで適用されます。例えば、^---\s+' text_repository_usernames_mapping: "リポジトリのログから検出されたユーザ名をどのOpenProjectユーザに関連づけるかを選択してください。\nログ上のユーザ名またはメールアドレスがOpenProjectのユーザと一致する場合は自動的に関連づけます。" @@ -5098,17 +5314,17 @@ ja: version_status_locked: "ロック済み" version_status_open: "未完了" note: 注記 - note_password_login_disabled: "パスワードを利用してログインは%{configuration}によって無効にされています。" + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: 注意 warning_attachments_not_saved: "%{count} 件のファイルを保存できませんでした。" - warning_imminent_user_limit: > - 現在のプランでサポートされているユーザーよりも多くのユーザーを招待しました。 招待されたユーザーは、OpenProject環境に参加できない場合があります。 招待者と登録ユーザーが参加できるようにするには、プランをアップグレードするか、既存のユーザーをブロックしてください。 + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | アクティベーションメールの有効期限が切れています。%{email} に新しいメールを送りました。メール内のリンクをクリックして、アカウントを有効にしてください。 warning_user_limit_reached: > ユーザーを追加すると、現在の制限を超えます。外部ユーザがこのサイトにアクセスできるようにするため、ユーザ制限を増やすには管理者に連絡してください。 - warning_user_limit_reached_admin: > - ユーザーを追加すると、現在の制限を超えます。外部ユーザーがこのサイトにアクセスできるように、プランをアップグレードしてください。 + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > ユーザー制限(%{current}/%{max} アクティブユーザー)に達しました。 sales@openproject.com に連絡してEnterprise Editionプランをアップグレードし、ユーザーを追加してください。 warning_protocol_mismatch_html: > @@ -5168,7 +5384,7 @@ ja: reminders: label_remind_at: "日付" note_placeholder: "なぜこのリマインダーを設定しているのですか?" - create_success_message: "リマインダーが正常に設定されました。このワークパッケージの通知を受け取ります %{reminder_time}。" + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "リマインダーが正常に更新されました。" success_deletion_message: "リマインダーは正常に削除されました。" sharing: @@ -5199,8 +5415,8 @@ ja: text_user_limit_reached_admins: '追加のユーザーを追加すると、現在の制限を超過します。より多くのユーザーを追加できるようにするには、プランをアップグレードしてください。' warning_user_limit_reached: > 追加ユーザーを追加すると、現在の上限を超えます。 外部ユーザーがこの %{entity} にアクセスできるようにするには、管理者に問い合わせてください。 - warning_user_limit_reached_admin: > - 追加のユーザーを追加すると、現在の制限を超過します。外部ユーザーがこの%{entity}にアクセスできるようにするには、プランをアップグレードしてください。プランをアップグレードする。 + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "この %{entity} を共有するユーザーを選択してください" warning_locked_user: "ユーザー %{user} はロックされているため、共有することはできません" user_details: @@ -5320,6 +5536,7 @@ ja: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: 未公開 - アクセス許可がないため、祖先は見えません。 definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "事前承認" diff --git a/config/locales/crowdin/js-af.yml b/config/locales/crowdin/js-af.yml index ab8cfd461c8..32f1cd5671e 100644 --- a/config/locales/crowdin/js-af.yml +++ b/config/locales/crowdin/js-af.yml @@ -349,8 +349,6 @@ af: label_collapse_all: "Vou almal op" label_collapse_text: "Collapse text" label_comment: "Opmerking" - label_committed_at: "%{committed_revision_link} at %{date}" - label_committed_link: "committed revision %{revision_identifier}" label_contains: "bevat" label_created_on: "created on" label_edit_comment: "Edit this comment" @@ -1218,3 +1216,7 @@ af: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-ar.yml b/config/locales/crowdin/js-ar.yml index 04305661c9c..6df9b3ae33c 100644 --- a/config/locales/crowdin/js-ar.yml +++ b/config/locales/crowdin/js-ar.yml @@ -349,8 +349,6 @@ ar: label_collapse_all: "طَيْ الجميع" label_collapse_text: "Collapse text" label_comment: "تعليق" - label_committed_at: "%{committed_revision_link} في %{date}" - label_committed_link: "مراجعة ملزمة ل%{revision_identifier}" label_contains: "يحتوي على" label_created_on: "تم إنشاؤها على" label_edit_comment: "تعديل هذا التعليق" @@ -1234,3 +1232,7 @@ ar: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-az.yml b/config/locales/crowdin/js-az.yml index 1bc2ce5ba1d..90156f18d91 100644 --- a/config/locales/crowdin/js-az.yml +++ b/config/locales/crowdin/js-az.yml @@ -349,8 +349,6 @@ az: label_collapse_all: "Hamısını yığcamlaşdır" label_collapse_text: "Collapse text" label_comment: "Comment" - label_committed_at: "%{committed_revision_link} at %{date}" - label_committed_link: "committed revision %{revision_identifier}" label_contains: "contains" label_created_on: "created on" label_edit_comment: "Edit this comment" @@ -1218,3 +1216,7 @@ az: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-be.yml b/config/locales/crowdin/js-be.yml index 98dc86615e7..3ae6b6e3ad4 100644 --- a/config/locales/crowdin/js-be.yml +++ b/config/locales/crowdin/js-be.yml @@ -349,8 +349,6 @@ be: label_collapse_all: "Згарнуць усё" label_collapse_text: "Collapse text" label_comment: "Comment" - label_committed_at: "%{committed_revision_link} at %{date}" - label_committed_link: "committed revision %{revision_identifier}" label_contains: "contains" label_created_on: "created on" label_edit_comment: "Edit this comment" @@ -1226,3 +1224,7 @@ be: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-bg.yml b/config/locales/crowdin/js-bg.yml index e94ac60f829..7df0ca14e47 100644 --- a/config/locales/crowdin/js-bg.yml +++ b/config/locales/crowdin/js-bg.yml @@ -349,8 +349,6 @@ bg: label_collapse_all: "Свиване на всички" label_collapse_text: "Collapse text" label_comment: "Коментар" - label_committed_at: "%{committed_revision_link} в %{date}" - label_committed_link: "направена ревизия %{revision_identifier}" label_contains: "съдържа" label_created_on: "създадена на" label_edit_comment: "Редактиране на този коментар" @@ -1218,3 +1216,7 @@ bg: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-ca.yml b/config/locales/crowdin/js-ca.yml index 1ad220d568b..9d39917cbaf 100644 --- a/config/locales/crowdin/js-ca.yml +++ b/config/locales/crowdin/js-ca.yml @@ -349,8 +349,6 @@ ca: label_collapse_all: "Col·lapsar tot" label_collapse_text: "Collapse text" label_comment: "Comentari" - label_committed_at: "%{committed_revision_link} el %{date}" - label_committed_link: "revisió acceptada %{revision_identifier}" label_contains: "conté" label_created_on: "creat el" label_edit_comment: "Edita aquest comentari" @@ -1218,3 +1216,7 @@ ca: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-ckb-IR.yml b/config/locales/crowdin/js-ckb-IR.yml index e5f85695a8c..604aad76159 100644 --- a/config/locales/crowdin/js-ckb-IR.yml +++ b/config/locales/crowdin/js-ckb-IR.yml @@ -349,8 +349,6 @@ ckb-IR: label_collapse_all: "Collapse all" label_collapse_text: "Collapse text" label_comment: "Comment" - label_committed_at: "%{committed_revision_link} at %{date}" - label_committed_link: "committed revision %{revision_identifier}" label_contains: "contains" label_created_on: "created on" label_edit_comment: "Edit this comment" @@ -1218,3 +1216,7 @@ ckb-IR: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-cs.yml b/config/locales/crowdin/js-cs.yml index a159cd4100c..3d37124ac43 100644 --- a/config/locales/crowdin/js-cs.yml +++ b/config/locales/crowdin/js-cs.yml @@ -265,7 +265,7 @@ cs: description: > Vyberte atributy, které chcete zobrazit v příslušných pozicích Ganttova diagramu. Všimněte si, že při najetí kursorem myši budou místo těchto atributů zobrazeny jeho popisky s daty. button_activate: "Zobrazit Ganttův diagram" - button_deactivate: "Skrýt Gantt" + button_deactivate: "Skrýt Ganttův diagram" filter: noneSelection: "(žádný)" selection_mode: @@ -349,8 +349,6 @@ cs: label_collapse_all: "Sbalit vše" label_collapse_text: "Collapse text" label_comment: "Komentář" - label_committed_at: "%{committed_revision_link} v %{date}" - label_committed_link: "provedené revize %{revision_identifier}" label_contains: "obsahuje" label_created_on: "vytvořeno" label_edit_comment: "Upravit komentář" @@ -684,14 +682,14 @@ cs: wiki_page_updated: "Wiki stránka aktualizována" membership_added: "Členství přidáno" membership_updated: "Členství bylo aktualizováno" - title: "E-mail upozornění " + title: "E-mailová upozornění" pause: label: "Dočasně pozastavit denní připomenutí e-mailem" first_day: "První den" last_day: "Poslední den" text_are_you_sure: "Jste si jisti?" text_are_you_sure_to_cancel: "You have unsaved changes on this page. Are you sure you want to discard them?" - breadcrumb: "Breadcrumb" + breadcrumb: "Navigační lišta" text_data_lost: "Všechna zadaná data budou ztracena." text_user_wrote: "%{value} napsal:" types: @@ -1226,3 +1224,7 @@ cs: waiting_subtitle: network_off: "Je tu problém se sítí." network_on: "Síť je zpátky . Zkoušíme to." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-da.yml b/config/locales/crowdin/js-da.yml index 27c08614404..de4cf6c4050 100644 --- a/config/locales/crowdin/js-da.yml +++ b/config/locales/crowdin/js-da.yml @@ -348,8 +348,6 @@ da: label_collapse_all: "Fold alle sammen" label_collapse_text: "Collapse text" label_comment: "Kommentér" - label_committed_at: "%{committed_revision_link} d. %{date}" - label_committed_link: "tilknyttet revision %{revision_identifier}" label_contains: "indeholder" label_created_on: "oprettet d." label_edit_comment: "Rediger denne kommentar" @@ -1217,3 +1215,7 @@ da: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-de.yml b/config/locales/crowdin/js-de.yml index d37cb74b060..566eaadcd63 100644 --- a/config/locales/crowdin/js-de.yml +++ b/config/locales/crowdin/js-de.yml @@ -348,8 +348,6 @@ de: label_collapse_all: "Alle zuklappen" label_collapse_text: "Text einklappen" label_comment: "Kommentar" - label_committed_at: "%{committed_revision_link} am %{date}" - label_committed_link: "Revisionsnummer %{revision_identifier}" label_contains: "enthält" label_created_on: "Angelegt" label_edit_comment: "Diesen Kommentar bearbeiten" @@ -1217,3 +1215,7 @@ de: waiting_subtitle: network_off: "Es gibt ein Netzwerkproblem." network_on: "Netzwerk ist wieder da. Wir versuchen es erneut." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-el.yml b/config/locales/crowdin/js-el.yml index 1638f15fc99..bc3010a0afd 100644 --- a/config/locales/crowdin/js-el.yml +++ b/config/locales/crowdin/js-el.yml @@ -348,8 +348,6 @@ el: label_collapse_all: "Σύμπτυξη όλων" label_collapse_text: "Collapse text" label_comment: "Σχόλιο" - label_committed_at: "%{committed_revision_link} στις %{date}" - label_committed_link: "δεσμευμένη αναθεώρηση %{revision_identifier}" label_contains: "περιέχει" label_created_on: "δημιουργήθηκε στις" label_edit_comment: "Επεξεργαστείτε αυτό το σχόλιο" @@ -1217,3 +1215,7 @@ el: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-eo.yml b/config/locales/crowdin/js-eo.yml index 6dbc114eca0..abc2969b64b 100644 --- a/config/locales/crowdin/js-eo.yml +++ b/config/locales/crowdin/js-eo.yml @@ -349,8 +349,6 @@ eo: label_collapse_all: "Maletendi ĉion" label_collapse_text: "Collapse text" label_comment: "Komento" - label_committed_at: "%{committed_revision_link} en %{date}" - label_committed_link: "reviziita versio %{revision_identifier}" label_contains: "enhavas" label_created_on: "Kreita la " label_edit_comment: "Redakti tiu ĉi komenton" @@ -1218,3 +1216,7 @@ eo: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-es.yml b/config/locales/crowdin/js-es.yml index b2505deda62..fd659d12f13 100644 --- a/config/locales/crowdin/js-es.yml +++ b/config/locales/crowdin/js-es.yml @@ -349,8 +349,6 @@ es: label_collapse_all: "Colapsar todo" label_collapse_text: "Colapsar texto" label_comment: "Comentario" - label_committed_at: "%{committed_revision_link} el %{date}" - label_committed_link: "revisión confirmada %{revision_identifier}" label_contains: "contiene" label_created_on: "creado el" label_edit_comment: "Editar este comentario" @@ -1218,3 +1216,7 @@ es: waiting_subtitle: network_off: "Hay un problema de red." network_on: "La red ha vuelto. Lo estamos intentando." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-et.yml b/config/locales/crowdin/js-et.yml index a459b13dd6b..0769c3f3d6c 100644 --- a/config/locales/crowdin/js-et.yml +++ b/config/locales/crowdin/js-et.yml @@ -349,8 +349,6 @@ et: label_collapse_all: "Koonda kõik" label_collapse_text: "Collapse text" label_comment: "Kommentaar" - label_committed_at: "%{committed_revision_link} at %{date}" - label_committed_link: "committed revision %{revision_identifier}" label_contains: "sisaldab" label_created_on: "created on" label_edit_comment: "Edit this comment" @@ -1218,3 +1216,7 @@ et: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-eu.yml b/config/locales/crowdin/js-eu.yml index 9065b53b74a..6e1e0cdbebc 100644 --- a/config/locales/crowdin/js-eu.yml +++ b/config/locales/crowdin/js-eu.yml @@ -349,8 +349,6 @@ eu: label_collapse_all: "Collapse all" label_collapse_text: "Collapse text" label_comment: "Comment" - label_committed_at: "%{committed_revision_link} at %{date}" - label_committed_link: "committed revision %{revision_identifier}" label_contains: "contains" label_created_on: "created on" label_edit_comment: "Edit this comment" @@ -1218,3 +1216,7 @@ eu: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-fa.yml b/config/locales/crowdin/js-fa.yml index a535619bd7f..0b97be2ec4c 100644 --- a/config/locales/crowdin/js-fa.yml +++ b/config/locales/crowdin/js-fa.yml @@ -349,8 +349,6 @@ fa: label_collapse_all: "بستن همه" label_collapse_text: "Collapse text" label_comment: "نظر" - label_committed_at: "%{committed_revision_link} در %{date}" - label_committed_link: "committed revision %{revision_identifier}" label_contains: "contains" label_created_on: "ایجاد شده در" label_edit_comment: "ویرایش این نظر" @@ -1218,3 +1216,7 @@ fa: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-fi.yml b/config/locales/crowdin/js-fi.yml index 12f60bca8bf..12f7a8d40f7 100644 --- a/config/locales/crowdin/js-fi.yml +++ b/config/locales/crowdin/js-fi.yml @@ -349,8 +349,6 @@ fi: label_collapse_all: "Tiivistä kaikki" label_collapse_text: "Collapse text" label_comment: "Kommentti" - label_committed_at: "%{committed_revision_link} %{date}" - label_committed_link: "committed revision %{revision_identifier}" label_contains: "sisältää" label_created_on: "luotu" label_edit_comment: "Muokkaa tätä kommenttia" @@ -1218,3 +1216,7 @@ fi: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-fil.yml b/config/locales/crowdin/js-fil.yml index e90b9bc3be3..6f266923b9f 100644 --- a/config/locales/crowdin/js-fil.yml +++ b/config/locales/crowdin/js-fil.yml @@ -349,8 +349,6 @@ fil: label_collapse_all: "Bumagsak lahat" label_collapse_text: "Collapse text" label_comment: "Komento" - label_committed_at: "%{committed_revision_link} sa %{date}" - label_committed_link: "nakatuon rebisyon %{revision_identifier}" label_contains: "naglalaman" label_created_on: "nilikha sa" label_edit_comment: "I-edit ang komentong ito" @@ -1218,3 +1216,7 @@ fil: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-fr.yml b/config/locales/crowdin/js-fr.yml index 0cd20ffc988..0b60b2b9135 100644 --- a/config/locales/crowdin/js-fr.yml +++ b/config/locales/crowdin/js-fr.yml @@ -349,8 +349,6 @@ fr: label_collapse_all: "Tout replier" label_collapse_text: "Réduire le texte" label_comment: "Commentaire" - label_committed_at: "%{committed_revision_link} le %{date}" - label_committed_link: "révision %{revision_identifier} soumise" label_contains: "contenus" label_created_on: "créé le" label_edit_comment: "Modifier ce commentaire" @@ -1218,3 +1216,7 @@ fr: waiting_subtitle: network_off: "Un problème de réseau est survenu." network_on: "Le réseau est à nouveau disponible. Nous essayons." + projects: + identifier_suggestion: + loading: "Chargement des suggestions ..." + set_name_first: "Veuillez d'abord définir le nom." diff --git a/config/locales/crowdin/js-he.yml b/config/locales/crowdin/js-he.yml index c049c42e432..29386d34f63 100644 --- a/config/locales/crowdin/js-he.yml +++ b/config/locales/crowdin/js-he.yml @@ -349,8 +349,6 @@ he: label_collapse_all: "סגור הכל" label_collapse_text: "Collapse text" label_comment: "תגובה" - label_committed_at: "%{committed_revision_link} at %{date}" - label_committed_link: "committed revision %{revision_identifier}" label_contains: "מכיל" label_created_on: "created on" label_edit_comment: "Edit this comment" @@ -1226,3 +1224,7 @@ he: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-hi.yml b/config/locales/crowdin/js-hi.yml index df981a1125e..de7f267039c 100644 --- a/config/locales/crowdin/js-hi.yml +++ b/config/locales/crowdin/js-hi.yml @@ -349,8 +349,6 @@ hi: label_collapse_all: "सभी को समेटें" label_collapse_text: "Collapse text" label_comment: "टिप्पणी" - label_committed_at: "%{committed_revision_link} at %{date}" - label_committed_link: "committed revision %{revision_identifier}" label_contains: "contains" label_created_on: "created on" label_edit_comment: "Edit this comment" @@ -1218,3 +1216,7 @@ hi: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-hr.yml b/config/locales/crowdin/js-hr.yml index 9975644c505..469d2a66fcd 100644 --- a/config/locales/crowdin/js-hr.yml +++ b/config/locales/crowdin/js-hr.yml @@ -349,8 +349,6 @@ hr: label_collapse_all: "Sažmi sve" label_collapse_text: "Collapse text" label_comment: "Komentar" - label_committed_at: "%{committed_revision_link} u %{date}" - label_committed_link: "izvršio reviziju %{revision_identifier}" label_contains: "sadrži" label_created_on: "kreirano" label_edit_comment: "Uredite komentar" @@ -1222,3 +1220,7 @@ hr: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-hu.yml b/config/locales/crowdin/js-hu.yml index cb964f5e788..d3813a705d8 100644 --- a/config/locales/crowdin/js-hu.yml +++ b/config/locales/crowdin/js-hu.yml @@ -348,8 +348,6 @@ hu: label_collapse_all: "Az összes bezárása" label_collapse_text: "Collapse text" label_comment: "Vélemény" - label_committed_at: "%{committed_revision_link}: %{date}" - label_committed_link: "végrehajtott változat %{revision_identifier}" label_contains: "tartalmaznak" label_created_on: "létrehozva" label_edit_comment: "Hozzászólás szerkesztése" @@ -1217,3 +1215,7 @@ hu: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-id.yml b/config/locales/crowdin/js-id.yml index 6930060da80..a96ffa1760f 100644 --- a/config/locales/crowdin/js-id.yml +++ b/config/locales/crowdin/js-id.yml @@ -349,8 +349,6 @@ id: label_collapse_all: "Tutup semua" label_collapse_text: "Collapse text" label_comment: "Komentar" - label_committed_at: "%{committed_revision_link} pada %{date}" - label_committed_link: "disimpan pada revisi %{revision_identifier}" label_contains: "berisi" label_created_on: "dibuat pada" label_edit_comment: "Edit this comment" @@ -1214,3 +1212,7 @@ id: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-it.yml b/config/locales/crowdin/js-it.yml index 6e84a66fcad..01a95429adc 100644 --- a/config/locales/crowdin/js-it.yml +++ b/config/locales/crowdin/js-it.yml @@ -349,8 +349,6 @@ it: label_collapse_all: "Comprimi Tutto" label_collapse_text: "Comprimi testo" label_comment: "Commento" - label_committed_at: "%{committed_revision_link} il %{date}" - label_committed_link: "revisione accettata %{revision_identifier}" label_contains: "contiene" label_created_on: "creato il" label_edit_comment: "Modifica questo commento" @@ -1218,3 +1216,7 @@ it: waiting_subtitle: network_off: "C'è un problema di rete." network_on: "La rete è tornata. Stiamo provando." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-ja.yml b/config/locales/crowdin/js-ja.yml index 7121902ba95..40ccf8a3efa 100644 --- a/config/locales/crowdin/js-ja.yml +++ b/config/locales/crowdin/js-ja.yml @@ -350,8 +350,6 @@ ja: label_collapse_all: "全てを折りたたむ" label_collapse_text: "Collapse text" label_comment: "コメント" - label_committed_at: "%{date}で%{committed_revision_link}" - label_committed_link: "コミットされたバージョン%{revision_identifier}" label_contains: "含む" label_created_on: "作成日時" label_edit_comment: "このコメントを編集" @@ -1215,3 +1213,7 @@ ja: waiting_subtitle: network_off: "ネットワークに問題があります。" network_on: "ネットワークが戻った。我々は努力している。" + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-ka.yml b/config/locales/crowdin/js-ka.yml index c8b6b84d50b..daeeac344b8 100644 --- a/config/locales/crowdin/js-ka.yml +++ b/config/locales/crowdin/js-ka.yml @@ -349,8 +349,6 @@ ka: label_collapse_all: "ყველას ჩაკეცვა" label_collapse_text: "Collapse text" label_comment: "კომენტარი" - label_committed_at: "%{committed_revision_link} at %{date}" - label_committed_link: "committed revision %{revision_identifier}" label_contains: "შეიცავს" label_created_on: "შექმნის დრო" label_edit_comment: "Edit this comment" @@ -1218,3 +1216,7 @@ ka: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-kk.yml b/config/locales/crowdin/js-kk.yml index 79787430e88..4852f0cefa9 100644 --- a/config/locales/crowdin/js-kk.yml +++ b/config/locales/crowdin/js-kk.yml @@ -349,8 +349,6 @@ kk: label_collapse_all: "Collapse all" label_collapse_text: "Collapse text" label_comment: "Comment" - label_committed_at: "%{committed_revision_link} at %{date}" - label_committed_link: "committed revision %{revision_identifier}" label_contains: "contains" label_created_on: "created on" label_edit_comment: "Edit this comment" @@ -1218,3 +1216,7 @@ kk: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-ko.yml b/config/locales/crowdin/js-ko.yml index 28a1ad4f171..d6676dbc681 100644 --- a/config/locales/crowdin/js-ko.yml +++ b/config/locales/crowdin/js-ko.yml @@ -349,8 +349,6 @@ ko: label_collapse_all: "모두 축소" label_collapse_text: "텍스트 축소" label_comment: "코멘트" - label_committed_at: "%{date}에 %{committed_revision_link} " - label_committed_link: " %{revision_identifier} 리비전이 커밋됨" label_contains: "포함" label_created_on: "생성" label_edit_comment: "코멘트 편집" @@ -1214,3 +1212,7 @@ ko: waiting_subtitle: network_off: "네트워크 문제가 있습니다." network_on: "네트워크가 복원되었습니다. 작업 중입니다." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-lt.yml b/config/locales/crowdin/js-lt.yml index 1caa3b7a2aa..d94f00a971d 100644 --- a/config/locales/crowdin/js-lt.yml +++ b/config/locales/crowdin/js-lt.yml @@ -349,8 +349,6 @@ lt: label_collapse_all: "Sutraukti visus" label_collapse_text: "Collapse text" label_comment: "Komentaras" - label_committed_at: "%{committed_revision_link} %{date}" - label_committed_link: "patvirtinta laida %{revision_identifier}" label_contains: "turi" label_created_on: "sukurta" label_edit_comment: "Keisti šį komentarą" @@ -1226,3 +1224,7 @@ lt: waiting_subtitle: network_off: "Yra tinklo problema." network_on: "Tinklas grįžo. Mes bandome." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-lv.yml b/config/locales/crowdin/js-lv.yml index ed45f02ad7a..4462f015f45 100644 --- a/config/locales/crowdin/js-lv.yml +++ b/config/locales/crowdin/js-lv.yml @@ -349,8 +349,6 @@ lv: label_collapse_all: "Collapse all" label_collapse_text: "Collapse text" label_comment: "Komentârs" - label_committed_at: "%{committed_revision_link}, %{date}" - label_committed_link: "ievietotā revīzija %{revision_identifier}" label_contains: "contains" label_created_on: "izveidots" label_edit_comment: "Rediģēt šo komentāru" @@ -1222,3 +1220,7 @@ lv: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-mn.yml b/config/locales/crowdin/js-mn.yml index 8b098ad6de4..f43a994899b 100644 --- a/config/locales/crowdin/js-mn.yml +++ b/config/locales/crowdin/js-mn.yml @@ -349,8 +349,6 @@ mn: label_collapse_all: "Collapse all" label_collapse_text: "Collapse text" label_comment: "Comment" - label_committed_at: "%{committed_revision_link} at %{date}" - label_committed_link: "committed revision %{revision_identifier}" label_contains: "contains" label_created_on: "created on" label_edit_comment: "Edit this comment" @@ -1218,3 +1216,7 @@ mn: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-ms.yml b/config/locales/crowdin/js-ms.yml index 0dc860b3191..548de987633 100644 --- a/config/locales/crowdin/js-ms.yml +++ b/config/locales/crowdin/js-ms.yml @@ -349,8 +349,6 @@ ms: label_collapse_all: "Sembunyikan semua" label_collapse_text: "Collapse text" label_comment: "Komen" - label_committed_at: "%{committed_revision_link} pada %{date}" - label_committed_link: "semakan yang dilakukan %{revision_identifier}" label_contains: "mengandungi" label_created_on: "dicipta pada" label_edit_comment: "Edit komen ini" @@ -1214,3 +1212,7 @@ ms: waiting_subtitle: network_off: "Terdapat masalah rangkaian." network_on: "Rangkaian kembali. Kami sedang mencuba." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-ne.yml b/config/locales/crowdin/js-ne.yml index 6d76199656a..5ebcd8c9b1b 100644 --- a/config/locales/crowdin/js-ne.yml +++ b/config/locales/crowdin/js-ne.yml @@ -349,8 +349,6 @@ ne: label_collapse_all: "Collapse all" label_collapse_text: "Collapse text" label_comment: "Comment" - label_committed_at: "%{committed_revision_link} at %{date}" - label_committed_link: "committed revision %{revision_identifier}" label_contains: "contains" label_created_on: "created on" label_edit_comment: "Edit this comment" @@ -1218,3 +1216,7 @@ ne: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-nl.yml b/config/locales/crowdin/js-nl.yml index d2e0b12812d..4fa85ea507b 100644 --- a/config/locales/crowdin/js-nl.yml +++ b/config/locales/crowdin/js-nl.yml @@ -349,8 +349,6 @@ nl: label_collapse_all: "Alles inklappen" label_collapse_text: "Collapse text" label_comment: "Commentaar" - label_committed_at: "%{committed_revision_link} op %{date}" - label_committed_link: "gepleegde herziening %{revision_identifier}" label_contains: "bevat" label_created_on: "gecreëerd op" label_edit_comment: "Deze opmerking bewerken" @@ -1218,3 +1216,7 @@ nl: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-no.yml b/config/locales/crowdin/js-no.yml index 1594fc635ae..cffb8d6931a 100644 --- a/config/locales/crowdin/js-no.yml +++ b/config/locales/crowdin/js-no.yml @@ -349,8 +349,6 @@ label_collapse_all: "Skjul alle" label_collapse_text: "Collapse text" label_comment: "Kommentar" - label_committed_at: "%{committed_revision_link} den %{date}" - label_committed_link: "engasjert revisjon %{revision_identifier}" label_contains: "inneholder" label_created_on: "Opprettet" label_edit_comment: "Rediger denne kommentaren" @@ -1218,3 +1216,7 @@ waiting_subtitle: network_off: "Det er et nettverksproblem." network_on: "Nettverket er tilbake. Vi prøver igjen." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-pl.yml b/config/locales/crowdin/js-pl.yml index 2ce5b854a69..9f16f80a828 100644 --- a/config/locales/crowdin/js-pl.yml +++ b/config/locales/crowdin/js-pl.yml @@ -349,8 +349,6 @@ pl: label_collapse_all: "Zwiń wszystko" label_collapse_text: "Zwiń tekst" label_comment: "Komentarz" - label_committed_at: "%{committed_revision_link} w %{date}" - label_committed_link: "rewizja przeprowadzona %{revision_identifier}" label_contains: "zawiera" label_created_on: "utworzono" label_edit_comment: "Edytuj komentarz" @@ -1226,3 +1224,7 @@ pl: waiting_subtitle: network_off: "Występuje problem z siecią." network_on: "Sieć znów działa. Staramy się." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-pt-BR.yml b/config/locales/crowdin/js-pt-BR.yml index 0665eff1c2e..aa4e0d896a2 100644 --- a/config/locales/crowdin/js-pt-BR.yml +++ b/config/locales/crowdin/js-pt-BR.yml @@ -348,8 +348,6 @@ pt-BR: label_collapse_all: "Recolher todos" label_collapse_text: "Recolher texto" label_comment: "Comentário" - label_committed_at: "%{committed_revision_link} em %{date}" - label_committed_link: "revisão commitada %{revision_identifier}" label_contains: "contém" label_created_on: "criado em" label_edit_comment: "Editar este comentário" @@ -1217,3 +1215,7 @@ pt-BR: waiting_subtitle: network_off: "Ocorreu um problema de rede" network_on: "A rede voltou. Estamos tentando." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-pt-PT.yml b/config/locales/crowdin/js-pt-PT.yml index 9e400a1d7be..3a13e68f925 100644 --- a/config/locales/crowdin/js-pt-PT.yml +++ b/config/locales/crowdin/js-pt-PT.yml @@ -349,8 +349,6 @@ pt-PT: label_collapse_all: "Ocultar tudo" label_collapse_text: "Recolher texto" label_comment: "Comentario" - label_committed_at: "%{committed_revision_link} le %{date}" - label_committed_link: "revisão confirmada %{revision_identifier}" label_contains: "contém" label_created_on: "criado a" label_edit_comment: "Editar este comentário" @@ -1218,3 +1216,7 @@ pt-PT: waiting_subtitle: network_off: "Há um problema de rede." network_on: "A rede está de volta. Estamos a tentar." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-ro.yml b/config/locales/crowdin/js-ro.yml index 7b76eb3d468..74f78c46dd0 100644 --- a/config/locales/crowdin/js-ro.yml +++ b/config/locales/crowdin/js-ro.yml @@ -348,8 +348,6 @@ ro: label_collapse_all: "Restrângere totală" label_collapse_text: "Restrânge text" label_comment: "Comentariu" - label_committed_at: "%{committed_revision_link} la data de %{date}" - label_committed_link: "revizia încărcată %{revision_identifier}" label_contains: "conţine" label_created_on: "creat la data de" label_edit_comment: "Editează comentariu" @@ -1221,3 +1219,7 @@ ro: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-ru.yml b/config/locales/crowdin/js-ru.yml index 66046d33eda..244ff29f96d 100644 --- a/config/locales/crowdin/js-ru.yml +++ b/config/locales/crowdin/js-ru.yml @@ -348,8 +348,6 @@ ru: label_collapse_all: "Свернуть все" label_collapse_text: "Свернуть текст" label_comment: "Комментарий" - label_committed_at: "%{committed_revision_link} в %{date}" - label_committed_link: "завершенная версия %{revision_identifier}" label_contains: "содержит" label_created_on: "создано на" label_edit_comment: "Редактировать этот комментарий" @@ -1225,3 +1223,7 @@ ru: waiting_subtitle: network_off: "Проблема с сетью." network_on: "Проблема с сетью решена." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-rw.yml b/config/locales/crowdin/js-rw.yml index d9c83929d7a..4ec1e8f9fa8 100644 --- a/config/locales/crowdin/js-rw.yml +++ b/config/locales/crowdin/js-rw.yml @@ -349,8 +349,6 @@ rw: label_collapse_all: "Collapse all" label_collapse_text: "Collapse text" label_comment: "Comment" - label_committed_at: "%{committed_revision_link} at %{date}" - label_committed_link: "committed revision %{revision_identifier}" label_contains: "contains" label_created_on: "created on" label_edit_comment: "Edit this comment" @@ -1218,3 +1216,7 @@ rw: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-si.yml b/config/locales/crowdin/js-si.yml index c71ea3cae9e..4b6f3561a33 100644 --- a/config/locales/crowdin/js-si.yml +++ b/config/locales/crowdin/js-si.yml @@ -349,8 +349,6 @@ si: label_collapse_all: "සියල්ල කඩා වැටෙන්න" label_collapse_text: "Collapse text" label_comment: "අදහස් දක්වන්න" - label_committed_at: "%{committed_revision_link} දී %{date}" - label_committed_link: "කැපවූ සංශෝධනය %{revision_identifier}" label_contains: "අඩංගු" label_created_on: "මත නිර්මාණය" label_edit_comment: "මෙම අදහස සංස්කරණය කරන්න" @@ -1218,3 +1216,7 @@ si: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-sk.yml b/config/locales/crowdin/js-sk.yml index 6b45ff13b77..6157233870e 100644 --- a/config/locales/crowdin/js-sk.yml +++ b/config/locales/crowdin/js-sk.yml @@ -349,8 +349,6 @@ sk: label_collapse_all: "Zbaliť všetko" label_collapse_text: "Collapse text" label_comment: "Komentár" - label_committed_at: "%{committed_revision_link} v %{date}" - label_committed_link: "odoslané revízie %{revision_identifier}" label_contains: "obsahuje" label_created_on: "vytvorené" label_edit_comment: "Upraviť tento komentár" @@ -1226,3 +1224,7 @@ sk: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-sl.yml b/config/locales/crowdin/js-sl.yml index 9d834947e38..ed7dfa7410d 100644 --- a/config/locales/crowdin/js-sl.yml +++ b/config/locales/crowdin/js-sl.yml @@ -348,8 +348,6 @@ sl: label_collapse_all: "Strni vse" label_collapse_text: "Collapse text" label_comment: "Komentar" - label_committed_at: "%{committed_revision_link} na %{date}" - label_committed_link: "committed revision %{revision_identifier}" label_contains: "vsebuje" label_created_on: "Ustvarjeno dne" label_edit_comment: "Uredi ta komentar" @@ -1225,3 +1223,7 @@ sl: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-sr.yml b/config/locales/crowdin/js-sr.yml index 96ee05f4584..8dc44039cb2 100644 --- a/config/locales/crowdin/js-sr.yml +++ b/config/locales/crowdin/js-sr.yml @@ -349,8 +349,6 @@ sr: label_collapse_all: "Collapse all" label_collapse_text: "Collapse text" label_comment: "Comment" - label_committed_at: "%{committed_revision_link} at %{date}" - label_committed_link: "committed revision %{revision_identifier}" label_contains: "contains" label_created_on: "created on" label_edit_comment: "Edit this comment" @@ -1222,3 +1220,7 @@ sr: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-sv.yml b/config/locales/crowdin/js-sv.yml index a18453e1066..262b845d5a6 100644 --- a/config/locales/crowdin/js-sv.yml +++ b/config/locales/crowdin/js-sv.yml @@ -348,8 +348,6 @@ sv: label_collapse_all: "Fäll ihop alla" label_collapse_text: "Collapse text" label_comment: "Kommentar" - label_committed_at: "%{committed_revision_link} den %{date}" - label_committed_link: "lade till revision %{revision_identifier}" label_contains: "innehåller" label_created_on: "skapad den" label_edit_comment: "Redigera kommentaren" @@ -1217,3 +1215,7 @@ sv: waiting_subtitle: network_off: "Det finns ett nätverksproblem." network_on: "Nätverket är tillbaka. Vi försöker." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-th.yml b/config/locales/crowdin/js-th.yml index 5a74fda6d40..959a7fc3144 100644 --- a/config/locales/crowdin/js-th.yml +++ b/config/locales/crowdin/js-th.yml @@ -349,8 +349,6 @@ th: label_collapse_all: "ยุบทั้งหมด" label_collapse_text: "Collapse text" label_comment: "ความคิดเห็น" - label_committed_at: "%{committed_revision_link} at %{date}" - label_committed_link: "committed revision %{revision_identifier}" label_contains: "ประกอบด้วย" label_created_on: "created on" label_edit_comment: "แก้ไขความคิดเห็นนี้" @@ -1214,3 +1212,7 @@ th: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-tr.yml b/config/locales/crowdin/js-tr.yml index d3ffbfb40bf..b46df40217b 100644 --- a/config/locales/crowdin/js-tr.yml +++ b/config/locales/crowdin/js-tr.yml @@ -349,8 +349,6 @@ tr: label_collapse_all: "Tümünü daralt" label_collapse_text: "Metni daralt" label_comment: "Yorum" - label_committed_at: "%{committed_revision_link} %{date}" - label_committed_link: "kaydedilmiş revizyon %{revision_identifier}" label_contains: "içerir" label_created_on: "oluşturma tarihi" label_edit_comment: "Bu yorumu düzenle" @@ -1218,3 +1216,7 @@ tr: waiting_subtitle: network_off: "Bir ağ sorunu var." network_on: "Ağ geri döndü. Deniyoruz." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-uk.yml b/config/locales/crowdin/js-uk.yml index 5d623bf7906..17502467190 100644 --- a/config/locales/crowdin/js-uk.yml +++ b/config/locales/crowdin/js-uk.yml @@ -349,8 +349,6 @@ uk: label_collapse_all: "Згорнути все" label_collapse_text: "Згорнути текст" label_comment: "Коментар" - label_committed_at: "%{committed_revision_link}, %{date}" - label_committed_link: "зафіксовано редакцію %{revision_identifier}" label_contains: "містить" label_created_on: "створено" label_edit_comment: "Редагувати цей коментар" @@ -1226,3 +1224,7 @@ uk: waiting_subtitle: network_off: "Існує проблема з мережею." network_on: "З’єднання відновлено. Ми намагаємося." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-uz.yml b/config/locales/crowdin/js-uz.yml index 135693a2257..7c4010397cc 100644 --- a/config/locales/crowdin/js-uz.yml +++ b/config/locales/crowdin/js-uz.yml @@ -349,8 +349,6 @@ uz: label_collapse_all: "Collapse all" label_collapse_text: "Collapse text" label_comment: "Comment" - label_committed_at: "%{committed_revision_link} at %{date}" - label_committed_link: "committed revision %{revision_identifier}" label_contains: "contains" label_created_on: "created on" label_edit_comment: "Edit this comment" @@ -1218,3 +1216,7 @@ uz: waiting_subtitle: network_off: "There is a network problem." network_on: "Network is back. We are trying." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-vi.yml b/config/locales/crowdin/js-vi.yml index fd2da032e6c..6d042ad1231 100644 --- a/config/locales/crowdin/js-vi.yml +++ b/config/locales/crowdin/js-vi.yml @@ -349,8 +349,6 @@ vi: label_collapse_all: "Thu gọn tất cả" label_collapse_text: "Thu gọn văn bản" label_comment: "bình luận" - label_committed_at: "%{committed_revision_link} tại %{date}" - label_committed_link: "cam kết sửa đổi %{revision_identifier}" label_contains: "bao gồm" label_created_on: "được tạo trên" label_edit_comment: "Chỉnh sửa nhận xét này" @@ -1214,3 +1212,7 @@ vi: waiting_subtitle: network_off: "Có một vấn đề về mạng." network_on: "Mạng đã trở lại. Chúng tôi đang cố gắng." + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-zh-CN.yml b/config/locales/crowdin/js-zh-CN.yml index f00fe4c05ce..279ff61f683 100644 --- a/config/locales/crowdin/js-zh-CN.yml +++ b/config/locales/crowdin/js-zh-CN.yml @@ -349,8 +349,6 @@ zh-CN: label_collapse_all: "全部折叠" label_collapse_text: "收起文本" label_comment: "评论" - label_committed_at: "在 %{date} %{committed_revision_link}" - label_committed_link: "上传的修订 %{revision_identifier}" label_contains: "包含" label_created_on: "创建于" label_edit_comment: "编辑此注释" @@ -1214,3 +1212,7 @@ zh-CN: waiting_subtitle: network_off: "网络有问题。" network_on: "网络已恢复。我们正在努力。" + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/js-zh-TW.yml b/config/locales/crowdin/js-zh-TW.yml index 6bc3968e698..f4eb8029b3c 100644 --- a/config/locales/crowdin/js-zh-TW.yml +++ b/config/locales/crowdin/js-zh-TW.yml @@ -348,8 +348,6 @@ zh-TW: label_collapse_all: "全部摺疊" label_collapse_text: "折疊文字" label_comment: "留言" - label_committed_at: "在 %{date} %{committed_revision_link}" - label_committed_link: "上傳修訂的 %{revision_identifier}" label_contains: "包含" label_created_on: "建立於" label_edit_comment: "編輯此留言" @@ -1213,3 +1211,7 @@ zh-TW: waiting_subtitle: network_off: "網路有問題。" network_on: "網絡已恢復。我們正在努力。" + projects: + identifier_suggestion: + loading: "Loading suggestion..." + set_name_first: "Please set the name first." diff --git a/config/locales/crowdin/ka.yml b/config/locales/crowdin/ka.yml index 67d57f04cc4..531d73577c3 100644 --- a/config/locales/crowdin/ka.yml +++ b/config/locales/crowdin/ka.yml @@ -108,7 +108,7 @@ ka: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ ka: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -607,6 +667,14 @@ ka: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -767,6 +835,11 @@ ka: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -999,9 +1072,9 @@ ka: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: This user is currently not a member of a project. open_profile: "Open profile" @@ -1056,6 +1129,64 @@ ka: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "ტექსტი" placeholder_users: @@ -1063,11 +1194,11 @@ ka: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1099,8 +1230,8 @@ ka: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1365,7 +1496,7 @@ ka: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "or sign in with your existing account" signup_with_auth_provider: "or sign up using" - auth_source_login: Please login as %{login} to activate your account. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Please login to activate your account. actionview_instancetag_blank_option: "გთხოვთ, აირჩიეთ" activemodel: @@ -1636,6 +1767,11 @@ ka: consented_at: "ეთანხმება" group: identity_url: "იდენტიფიკაციის URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1644,8 +1780,6 @@ ka: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Accessibility mode" auto_hide_popups: "Automatically hide success banners" @@ -1666,6 +1800,28 @@ ka: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "დასრულების თარიღი" sharing: "გაზიარება" @@ -1720,6 +1876,8 @@ ka: before: "must be before %{date}." before_or_equal_to: "must be before or equal to %{date}." blank: "can't be blank." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1756,8 +1914,9 @@ ka: less_than_or_equal_to: "must be less than or equal to %{count}." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is not the current user." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "is not a valid date." not_a_datetime: "is not a valid date time." @@ -1788,6 +1947,10 @@ ka: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "is the wrong length (should be %{count} characters)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1898,6 +2061,9 @@ ka: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "still in use by work packages: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2103,6 +2269,10 @@ ka: description: "'Password confirmation' should match the input in the 'New password' field." status: invalid_on_create: "is not a valid status for new users." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Please choose at least one user or group." role_blank: "need to be assigned." @@ -2369,7 +2539,7 @@ ka: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: ჩამოყრა verification_word_create: შექმნა @@ -2809,7 +2979,7 @@ ka: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2826,10 +2996,8 @@ ka: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2917,8 +3085,8 @@ ka: work_package_edit: "Work Package edited" work_package_note: "Work Package note added" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "გატანა" @@ -3169,6 +3337,7 @@ ka: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3176,9 +3345,9 @@ ka: links: configuration_guide: "Configuration guide" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "You can sign in as soon as your account has been activated by clicking %{signin}." - instructions_after_logout: "You can sign in again by clicking %{signin}." - instructions_after_error: "You can try to sign in again by clicking %{signin}. If the error persists, ask your admin for help." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3370,6 +3539,8 @@ ka: label_calendar_show: "კალენდრის ჩვენება" label_category: "კატეგორია" label_completed: დასრულებულია + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "მომხმარებლის თანხმობა" label_wiki_menu_item: ვიკის მენიუს პუნქტი label_select_main_menu_item: Select new main menu item @@ -3536,6 +3707,7 @@ ka: label_subject_or_id: "სათაური ან ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "იდენტიფიკატორი" + label_project_identifier: "Project identifier" label_in: "სად" label_in_less_than: "ნაკლებია, ვიდრე" label_in_more_than: "მეტია, ვიდრე" @@ -3669,11 +3841,13 @@ ka: label_news_view_all: "ყველა სიახლის ნახვა" label_next: "შემდეგი" label_next_week: "შემდეგი კვირა" + label_next_year: "Next year" label_no_change_option: "(არ შეცვლილა)" label_no_data: "No data to display" label_no_due_date: "დასრულების თარიღის გარეშე" label_no_start_date: "დაწყების თარიღის გარეშე" label_no_parent_page: "მშობელი გვერდის გარეშე" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "შეტყობინებები" label_nothing_display: "Nothing to display" label_nobody: "არავინ" @@ -3702,6 +3876,8 @@ ka: label_overall_activity: "Overall activity" label_overview: "მიმოხილვა" label_page_title: "გვერდის სათაური" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "ნაწილია" label_password_lost: "Forgot your password?" label_password_rule_lowercase: "დაბალი რეგისტრი" @@ -3728,6 +3904,7 @@ ka: label_preview_not_available: "Preview not available" label_previous: "წინა" label_previous_week: "წინა კვირა" + label_previous_year: "Previous year" label_principal_invite_via_email: " or invite new users via email" label_principal_search: "Add existing users or groups" label_privacy_policy: "Data privacy and security policy" @@ -3839,6 +4016,7 @@ ka: label_start_to_start: "გაშვება გასაშვებად" label_statistics: "სტატისტიკა" label_status: "სტატუსი" + label_status_plural: "Statuses" label_storage_free_space: "Remaining disk space" label_storage_used_space: "Used disk space" label_storage_group: "Storage filesystem %{identifier}" @@ -3867,6 +4045,7 @@ ka: label_title: "სათაური" label_projects_menu: "პროექტები" label_today: "დღეს" + label_today_capitalized: "დღეს" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3887,7 +4066,7 @@ ka: label_user: "მომხმარებელი" label_user_and_permission: "Users and permissions" label_user_named: "მომხმარებელი %{name}" - label_user_activity: "%{value}'s activity" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "ანონიმური" label_user_menu: "User menu" label_user_new: "ახალი მომხმარებელი" @@ -3974,6 +4153,15 @@ ka: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "გუშინ" label_zen_mode: "Zen mode" label_role_type: "ტიპი" @@ -3982,6 +4170,22 @@ ka: label_not_changeable: "(not changeable)" label_global: "გლობალური" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Error executing the macro %{macro_name}" macro_unavailable: "Macro %{macro_name} cannot be displayed." macros: @@ -4016,7 +4220,7 @@ ka: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "გამარჯობა %{user}" + salutation: "Hello %{user}," salutation_full_name: "სრული სახელი" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4046,7 +4250,7 @@ ka: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4145,7 +4349,7 @@ ka: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: User activation limit reached - message: | + message_html: | A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). The user cannot activate their account since the user limit has been reached. steps: @@ -4331,6 +4535,12 @@ ka: permission_manage_versions: "Manage versions" permission_manage_wiki: "ვიკის მართვა" permission_manage_wiki_menu: "Manage wiki menu" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Move work packages" permission_protect_wiki_pages: "Protect wiki pages" permission_rename_wiki_pages: "Rename wiki pages" @@ -4476,10 +4686,10 @@ ka: info: "Deleting the repository is an irreversible action." info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." managed_path_note: "The following directory will be erased: %{path}" - repository_verification: "Enter the project's identifier %{identifier} to verify the deletion of its repository." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Do you really want to delete the %{repository_type} of the project %{project_name}?" - subtitle_not_managed: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" - title: "Delete the %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Remove the linked %{repository_type}?" errors: build_failed: "Unable to create the repository with the selected configuration. %{reason}" @@ -4529,7 +4739,7 @@ ka: storage: not_available: "Disk storage consumption is not available for this repository." update_timeout: "Keep the last required disk space information for a repository for N minutes.\nAs counting the required disk space of a repository may be costly, increase this value to reduce performance impact." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4574,15 +4784,15 @@ ka: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "CORS-ის ჩართვა" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4679,7 +4889,7 @@ ka: setting_work_package_properties: "Work package properties" setting_work_package_startdate_is_adddate: "Use current date as start date for new work packages" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Log user login, name, and mail address for all requests" setting_login_required: "Authentication required" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4760,6 +4970,12 @@ ka: setting_welcome_text: "Welcome block text" setting_welcome_title: "Welcome block title" setting_welcome_on_homescreen: "Display welcome block on homescreen" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "სამუშაო დღეები" @@ -4926,10 +5142,12 @@ ka: section_work_week: "სამუშაო კვირა" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "უბრალო ტექსტი" @@ -5051,6 +5269,10 @@ ka: text_plugin_assets_writable: "Plugin assets directory writable" text_powered_by: "Powered by %{link}" text_project_identifier_info: "Only lower case letters (a-z), numbers, dashes and underscores are allowed, must start with a lower case letter." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassign to work package:" text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' text_repository_usernames_mapping: "Select or update the OpenProject user mapped to each username found in the repository log.\nUsers with the same OpenProject and repository username or email are automatically mapped." @@ -5158,18 +5380,18 @@ ka: version_status_locked: "დაბლოკილია" version_status_open: "გახსნა" note: შენიშვნა - note_password_login_disabled: "Password login has been disabled by %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: გაფრთხილება warning_attachments_not_saved: "%{count} file(s) could not be saved." - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5229,7 +5451,7 @@ ka: reminders: label_remind_at: "თარიღი" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5260,8 +5482,8 @@ ka: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5381,6 +5603,7 @@ ka: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/kk.yml b/config/locales/crowdin/kk.yml index 7733ec34ca1..cd640e1c132 100644 --- a/config/locales/crowdin/kk.yml +++ b/config/locales/crowdin/kk.yml @@ -108,7 +108,7 @@ kk: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ kk: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -607,6 +667,14 @@ kk: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -767,6 +835,11 @@ kk: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -999,9 +1072,9 @@ kk: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: This user is currently not a member of a project. open_profile: "Open profile" @@ -1056,6 +1129,64 @@ kk: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Text" placeholder_users: @@ -1063,11 +1194,11 @@ kk: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1099,8 +1230,8 @@ kk: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1365,7 +1496,7 @@ kk: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "or sign in with your existing account" signup_with_auth_provider: "or sign up using" - auth_source_login: Please login as %{login} to activate your account. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Please login to activate your account. actionview_instancetag_blank_option: "Please select" activemodel: @@ -1636,6 +1767,11 @@ kk: consented_at: "Consented at" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1644,8 +1780,6 @@ kk: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Accessibility mode" auto_hide_popups: "Automatically hide success banners" @@ -1666,6 +1800,28 @@ kk: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Finish date" sharing: "Sharing" @@ -1720,6 +1876,8 @@ kk: before: "must be before %{date}." before_or_equal_to: "must be before or equal to %{date}." blank: "can't be blank." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1756,8 +1914,9 @@ kk: less_than_or_equal_to: "must be less than or equal to %{count}." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is not the current user." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "is not a valid date." not_a_datetime: "is not a valid date time." @@ -1788,6 +1947,10 @@ kk: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "is the wrong length (should be %{count} characters)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1898,6 +2061,9 @@ kk: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "still in use by work packages: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2103,6 +2269,10 @@ kk: description: "'Password confirmation' should match the input in the 'New password' field." status: invalid_on_create: "is not a valid status for new users." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Please choose at least one user or group." role_blank: "need to be assigned." @@ -2369,7 +2539,7 @@ kk: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: create @@ -2809,7 +2979,7 @@ kk: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2826,10 +2996,8 @@ kk: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2917,8 +3085,8 @@ kk: work_package_edit: "Work Package edited" work_package_note: "Work Package note added" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Export" @@ -3169,6 +3337,7 @@ kk: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3176,9 +3345,9 @@ kk: links: configuration_guide: "Configuration guide" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "You can sign in as soon as your account has been activated by clicking %{signin}." - instructions_after_logout: "You can sign in again by clicking %{signin}." - instructions_after_error: "You can try to sign in again by clicking %{signin}. If the error persists, ask your admin for help." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3370,6 +3539,8 @@ kk: label_calendar_show: "Show Calendar" label_category: "Category" label_completed: Completed + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "User Consent" label_wiki_menu_item: Wiki menu item label_select_main_menu_item: Select new main menu item @@ -3536,6 +3707,7 @@ kk: label_subject_or_id: "Subject or ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Identifier" + label_project_identifier: "Project identifier" label_in: "in" label_in_less_than: "in less than" label_in_more_than: "in more than" @@ -3669,11 +3841,13 @@ kk: label_news_view_all: "View all news" label_next: "Next" label_next_week: "Next week" + label_next_year: "Next year" label_no_change_option: "(No change)" label_no_data: "No data to display" label_no_due_date: "no finish date" label_no_start_date: "no start date" label_no_parent_page: "No parent page" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Nothing to display" label_nobody: "nobody" @@ -3702,6 +3876,8 @@ kk: label_overall_activity: "Overall activity" label_overview: "Overview" label_page_title: "Page title" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "part of" label_password_lost: "Forgot your password?" label_password_rule_lowercase: "Lowercase" @@ -3728,6 +3904,7 @@ kk: label_preview_not_available: "Preview not available" label_previous: "Previous" label_previous_week: "Previous week" + label_previous_year: "Previous year" label_principal_invite_via_email: " or invite new users via email" label_principal_search: "Add existing users or groups" label_privacy_policy: "Data privacy and security policy" @@ -3839,6 +4016,7 @@ kk: label_start_to_start: "start to start" label_statistics: "Statistics" label_status: "Status" + label_status_plural: "Statuses" label_storage_free_space: "Remaining disk space" label_storage_used_space: "Used disk space" label_storage_group: "Storage filesystem %{identifier}" @@ -3867,6 +4045,7 @@ kk: label_title: "Title" label_projects_menu: "Projects" label_today: "today" + label_today_capitalized: "Today" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3887,7 +4066,7 @@ kk: label_user: "User" label_user_and_permission: "Users and permissions" label_user_named: "User %{name}" - label_user_activity: "%{value}'s activity" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonymous" label_user_menu: "User menu" label_user_new: "New user" @@ -3974,6 +4153,15 @@ kk: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "yesterday" label_zen_mode: "Zen mode" label_role_type: "Type" @@ -3982,6 +4170,22 @@ kk: label_not_changeable: "(not changeable)" label_global: "Global" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Error executing the macro %{macro_name}" macro_unavailable: "Macro %{macro_name} cannot be displayed." macros: @@ -4016,7 +4220,7 @@ kk: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4046,7 +4250,7 @@ kk: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4145,7 +4349,7 @@ kk: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: User activation limit reached - message: | + message_html: | A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). The user cannot activate their account since the user limit has been reached. steps: @@ -4331,6 +4535,12 @@ kk: permission_manage_versions: "Manage versions" permission_manage_wiki: "Manage wiki" permission_manage_wiki_menu: "Manage wiki menu" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Move work packages" permission_protect_wiki_pages: "Protect wiki pages" permission_rename_wiki_pages: "Rename wiki pages" @@ -4476,10 +4686,10 @@ kk: info: "Deleting the repository is an irreversible action." info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." managed_path_note: "The following directory will be erased: %{path}" - repository_verification: "Enter the project's identifier %{identifier} to verify the deletion of its repository." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Do you really want to delete the %{repository_type} of the project %{project_name}?" - subtitle_not_managed: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" - title: "Delete the %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Remove the linked %{repository_type}?" errors: build_failed: "Unable to create the repository with the selected configuration. %{reason}" @@ -4529,7 +4739,7 @@ kk: storage: not_available: "Disk storage consumption is not available for this repository." update_timeout: "Keep the last required disk space information for a repository for N minutes.\nAs counting the required disk space of a repository may be costly, increase this value to reduce performance impact." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4574,15 +4784,15 @@ kk: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4679,7 +4889,7 @@ kk: setting_work_package_properties: "Work package properties" setting_work_package_startdate_is_adddate: "Use current date as start date for new work packages" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Log user login, name, and mail address for all requests" setting_login_required: "Authentication required" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4760,6 +4970,12 @@ kk: setting_welcome_text: "Welcome block text" setting_welcome_title: "Welcome block title" setting_welcome_on_homescreen: "Display welcome block on homescreen" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Working days" @@ -4926,10 +5142,12 @@ kk: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Plain text" @@ -5051,6 +5269,10 @@ kk: text_plugin_assets_writable: "Plugin assets directory writable" text_powered_by: "Powered by %{link}" text_project_identifier_info: "Only lower case letters (a-z), numbers, dashes and underscores are allowed, must start with a lower case letter." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassign to work package:" text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' text_repository_usernames_mapping: "Select or update the OpenProject user mapped to each username found in the repository log.\nUsers with the same OpenProject and repository username or email are automatically mapped." @@ -5158,18 +5380,18 @@ kk: version_status_locked: "locked" version_status_open: "open" note: Note - note_password_login_disabled: "Password login has been disabled by %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Warning warning_attachments_not_saved: "%{count} file(s) could not be saved." - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5229,7 +5451,7 @@ kk: reminders: label_remind_at: "Date" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5260,8 +5482,8 @@ kk: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5381,6 +5603,7 @@ kk: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/ko.yml b/config/locales/crowdin/ko.yml index fa6354fd687..d1da317d9a9 100644 --- a/config/locales/crowdin/ko.yml +++ b/config/locales/crowdin/ko.yml @@ -108,7 +108,7 @@ ko: jemalloc_allocator: Jemalloc 메모리 할당기 journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "가져오기" jira: @@ -373,11 +373,69 @@ ko: project_creation: "프로젝트 생성" notification_text_default: >

안녕하세요,

새 프로젝트가 생성되었습니다: projectValue:name

감사합니다.

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "기본 전환" user_author: "사용자가 작성자입니다" user_assignee: "사용자가 담당자입니다" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "로그인 및 등록" announcements: @@ -601,6 +659,14 @@ ko: danger_dialog: confirmation_live_message_checked: "진행 버튼이 이제 활성화되었습니다." confirmation_live_message_unchecked: "진행 버튼이 이제 비활성화되었습니다. 계속하려면 확인란을 선택해야 합니다." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "OpenProject MCP 서버에 연결할 수 있는 URL입니다. MCP 클라이언트를 설정하는 데 필요합니다." @@ -760,6 +826,11 @@ ko: description: > 이 프로젝트는 해당 역할 및 관련 권한에 따라 프로젝트 멤버에게만 표시됩니다. 하위 프로젝트는 영향을 받지 않으며 고유한 설정이 있습니다. change_identifier: 식별자 변경 + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > 새 하위 항목을 만들 때 사용할 템플릿을 선택합니다. @@ -986,9 +1057,9 @@ ko: groups: member_in_these_groups: "이 사용자는 현재 다음 그룹의 멤버입니다:" no_results_title_text: 이 사용자는 현재 어떤 그룹의 멤버도 아닙니다. - summary_with_more: '%{names} 및 %{count_link}의 멤버입니다.' + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count}개 더 보기" - summary: '%{names}의 멤버입니다.' + summary_html: Member of %{names}. memberships: no_results_title_text: 이 사용자는 프로젝트의 멤버가 아닙니다. open_profile: "프로필 열기" @@ -1043,6 +1114,63 @@ ko: user: "사용자는 로그인하여 %{project}에 접근할 수 있게 되었습니다. 한편 당신은 해당 사용자에 대한 계획을 세우거나 작업 패키지를 할당할 수 있습니다." placeholder_user: "이제 %{project}에서 이 플레이스홀더를 사용할 수 있게 되었습니다. 한편 당신은 해당 사용자에 대한 계획을 세우거나 작업 패키지를 할당할 수 있습니다." group: "이제 이 그룹은 %{project}의 일부입니다. 한편 당신은 해당 사용자에 대한 계획을 세우거나 작업 패키지를 할당할 수 있습니다." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "텍스트" placeholder_users: @@ -1050,11 +1178,11 @@ ko: 플레이스홀더 사용자를 삭제할 수 없습니다. 플레이스홀더 사용자가 멤버로 들어가 있는 모든 프로젝트의 구성원을 관리할 권한이 없습니다. delete_tooltip: "플레이스홀더 사용자 삭제" deletion_info: - heading: "플레이스홀더 사용자 %{name} 삭제" + heading_html: "Delete placeholder user %{name}" data_consequences: > 플레이스홀더 사용자의 모든 항목(예: 담당자, 책임자, 기타 사용자 값 등)은 "삭제된 사용자"라는 계정에 다시 할당됩니다. 삭제된 모든 계정의 데이터는 이 계정에 다시 할당되기 때문에 사용자가 생성한 데이터와 다른 삭제된 계정의 데이터를 구별할 수 없습니다. irreversible: "이 작업은 취소할 수 없습니다" - confirmation: "삭제를 확인하려면 플레이스홀더 사용자 이름 %{name}(을)를 입력하세요." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1085,10 +1213,10 @@ ko: status_excluded_from_totals_text: |- 계층의 총 작업, 남은 작업 및 완료 %에서 이 상태의 작업 패키지를 제외하려면 이 옵션을 선택하세요. - status_percent_complete_text: |- - 상태 기반 진행률 계산 모드에서, 이 상태를 선택하면 작업 - 패키지의 완료 %가 자동으로 이 값으로 설정됩니다. - 작업 기반 모드에서는 무시됩니다. + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work + package is automatically set to this value when this status is selected. + Ignored in work-based mode. status_readonly_html: | 이 상태를 읽기 전용으로 작업 패키지에 표시하려면 이 옵션을 선택합니다. 상태를 제외하고 특성은 변경할 수 없습니다. @@ -1350,7 +1478,7 @@ ko: Single Sign-On 공급자 '%{name}'에 대한 사용자 등록이 제한되어 있습니다. 관리자에게 계정을 활성화해 달라고 요청하거나 이 공급자에 대한 자체 등록 제한을 변경하세요. login_with_auth_provider: "또는 이미 있는 계정으로 로그인" signup_with_auth_provider: "또는 사용 가입하기" - auth_source_login: %{login} 계정을 활성화하려면 로그인하시기 바랍니다. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: 계정을 활성화하려면 로그인하시기 바랍니다. actionview_instancetag_blank_option: "선택하십시오" activemodel: @@ -1621,6 +1749,11 @@ ko: consented_at: "동의함:" group: identity_url: "ID URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "모양 및 느낌" header_alerts: "알림" @@ -1629,8 +1762,6 @@ ko: button_update_user_information: "프로필 업데이트" comments_sorting: "다음을 기준으로 작업 패키지 활동을 정렬하여 표시:" disable_keyboard_shortcuts: "키보드 바로 가기 비활성화" - disable_keyboard_shortcuts_caption_html: |- - 화면 리더를 사용하는 경우나 바로 가기로 실수로 작업을 트리거하지 않게 방지하려는 경우 기본 키보드 바로 가기를 비활성화하도록 선택할 수 있습니다. dismissed_enterprise_banners: "숨겨진 엔터프라이즈 배너" impaired: "액세스 모드" auto_hide_popups: "성공 배너 자동으로 숨기기" @@ -1651,6 +1782,28 @@ ko: users/invitation/form_model: principal_type: "초대 유형" id_or_email: "이름 또는 이메일 주소" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "완료 날짜" sharing: "공유" @@ -1705,6 +1858,8 @@ ko: before: "은(는) %{date} 보다 전이어야 합니다." before_or_equal_to: "은(는) %{date} 이전이어야 합니다." blank: "내용을 입력해주세요" + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "- '%{property}' 속성이 설정되어 있어야 합니다." cannot_delete_mapping: "- 필수입니다. 삭제할 수 없습니다." is_for_all_cannot_modify: "- 모든 프로젝트용므로 수정할 수 없습니다." @@ -1741,8 +1896,9 @@ ko: less_than_or_equal_to: "은(는) %{count} 보다 작거나 같아야 합니다" not_available: "- 시스템 구성으로 인해 사용 가능하지 않습니다." not_deletable: "- 삭제할 수 없습니다." + not_editable: "cannot be edited because it is already in effect." not_current_user: "은(는) 현재 유효한 사용자가 아닙니다." - only_one_active_sprint_allowed: "프로젝트당 하나의 활성 스프린트만 허용됩니다." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "- 찾을 수 없습니다." not_a_date: "은(는) 유효한 날짜가 아닙니다." not_a_datetime: "은(는) 유효한 날짜가 아닙니다." @@ -1773,6 +1929,10 @@ ko: "보안 컨텍스트"를 제공하지 않습니다. HTTPS 또는 localhost 같은 루프백 주소를 사용하세요. wrong_length: "너무 짧습니다 (최소 %{count} 자 이상이어야 합니다)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1882,6 +2042,9 @@ ko: project_initiation_request_disabled: "프로젝트 시작 요청이 비활성화되었습니다. 아티팩트 작업 패키지를 생성하려면 이 기능을 활성화해야 합니다." types: in_use_by_work_packages: "아직 작업 패키지에 사용됨: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "'%{module}' 모듈이 '%{dependency}' 모듈에 의존하므로 해당 모듈도 활성화되어 있어야 합니다." format: "%{message}" @@ -2086,6 +2249,10 @@ ko: description: "비밀번호와 비밀번호 확인 필드가 일치하지 해야 합니다." status: invalid_on_create: "은(는) 새 사용자에 대해 유효한 상태가 아닙니다." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "하나 이상의 사용자 또는 그룹을 선택 하십시오." role_blank: "할당해야 합니다." @@ -2334,8 +2501,8 @@ ko: 백업을 활성화하면 필요한 권한과 이 백업 토큰이 있는 모든 사용자가 이 OpenProject 프로젝트의 모든 데이터가 포함된 백업을 다운로드할 수 있습니다. 여기에는 다른 모든 사용자의 데이터도 포함됩니다. info: > 백업을 생성하려면 백업 토큰을 생성해야 합니다. 백업을 요청할 때마다 토큰을 입력해야 합니다. 백업 토큰을 삭제하면 해당 사용자의 백업을 비활성화할 수 있습니다. - verification: > - 백업 토큰을 %{action}하려면 %{word}(을)를 입력하여 확인하십시오. + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: 초기화 verification_word_create: 생성 warning: > @@ -2753,7 +2920,7 @@ ko: teaser: title: other: "%{trial_plan} 평가판 토큰 %{count}일 남음" - description: "모든 %{trial_plan} 기능에 액세스할 수 있습니다." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "평가판 토큰을 요청했지만 해당 요청은 더 이상 사용할 수 없습니다. 다시 시도해 주세요." wait_for_confirmation: "평가판 토큰을 받을 수 있도록 주소를 확인하기 위한 이메일을 보내드렸습니다." @@ -2770,10 +2937,8 @@ ko: confirmation_subline: > 받은 편지함을 확인하고 해당 단계에 따라 14일 무료 평가판을 시작하세요. domain_caption: 토큰은 현재 구성된 호스트 이름에 유효하게 됩니다. - receive_newsletter_html: > - OpenProject 뉴스레터를 받아보고 싶습니다. - consent_html: > - 서비스 약관개인정보 취급방침에 동의합니다. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "비활성화되었습니다." @@ -2861,8 +3026,8 @@ ko: work_package_edit: "작업 패키지 편집됨" work_package_note: "작업 패키지 메모 추가됨" title: - project: "프로젝트: %{name}" - subproject: "하위 프로젝트: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "내보내기" @@ -3113,6 +3278,7 @@ ko: 버전 업데이트에 따라 자동으로 조정되는 스케줄링 모드입니다. totals_removed_from_childless_work_packages: >- 버전 업데이트를 통해 부모가 아닌 작업 패키지의 작업 및 진행률 합계가 자동으로 제거됩니다. 유지 관리 작업이므로 무시해도 됩니다. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- 작업이 없는 자식 작업 패키지는 무시됩니다. total_percent_complete_mode_changed_to_simple_average: >- @@ -3120,9 +3286,9 @@ ko: links: configuration_guide: "구성 가이드" get_in_touch: "질문이 있으신가요? 문의해 주세요." - instructions_after_registration: "%{signin}을(를) 클릭하여 계정이 활성화되면 바로 로그인할 수 있습니다." - instructions_after_logout: "%{signin}을(를) 클릭하면 다시 로그인할 수 있습니다." - instructions_after_error: "%{signin}을(를) 클릭하여 다시 로그인해 볼 수 있습니다. 오류가 계속되면 관리자에게 도움을 요청하세요." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "인공 지능(AI)" @@ -3314,6 +3480,8 @@ ko: label_calendar_show: "달력 표시" label_category: "카테고리" label_completed: 완료 + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "사용자 동의" label_wiki_menu_item: 위키 메뉴 항목 label_select_main_menu_item: 새 기본 메뉴 항목 선택 @@ -3480,6 +3648,7 @@ ko: label_subject_or_id: "제목 또는 ID" label_calendar_subscriptions: "캘린더 구독" label_identifier: "식별자" + label_project_identifier: "Project identifier" label_in: "-" label_in_less_than: "보다 작음" label_in_more_than: "보다 큼" @@ -3613,11 +3782,13 @@ ko: label_news_view_all: "모든 뉴스 보기" label_next: "다음" label_next_week: "다음 주" + label_next_year: "Next year" label_no_change_option: "(변경 없음)" label_no_data: "표시할 데이터가 없습니다." label_no_due_date: "완료 날짜 없음" label_no_start_date: "시작 날짜 없음" label_no_parent_page: "부모 페이지 없음" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "알림" label_nothing_display: "표시할 것이 없음" label_nobody: "아무도 없음" @@ -3646,6 +3817,8 @@ ko: label_overall_activity: "전체 작업" label_overview: "요약" label_page_title: "페이지 제목" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "부분의" label_password_lost: "암호를 잊으셨습니까?" label_password_rule_lowercase: "소문자" @@ -3672,6 +3845,7 @@ ko: label_preview_not_available: "미리 보기를 사용할 수 없음" label_previous: "이전" label_previous_week: "이전 주" + label_previous_year: "Previous year" label_principal_invite_via_email: " 또는 이메일을 통해 새 사용자 초대하기" label_principal_search: "기존 사용자 또는 그룹 추가" label_privacy_policy: "데이터 프라이버시 및 보안 정책" @@ -3783,6 +3957,7 @@ ko: label_start_to_start: "시작 - 시작" label_statistics: "통계" label_status: "상태" + label_status_plural: "Statuses" label_storage_free_space: "남은 디스크 공간" label_storage_used_space: "사용 중 디스크 공간" label_storage_group: "저장 파일 시스템 %{identifier}" @@ -3811,6 +3986,7 @@ ko: label_title: "제목" label_projects_menu: "프로젝트" label_today: "오늘" + label_today_capitalized: "오늘" label_token_version: "토큰 버전" label_today_as_start_date: "오늘을 시작 날짜로 선택하세요." label_today_as_due_date: "오늘을 완료 날짜로 선택하세요." @@ -3831,7 +4007,7 @@ ko: label_user: "사용자" label_user_and_permission: "사용자 및 권한" label_user_named: "사용자 %{name}" - label_user_activity: "%{value}의 작업" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "익명" label_user_menu: "사용자 메뉴" label_user_new: "새 사용자" @@ -3918,6 +4094,12 @@ ko: one: "파일 1개" other: "파일 %{count}개" zero: "파일 없음" + label_x_days: + other: "%{count} days" + label_x_working_days: + other: "%{count} working days" + label_x_working_days_time_off: + other: "Time off: %{count} working days" label_yesterday: "어제" label_zen_mode: "젠 모드" label_role_type: "유형" @@ -3926,6 +4108,22 @@ ko: label_not_changeable: "(변경할 수 없음)" label_global: "글로벌" label_seeded_from_env_warning: 이 레코드는 설정 환경 변수를 통해 생성되었습니다. UI에서 편집할 수 없습니다. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "매크로 %{macro_name} 실행 중에 오류 발생" macro_unavailable: "매크로 %{macro_name}은(는) 표시할 수 없습니다." macros: @@ -3960,7 +4158,7 @@ ko: center: "알림 센터로" see_in_center: "알림 센터의 코멘트 보기" settings: "이메일 설정 변경" - salutation: "안녕하세요, %{user} 님" + salutation: "Hello %{user}," salutation_full_name: "전체 이름" work_packages: created_at: "%{timestamp}, %{user} 님이 생성함 " @@ -3989,7 +4187,7 @@ ko: note: "참고: \"%{note}\"" sharing: work_packages: - allowed_actions: "이 작업 패키지를 %{allowed_actions}할 수 있습니다. 이는 프로젝트 역할 및 권한에 따라 변경될 수 있습니다." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "이 작업 패키지에 액세스하려면 %{instance}에서 계정을 생성하고 활성화해야 합니다." open_work_package: "작업 패키지 열기" subject: "작업 패키지 #%{id}이(가) 귀하와 공유되었습니다" @@ -4088,9 +4286,9 @@ ko: roles: "현재 보유한 역할이 갱신되었습니다:" mail_user_activation_limit_reached: subject: 사용자 활성화 제한에 도달함 - message: | - 회원님이 관리하는 OpenProject 환경(%{host})에서 새로운 사용자(%{email})가 계정을 만들려고 시도했습니다. - 사용자 제한에 도달한 후에는 해당 사용자가 계정을 활성화할 수 없습니다. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "사용자가 로그인하게 허용하려면 다음 중 하나를 수행할 수 있습니다. " a: "결제 플랜([here](upgrade_url)) 업그레이드" #here turned into a link @@ -4272,6 +4470,12 @@ ko: permission_manage_versions: "버전 관리" permission_manage_wiki: "위키 관리" permission_manage_wiki_menu: "위키 메뉴 관리" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "작업 패키지 이동" permission_protect_wiki_pages: "위키 페이지 보호" permission_rename_wiki_pages: "위키 페이지 이름 바꾸기" @@ -4415,10 +4619,10 @@ ko: info: "리포지토리 삭제는 취소할 수 없는 작업입니다." info_not_managed: "참고: 이렇게 해도 이 리포지토리의 콘텐츠는 삭제되지 않습니다. OpenProject에 의해 관리되지 않기 때문입니다." managed_path_note: "다음 디렉터리가 지워집니다. %{path}" - repository_verification: "해당 리포지토리의 삭제를 확인하려면 프로젝트의 식별자 %{identifier}을(를) 입력하세요." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "프로젝트 %{project_name}의 %{repository_type}을(를) 삭제하시겠습니까?" - subtitle_not_managed: "프로젝트 %{project_name}에서 연결된 %{repository_type} %{url}을(를) 제거하시겠습니까?" - title: "%{repository_type} 삭제" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "연결된 %{repository_type}을(를) 제거하시겠습니까?" errors: build_failed: "선택한 구성으로 리포지토리를 만들 수 없습니다. %{reason}" @@ -4468,7 +4672,7 @@ ko: storage: not_available: "이 리포지토리에 대한 디스크 저장소 사용량이 사용 가능하지 않습니다." update_timeout: "N분 동안 리포지토리의 마지막 필요한 디스크 공간 정보를 유지하세요.\n리포지토리의 필요한 디스크 저장소 공간 계산에는 비용이 많이 소요될 수 있으므로, 이 값을 늘려 성능 영향을 줄이세요." - oauth_application_details: "이 창을 닫으면 클라이언트 비밀 값에 다시 액세스할 수 없습니다. 다음 값을 Nextcloud OpenProject Integration 설정에 복사하세요:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "설정 페이지로 이동" setup_documentation_details: "새 파일 저장소를 구성하는 데 도움이 필요하면 설명서를 확인하세요. " setup_documentation_details_link_text: "파일 저장소 설정" @@ -4513,15 +4717,15 @@ ko: setting_apiv3_cors_title: "CORS(크로스 원본 리소스 공유)" setting_apiv3_cors_enabled: "CORS 사용" setting_apiv3_cors_origins: "API V3 CORS(크로스-원본 리소스 공유) 허용 원본" - setting_apiv3_cors_origins_text_html: > - CORS가 활성화된 경우, OpenProject API에 액세스하도록 허용된 원본이 있습니다.
원본 헤더의 설명서에서 예상 값 지정 방법을 확인하세요. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "읽기 전용 특성에 대한 쓰기 액세스" setting_apiv3_write_readonly_attributes_instructions: > 활성화된 경우, API를 통해 관리자는 생성 중에 createdAt 및 author 등 정적 읽기 전용 특성을 작성할 수 있습니다. setting_apiv3_write_readonly_attributes_warning: > 이 설정에는 데이터 가져오기 등의 사용 사례가 있지만 관리자가 다른 사용자로 항목을 만든 것처럼 가장할 수 있습니다. 그러나 모든 생성 요청은 실제 작성자로 기록됩니다. - setting_apiv3_write_readonly_attributes_additional: > - 특성 및 지원되는 리소스에 대한 자세한 내용은 %{api_documentation_link}에서 참조하세요. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "최대 API 페이지 크기" setting_apiv3_max_page_size_instructions: > API가 응답할 최대 페이지 크기를 설정합니다. 단일 페이지에 더 많은 값을 반환하는 API 요청은 수행할 수 없습니다. @@ -4618,7 +4822,7 @@ ko: setting_work_package_properties: "작업 패키지 속성" setting_work_package_startdate_is_adddate: "새 작업 패키지에 대한 시작 날짜로 현재 날짜 사용" setting_work_packages_projects_export_limit: "작업 패키지/프로젝트 내보내기 제한" - setting_journal_aggregation_time_minutes: "집계된 사용자 작업" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "모든 요청에 대한 로그 사용자 로그인, 이름 및 메일 주소" setting_login_required: "인증이 필요함" setting_login_required_caption: "이 옵션을 선택하면 애플리케이션에 대한 모든 요청이 인증되어야 합니다." @@ -4699,6 +4903,12 @@ ko: setting_welcome_text: "환영 블록 텍스트" setting_welcome_title: "환영 블록 제목" setting_welcome_on_homescreen: "홈 화면에 환영 블록 표시" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "기본 강조 표시 모드" setting_work_package_list_default_highlighted_attributes: "기본 인라인 강조 표시 특성" setting_working_days: "근무일" @@ -4865,10 +5075,12 @@ ko: section_work_week: "근무 주" section_holidays_and_closures: "공휴일 및 휴업일" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "이 페이지를 보는 데 필요한 권한이 없습니다." activities: enable_internal_comments: "내부 코멘트 활성화" - helper_text: "내부 코멘트를 사용하여 내부 팀이 비공개로 서로 커뮤니케이션할 수 있습니다. 이러한 코멘트는 필요한 권한을 가진 선택된 역할에만 표시되며 공개적으로 표시되지 않습니다. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "일반 텍스트" @@ -4990,6 +5202,10 @@ ko: text_plugin_assets_writable: "플러그인 자산 디렉터리 쓰기 가능" text_powered_by: "%{link} 제공" text_project_identifier_info: "소문자(a-z), 숫자, 대시(-) 및 밑줄(_)만 허용됩니다. 소문자로 시작해야 합니다." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "작업 패키지에 다시 할당:" text_regexp_multiline: '멀티라인 모드에서 정규식이 적용됩니다. 예, e.g., ^---\s+' text_repository_usernames_mapping: "리포지토리 로그에 있는 각 사용자 이름에 매핑된 OpenProject 사용자를 선택하거나 업데이트하세요.\n동일한 OpenProject 및 리포지토리 사용자 이름이나 이메일을 가진 사용자가 자동으로 매핑됩니다." @@ -5096,18 +5312,18 @@ ko: version_status_locked: "잠김" version_status_open: "열기" note: 메모 - note_password_login_disabled: "암호 로그인이 %{configuration}에 의해 비활성화되었습니다." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: 경고 warning_attachments_not_saved: "%{count}개 파일을 저장할 수 없습니다." - warning_imminent_user_limit: > - 현재 플랜으로 지원되는 사용자보다 많은 사용자를 초대했습니다. 초대된 사용자가 OpenProject 환경에 참여하지 못할 수 있습니다. 초대된 사용자와 등록된 사용자가 참여할 수 있도록 하려면 플랜을 업그레이드하세요. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | 활성화 이메일이 만료되었습니다. %{email}(으)로 새로운 이메일이 전송되었습니다. 이메일 내 링크를 클릭하여 계정을 활성화하세요. warning_user_limit_reached: > 사용자를 더 추가하면 현재 한도가 초과됩니다. 외부 사용자가 이 인스턴스에 액세스할 수 있도록 관리자에게 문의하여 사용자 한도를 늘리세요. - warning_user_limit_reached_admin: > - 사용자를 더 추가하면 현재 한도가 초과됩니다. 외부 사용자가 이 인스턴스에 액세스할 수 있도록 하려면 플랜을 업그레이드하세요. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > 사용자 제한(활성 사용자 %{current}/%{max}명)에 도달했습니다. sales@openproject.com으로 연락하여 Enterprise Edition 플랜을 업그레이드하고 사용자를 더 추가하세요. warning_protocol_mismatch_html: > @@ -5167,7 +5383,7 @@ ko: reminders: label_remind_at: "날짜" note_placeholder: "이 미리 알림을 설정하는 이유는 무엇입니까?" - create_success_message: "미리 알림이 설정되었습니다. %{reminder_time}에 이 작업 패키지에 대한 알림을 받게 됩니다." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "미리 알림이 업데이트되었습니다." success_deletion_message: "미리 알림이 삭제되었습니다." sharing: @@ -5198,8 +5414,8 @@ ko: text_user_limit_reached_admins: '사용자를 더 추가하면 현재 한도가 초과됩니다. 사용자를 더 추가할 수 있도록 하려면 플랜을 업그레이드하세요.' warning_user_limit_reached: > 사용자를 더 추가하면 현재 한도가 초과됩니다. 외부 사용자가 이 %{entity}에 액세스할 수 있도록 관리자에게 문의하여 사용자 한도를 늘리세요. - warning_user_limit_reached_admin: > - 사용자를 더 추가하면 현재 한도가 초과됩니다. 외부 사용자가 이 %{entity}에 액세스할 수 있도록 하려면 플랜을 업그레이드하세요. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "이 %{entity}을(를) 공유할 사용자를 선택하세요" warning_locked_user: "%{user} 사용자는 잠겨 있어서 공유할 수 없습니다" user_details: @@ -5319,6 +5535,7 @@ ko: project: 숨겨짐 - 권한이 없어 프로젝트를 볼 수 없습니다. ancestor: 숨겨짐 - 권한이 없어 상위 항목을 볼 수 없습니다. definingProject: 숨겨짐 - 권한이 없어 프로젝트를 볼 수 없습니다. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "사전 권한 부여" diff --git a/config/locales/crowdin/lt.yml b/config/locales/crowdin/lt.yml index efb0d065aa9..bc676b965ad 100644 --- a/config/locales/crowdin/lt.yml +++ b/config/locales/crowdin/lt.yml @@ -108,7 +108,7 @@ lt: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -391,11 +391,75 @@ lt: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + few: "... %{count} more projects" + many: "... %{count} more projects" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + few: "Remove %{count} statuses?" + many: "Remove %{count} statuses?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -616,6 +680,14 @@ lt: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -778,6 +850,11 @@ lt: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Pokyčio identifikatorius + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -1022,9 +1099,9 @@ lt: groups: member_in_these_groups: "Šis naudotojas šiuo metu yra šių grupių narys:" no_results_title_text: Šis naudotojas nėra jokios grupės narys. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Šis naudotojas šiuo metu nėra projekto narys. open_profile: "Open profile" @@ -1079,6 +1156,66 @@ lt: user: "Naudotojas gali prisijungti ir pasiekti %{project}. Tuo pačiu, jūs jau galite planuoti darbus su šiuo naudotoju ir pavyzdžiui priskirti jam darbo užduotis." placeholder_user: "Statytinis naudotojas gali prisijungti ir pasiekti %{project}. Tuo pačiu, jūs jau galite planuoti darbus su šiuo naudotoju ir pavyzdžiui priskirti jam darbo užduotis." group: "Grupė jau tapo %{project} dalimi. Tuo pačiu, jūs jau galite planuoti darbus su šia grupe ir pavyzdžiui priskirti jai darbo užduotis." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + few: "%{count} working days" + many: "%{count} working days" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Tekstas" placeholder_users: @@ -1086,11 +1223,11 @@ lt: Jums neleidžiama ištrinti statytinio naudotojo. Jūs neturite teisių valdyti projektų narių visuose projektuose, kuriuose šis statytinis naudotojas yra narys. delete_tooltip: "Pašalinti statytinį naudotoją" deletion_info: - heading: "Pašalinti statytinį naudotoją %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > Visose vietose, kur naudojamas statytinis naudotojas (t.y. kaip paskirtas, atsakingas ar kitose naudotojo vietose) jis bus pakeistas į naudotoją „Ištrintas naudotojas“. Kadangi visų ištrintų naudotojų visi duomenys yra priskiriami šiam naudotojui, nebebus galima atskirti šio naudotojo sukurtų duomenų, nuo tų, kuriuos sukūrė kiti ištrinti naudotojai. irreversible: "Šis veiksmas negrįžtamas" - confirmation: "Naikinimo patvirtinimui įveskite statytinio naudotojo vardą %{name}." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1124,8 +1261,8 @@ lt: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1392,7 +1529,7 @@ lt: Naudotojų registracija ribojama tik vieno prisijungimo tiekėjui „%{name}“. Prašome paprašyti administratoriaus, kad aktyvuotų jūsų paskyrą arba pakeistų savarankiškų registracijų apribojimą šiam tiekėjui. login_with_auth_provider: "arba prisijunkite su jau turima paskyra" signup_with_auth_provider: "arba prisiregistruokite naudodami" - auth_source_login: Prisijunkite kaip %{login}, norėdami aktyvuoti savo paskyrą. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Prisijunkite, norėdami aktyvuoti savo paskyrą. actionview_instancetag_blank_option: "Prašome pasirinkti" activemodel: @@ -1663,6 +1800,11 @@ lt: consented_at: "Sutikimo laikas" group: identity_url: "Identiteto URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1671,8 +1813,6 @@ lt: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Pritaikymas neįgaliesiems" auto_hide_popups: "Automatically hide success banners" @@ -1693,6 +1833,28 @@ lt: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Vardas arba elektroninio pašto adresas" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Pabaigos data" sharing: "Pasidalijimas" @@ -1747,6 +1909,8 @@ lt: before: "turi eiti prieš %{date}." before_or_equal_to: "turi eiti prieš arba būti lygu %{date}." blank: "negali būti tuščia." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "reikalauja, kad savybė '%{property}' būtų nustatyta." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1783,8 +1947,9 @@ lt: less_than_or_equal_to: "turi būti mažesnis arba lygus %{count}." not_available: "yra nepasiekiamas dėl sistemos konfigūracijos" not_deletable: "negali būti pašalintas." + not_editable: "cannot be edited because it is already in effect." not_current_user: "nėra dabartinis naudotojas" - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "nėra tinkama data." not_a_datetime: "nėra tinkama data ir laikas." @@ -1815,6 +1980,10 @@ lt: neteikia „Saugaus konteksto“. Arba naudokite HTTPS, arba atgalinį adresą, tokį kaip localhost. wrong_length: "yra neteisingo ilgio (turi būti %{count} simbolių)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1927,6 +2096,9 @@ lt: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "vis dar naudojama darbų paketuose: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "Reikia taip pat įjungti ir modulį '%{dependency}' nes modulis '%{module}' priklauso nuo jo." format: "%{message}" @@ -2134,6 +2306,10 @@ lt: description: "„Slaptažodžio patvirtinimas“ turi sutapti su įvestu į laukelį „Naujas slaptažodis“." status: invalid_on_create: "yra netinkama naujų naudotojų būsena." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Prašome pasirinkti bent vieną naudotoją ar grupę." role_blank: "turi būti priskirtas." @@ -2436,8 +2612,8 @@ lt: Atsarginių kopijų įgalinimas leis bet kuriam naudotojui su priskirtomis teisėmis ir šiuo atsarginės kopijos žetonu parsisiųsti atsarginę kopiją, turinčią visus šio OpenProject egzemplioriaus duomenis. Juose bus ir visų kitų naudotojų duomenys. info: > Norint sukurti atsarginę kopiją jums reikės sugeneruoti atsarginės kopijos žetoną. Kaskart, kai jūs norėsite sukurti atsarginę kopiją, turėsite pateikti šį žetoną. Jūs galite ištrinti žetoną ir taip atimsite iš naudotojo teisę daryti atsargines kopijas. - verification: > - Įveskite %{word} norėdami patvirtinti veiksmą su atsarginės kopijos žetonu: %{action}. + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: atstatyti verification_word_create: sukurti warning: > @@ -2918,7 +3094,7 @@ lt: few: "%{count} days left of %{trial_plan} trial token" many: "%{count} days left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2935,10 +3111,8 @@ lt: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -3026,8 +3200,8 @@ lt: work_package_edit: "Darbų paketas redaguotas" work_package_note: "Darbų paketo pastaba pridėta" title: - project: "Projektas: %{name}" - subproject: "Subprojektas: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Eksportuoti" @@ -3278,6 +3452,7 @@ lt: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Darbo ir eigos sumos automatiškai išimtos ne tėviniams darbų paketams atnaujinant versiją. Tai palaikymo užduotis ir ją galima saugiai ignoruoti. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3285,9 +3460,9 @@ lt: links: configuration_guide: "Konfigūravimo vadovas" get_in_touch: "Turite klausimų? Susisiekite su mumis." - instructions_after_registration: "Galėsite prisijungti, kai tik jūsų paskyra bus aktyvuota paspaudžiant %{signin}." - instructions_after_logout: "Galite vėl prisijungti paspausdami %{signin}." - instructions_after_error: "Bandykite prisijungti dar kartą spustelėdami %{signin}. Jei klaida kartosis, kreipkitės į administratorių." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3479,6 +3654,8 @@ lt: label_calendar_show: "Rodyti kalendorių" label_category: "Kategorija" label_completed: Baigta + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Naudotojo sutikimas" label_wiki_menu_item: Wiki meniu punktas label_select_main_menu_item: Pasirinkti naują pagrindinio meniu punktą @@ -3645,6 +3822,7 @@ lt: label_subject_or_id: "Tema arba ID" label_calendar_subscriptions: "Kalendoriaus prenumeratos" label_identifier: "Identifikatorius" + label_project_identifier: "Project identifier" label_in: " " label_in_less_than: "mažiau nei" label_in_more_than: "daugiau nei" @@ -3778,11 +3956,13 @@ lt: label_news_view_all: "Peržiūrėti visas naujienas" label_next: "Kitas" label_next_week: "Sekanti savaitė" + label_next_year: "Next year" label_no_change_option: "(Jokio pakeitimo)" label_no_data: "Nėra rodytinų duomenų" label_no_due_date: "be pabaigos datos" label_no_start_date: "nėra pradžios datos" label_no_parent_page: "Nėra tėvinio puslapio" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Pranešimai" label_nothing_display: "Nėra ką rodyti" label_nobody: "niekas" @@ -3811,6 +3991,8 @@ lt: label_overall_activity: "Visa veikla" label_overview: "Peržiūra" label_page_title: "Puslapio antraštė" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "dalis" label_password_lost: "Pamiršote slaptažodį?" label_password_rule_lowercase: "Mažosios raidės" @@ -3837,6 +4019,7 @@ lt: label_preview_not_available: "Peržiūra negalima" label_previous: "Ankstesnis" label_previous_week: "Ankstesnė savaitė" + label_previous_year: "Previous year" label_principal_invite_via_email: " arba pakviesti naujus vartotojus naudojant el. paštą" label_principal_search: "Pridėti esamus vartotojus ar grupes" label_privacy_policy: "Duomenų privatumo ir saugumo politika" @@ -3948,6 +4131,7 @@ lt: label_start_to_start: "nuo pradžios iki pradžios" label_statistics: "Statistika" label_status: "Būsena" + label_status_plural: "Statuses" label_storage_free_space: "Likusi vieta diske" label_storage_used_space: "Naudojamos vieta diske" label_storage_group: "Saugojimo failų sistema %{identifier}" @@ -3976,6 +4160,7 @@ lt: label_title: "Pavadinimas" label_projects_menu: "Projektai" label_today: "šiandien" + label_today_capitalized: "Šiandien" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3996,7 +4181,7 @@ lt: label_user: "Vartotojas" label_user_and_permission: "Naudotojai ir teisės" label_user_named: "Naudotojas %{name}" - label_user_activity: "%{value} veikla" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonimas" label_user_menu: "User menu" label_user_new: "Naujas vartotojas" @@ -4083,6 +4268,21 @@ lt: one: "1 failas" other: "%{count} failai" zero: "nėra failų" + label_x_days: + one: "1 day" + few: "%{count} days" + many: "%{count} days" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + few: "%{count} working days" + many: "%{count} working days" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + few: "Time off: %{count} working days" + many: "Time off: %{count} working days" + other: "Time off: %{count} working days" label_yesterday: "vakar" label_zen_mode: "„Zen“ režimas" label_role_type: "Tipas" @@ -4091,6 +4291,22 @@ lt: label_not_changeable: "(negalima pakeisti)" label_global: "Globali" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Klaida vykdant makrokomandą %{macro_name}" macro_unavailable: "Makrokomanda %{macro_name} negali būti rodoma." macros: @@ -4125,7 +4341,7 @@ lt: center: "Į pranešimų centrą" see_in_center: "Žiūrėkite komentarą pranešimų centre" settings: "Keisti e-pašto nustatymus" - salutation: "Sveiki, %{user}" + salutation: "Hello %{user}," salutation_full_name: "Pilnas vardas" work_packages: created_at: "Sukūrė %{user} %{timestamp} " @@ -4157,7 +4373,7 @@ lt: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "Šiame darbo pakete jums leidžiama %{allowed_actions}. Tai gali keistis priklausomai nuo jūsų vaidmens projekte ir teisių." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "Kad prieitumėte prie darbo paketo, jums reikės sukurti ir aktyvuoti %{instance} paskyrą." open_work_package: "Atverti darbo paketą" subject: "Su jumis buvo pabendrintas darbo paketas #%{id}" @@ -4256,9 +4472,9 @@ lt: roles: "Jūs dabar turite tokius vaidmenis:" mail_user_activation_limit_reached: subject: Pasiekta vartotojų aktyvinimo riba - message: | - Naujas vartotojas (%{email}) bandė sukurti paskyrą OpenProject aplinkoją, kurią jūs valdote (%{host}). - Vartotojas negali aktyvuoti savo paskyros, nes sistemoje pasiekta vartotojų riba. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "Norėdami leisti vartotojui prisijungti jūs galite: " a: "Atnaujinti savo mokėjimo planą ([here](upgrade_url))" #here turned into a link @@ -4443,6 +4659,12 @@ lt: permission_manage_versions: "Valdyti versijas" permission_manage_wiki: "Valdyti wiki" permission_manage_wiki_menu: "Valdyti wiki meniu" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Perkelti darbų paketus" permission_protect_wiki_pages: "Apsaugoti wiki puslapius" permission_rename_wiki_pages: "Pervadinti wiki puslapius" @@ -4586,10 +4808,10 @@ lt: info: "Repozitorijos ištrynimas yra negrįžtamas veiksmas." info_not_managed: "Pastaba: tai NEIŠTRINS jokių duomenų repozitorijoje, KURIŲ nevaldo OpenProject sistema." managed_path_note: "Ši katalogas bus išvalytas: %{path}" - repository_verification: "Įveskite projekto identifikatorių %{identifier}, kad patvirtintumėte repozitorijos ištrynimą." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Ar tikrai norite ištrinti projekto %{project_name} repozitoriją %{repository_type}?" - subtitle_not_managed: "Ar tikrai norite pašalinti susietą %{repository_type} %{url} iš projekto %{project_name}?" - title: "Ištrinti saugyklą %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Ištrinti susietą %{repository_type}?" errors: build_failed: "Nepavyko sukurti repozitorijos su parinkta konfigūracija. %{reason}" @@ -4639,7 +4861,7 @@ lt: storage: not_available: "Disko vietos naudojimas nėra prieinamas šiai repozitorijai." update_timeout: "Laikyti paskiausią reikalingą disko vietos informaciją repozitorijai N minutes (-ių). Kadangi reikalingos vietos repozitorijai skaičiavimas gali būti reiklus resursams, minučių reikšmės didinimas gali stipriai sumažinti sistemos našumą." - oauth_application_details: "Kliento slapta reikšmė daugiau nebebus prieinama po to, kai uždarysite šį langą. Prašome nukopijuoti šias reikšmes į Nextcloud OpenProject integracijos nustatymus:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Eiti į nustatymų puslapį" setup_documentation_details: "Jei jums reikia pagalbos konfigūruojant naują failų saugyklą, prašome skaityti dokumentaciją: " setup_documentation_details_link_text: "File storages setup" @@ -4684,15 +4906,15 @@ lt: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Įgalinti CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) leidžiami kilmės domenai" - setting_apiv3_cors_origins_text_html: > - Jei CORS yra įgalinta, tai yra kilmės domenai, kuriems leidžiama pasiekti OpenProject API.
Kaip nurodyti reikšmes aprašoma Origin antraštės dokumentacijoje. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Rašymo prieiga prie tik skaitymui skirtų atributų" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maksimalus API puslapio dydis" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4789,7 +5011,7 @@ lt: setting_work_package_properties: "Darbų paketo ypatybės" setting_work_package_startdate_is_adddate: "Naudoti dabartinę datą kaip naujų darbų paketų pradžios datą" setting_work_packages_projects_export_limit: "Darbo paketų / Projektų eksporto limitas" - setting_journal_aggregation_time_minutes: "Laikais, per kurį įvykę naudotojo veiksmai yra grupuojami" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Įrašyti vartotojo vardą, prisijungimo vardą, e. pašto adresą visiems prašymams" setting_login_required: "Reikalinga autentifikacija" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4870,6 +5092,12 @@ lt: setting_welcome_text: "Pasisveikinimo bloko tekstas" setting_welcome_title: "Pasisveikinimo bloko pavadinimas" setting_welcome_on_homescreen: "Rodyti pasisveikinimo bloką namų lange" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Numatytasis paryškinimo būdas" setting_work_package_list_default_highlighted_attributes: "Atributai, kuriuos numatyta paryškinti" setting_working_days: "Darbo dienos" @@ -5036,10 +5264,12 @@ lt: section_work_week: "Darbo savaitė" section_holidays_and_closures: "Nedarbo dienos" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Paprastas tekstas" @@ -5161,6 +5391,10 @@ lt: text_plugin_assets_writable: "Į papildinių katalogą galima rašyti" text_powered_by: "Parengta pagal %{link}" text_project_identifier_info: "Leidžiamos tik mažosios raidės (a-z), skaitmenys, paprasti (-) ir žemi brūkšneliai (_). Taip pat privalo prasidėti mažąja raide." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Iš naujo priskirti darbų paketui:" text_regexp_multiline: 'Reguliarioji išraiška yra pritaikoma daug eilučių režime, pvz., ^---\s+' text_repository_usernames_mapping: "Parinkite ar atnaujinkite OpenProject naudotoją, kuris paminėtas repozitorijos žurnale.\nNaudotojai, turintys tą patį OpenProject ir repozitorijos vardą ar el. paštą yra automatiškai surišti." @@ -5270,17 +5504,17 @@ lt: version_status_locked: "užrakinti" version_status_open: "atidarytas" note: Pastaba - note_password_login_disabled: "%{configuration} išjungė prisijungimą slaptažodžiu." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Įspėjimas warning_attachments_not_saved: "%{count} failas (-ai, -ų) negali būti išsaugotas (-i)." - warning_imminent_user_limit: > - Jūs pakvietėte daugiau naudotojų, nei palaiko jūsų dabartis planas. Pakviestiems naudotojams gali nepavykti prisijungti prie jūsų OpenProject aplinkos. Atnaujinkite savo planą arba blokuokite esamus naudotojus, kad pakviesti ir registruoti vartotojai galėtų prisijungti. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | Aktyvavimo el. laiško galiojimas pasibaigė. Išsiuntėme jums naują %{email}. Paspauskite laiške duotą nuorodą, kad aktyvuotumėte savo paskyrą. warning_user_limit_reached: > Pridėjus papildomus naudotojus bus viršytas dabartinis apribojimas. Prašome susisiekti su administratoriumi ir padidinti naudotojų apribojimą, kad užtikrintumėte, jog išoriniai naudotojai gali prieiti prie šio egzemplioriaus. - warning_user_limit_reached_admin: > - Pridėjus papildomus naudotojus bus viršytas dabartinis apribojimas. Prašome pagerinti jūsų planą, kad užtikrintumėte, jog išoriniai naudotojai gali prieigi prie šio egzemplioriaus. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > Jūs pasiekėte naudotojų ribą (%{current}/%{max} aktyvūs naudotojai). Susisiekite su sales@openproject.com norėdami atnaujinti savo Enterprise versijos planą arba pridėti papildomų naudotojų. warning_protocol_mismatch_html: > @@ -5340,7 +5574,7 @@ lt: reminders: label_remind_at: "Data" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5371,8 +5605,8 @@ lt: text_user_limit_reached_admins: 'Pridėjus papildomus naudotojus bus viršytas dabartinis apribojimas. Prašome pagerinti jūsų planą, kad galėtumėte pridėti daugiau naudotojų.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "Naudotojas %{user} yra užrakintas, todėl su juo negalima bendrinti" user_details: @@ -5492,6 +5726,7 @@ lt: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Nerodoma - tėvas nematomas dėl teisių trūkumo. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Išankstinė autorizacija" diff --git a/config/locales/crowdin/lv.yml b/config/locales/crowdin/lv.yml index 1db4f4c270b..e49c0a53d29 100644 --- a/config/locales/crowdin/lv.yml +++ b/config/locales/crowdin/lv.yml @@ -108,7 +108,7 @@ lv: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -385,11 +385,73 @@ lv: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + zero: "... %{count} more projects" + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + zero: "Remove %{count} statuses?" + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -613,6 +675,14 @@ lv: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -774,6 +844,11 @@ lv: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -1012,9 +1087,9 @@ lv: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Šis lietotājs pašlaik nav projektu dalībnieks. open_profile: "Open profile" @@ -1069,6 +1144,65 @@ lv: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + zero: "%{count} working days" + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Teksts" placeholder_users: @@ -1076,11 +1210,11 @@ lv: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1113,8 +1247,8 @@ lv: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1380,7 +1514,7 @@ lv: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "vai pierakstieties, izmantojot savu esošo kontu" signup_with_auth_provider: "vai reģistrējies, izmantojot" - auth_source_login: Lūdzu, autorizējaties kā %{login}, lai aktivizētu savu kontu. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Lūdzu, autorizējaties, lai aktivizētu savu kontu. actionview_instancetag_blank_option: "Lūdzu, atlasiet" activemodel: @@ -1651,6 +1785,11 @@ lv: consented_at: "Consented at" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1659,8 +1798,6 @@ lv: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Pieejamības režīms" auto_hide_popups: "Automatically hide success banners" @@ -1681,6 +1818,28 @@ lv: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Finish date" sharing: "Sharing" @@ -1735,6 +1894,8 @@ lv: before: "jābūt pirms %{date}." before_or_equal_to: "jābūt pirms vai vienādam ar %{date}." blank: "nevar būt tukšs." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1771,8 +1932,9 @@ lv: less_than_or_equal_to: "jābūt mazākam vai vienādam ar %{count}." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is not the current user." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "is not a valid date." not_a_datetime: "is not a valid date time." @@ -1803,6 +1965,10 @@ lv: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "ir nepareizs garums (vajadzētu būt %{count} rakstzīmes)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1914,6 +2080,9 @@ lv: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "darbu komplekss joprojām izmanto: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2120,6 +2289,10 @@ lv: description: "Lauka vērtībai \"Paroles apstiprinājums\" jāsakrīt ar lauku \"Jaunā parole\"." status: invalid_on_create: "is not a valid status for new users." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Please choose at least one user or group." role_blank: "need to be assigned." @@ -2404,7 +2577,7 @@ lv: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: create @@ -2865,7 +3038,7 @@ lv: zero: "%{count} days left of %{trial_plan} trial token" one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2882,10 +3055,8 @@ lv: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2973,8 +3144,8 @@ lv: work_package_edit: "Labotie pieteikumi" work_package_note: "Pieteikumam pievienotā piezīme" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Eksportēt" @@ -3225,6 +3396,7 @@ lv: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3232,9 +3404,9 @@ lv: links: configuration_guide: "Configuration guide" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "You can sign in as soon as your account has been activated by clicking %{signin}." - instructions_after_logout: "You can sign in again by clicking %{signin}." - instructions_after_error: "You can try to sign in again by clicking %{signin}. If the error persists, ask your admin for help." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3426,6 +3598,8 @@ lv: label_calendar_show: "Show Calendar" label_category: "Sadaļa" label_completed: Completed + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "User Consent" label_wiki_menu_item: Wiki menu item label_select_main_menu_item: Select new main menu item @@ -3592,6 +3766,7 @@ lv: label_subject_or_id: "Subject or ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Identifikators" + label_project_identifier: "Project identifier" label_in: "in" label_in_less_than: "in less than" label_in_more_than: "in more than" @@ -3725,11 +3900,13 @@ lv: label_news_view_all: "View all news" label_next: "Nākošā" label_next_week: "Next week" + label_next_year: "Next year" label_no_change_option: "(No change)" label_no_data: "Nav dati" label_no_due_date: "no finish date" label_no_start_date: "bez sākuma datuma" label_no_parent_page: "No parent page" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Nav nekas ko parādīt" label_nobody: "nobody" @@ -3758,6 +3935,8 @@ lv: label_overall_activity: "Kopējās darbības" label_overview: "Pārskats" label_page_title: "Page title" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "part of" label_password_lost: "Atjaunot paroli" label_password_rule_lowercase: "Lowercase" @@ -3784,6 +3963,7 @@ lv: label_preview_not_available: "Preview not available" label_previous: "Iepriekšējā" label_previous_week: "Previous week" + label_previous_year: "Previous year" label_principal_invite_via_email: " or invite new users via email" label_principal_search: "Add existing users or groups" label_privacy_policy: "Data privacy and security policy" @@ -3895,6 +4075,7 @@ lv: label_start_to_start: "start to start" label_statistics: "Statistics" label_status: "Statuss" + label_status_plural: "Statuses" label_storage_free_space: "Remaining disk space" label_storage_used_space: "Used disk space" label_storage_group: "Storage filesystem %{identifier}" @@ -3923,6 +4104,7 @@ lv: label_title: "Virsraksts" label_projects_menu: "Projekti" label_today: "šodien" + label_today_capitalized: "Today" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3943,7 +4125,7 @@ lv: label_user: "Lietotāji" label_user_and_permission: "Users and permissions" label_user_named: "User %{name}" - label_user_activity: "%{value}'s activity" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonymous" label_user_menu: "User menu" label_user_new: "New user" @@ -4030,6 +4212,18 @@ lv: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + zero: "%{count} days" + one: "1 day" + other: "%{count} days" + label_x_working_days: + zero: "%{count} working days" + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + zero: "Time off: %{count} working days" + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "yesterday" label_zen_mode: "Zen mode" label_role_type: "Veids" @@ -4038,6 +4232,22 @@ lv: label_not_changeable: "(not changeable)" label_global: "Global" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Error executing the macro %{macro_name}" macro_unavailable: "Macro %{macro_name} cannot be displayed." macros: @@ -4072,7 +4282,7 @@ lv: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4103,7 +4313,7 @@ lv: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4202,7 +4412,7 @@ lv: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: User activation limit reached - message: | + message_html: | A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). The user cannot activate their account since the user limit has been reached. steps: @@ -4389,6 +4599,12 @@ lv: permission_manage_versions: "Manage versions" permission_manage_wiki: "Manage wiki" permission_manage_wiki_menu: "Manage wiki menu" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Move work packages" permission_protect_wiki_pages: "Protect wiki pages" permission_rename_wiki_pages: "Rename wiki pages" @@ -4534,10 +4750,10 @@ lv: info: "Deleting the repository is an irreversible action." info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." managed_path_note: "The following directory will be erased: %{path}" - repository_verification: "Enter the project's identifier %{identifier} to verify the deletion of its repository." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Do you really want to delete the %{repository_type} of the project %{project_name}?" - subtitle_not_managed: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" - title: "Delete the %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Remove the linked %{repository_type}?" errors: build_failed: "Unable to create the repository with the selected configuration. %{reason}" @@ -4587,7 +4803,7 @@ lv: storage: not_available: "Disk storage consumption is not available for this repository." update_timeout: "Keep the last required disk space information for a repository for N minutes.\nAs counting the required disk space of a repository may be costly, increase this value to reduce performance impact." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4632,15 +4848,15 @@ lv: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4737,7 +4953,7 @@ lv: setting_work_package_properties: "Work package properties" setting_work_package_startdate_is_adddate: "Use current date as start date for new work packages" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Log user login, name, and mail address for all requests" setting_login_required: "Authentication required" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4818,6 +5034,12 @@ lv: setting_welcome_text: "Welcome block text" setting_welcome_title: "Welcome block title" setting_welcome_on_homescreen: "Display welcome block on homescreen" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Working days" @@ -4984,10 +5206,12 @@ lv: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Plain text" @@ -5109,6 +5333,10 @@ lv: text_plugin_assets_writable: "Plugin assets directory writable" text_powered_by: "Darbojas uz %{link}" text_project_identifier_info: "Only lower case letters (a-z), numbers, dashes and underscores are allowed, must start with a lower case letter." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassign to work package:" text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' text_repository_usernames_mapping: "Select or update the OpenProject user mapped to each username found in the repository log.\nUsers with the same OpenProject and repository username or email are automatically mapped." @@ -5217,18 +5445,18 @@ lv: version_status_locked: "locked" version_status_open: "aktīvi" note: Note - note_password_login_disabled: "Password login has been disabled by %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Warning warning_attachments_not_saved: "%{count} file(s) could not be saved." - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5288,7 +5516,7 @@ lv: reminders: label_remind_at: "Datums" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5319,8 +5547,8 @@ lv: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5440,6 +5668,7 @@ lv: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/mn.yml b/config/locales/crowdin/mn.yml index ae2ba14fce3..a2ce1d6a141 100644 --- a/config/locales/crowdin/mn.yml +++ b/config/locales/crowdin/mn.yml @@ -108,7 +108,7 @@ mn: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ mn: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -607,6 +667,14 @@ mn: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -767,6 +835,11 @@ mn: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -999,9 +1072,9 @@ mn: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: This user is currently not a member of a project. open_profile: "Open profile" @@ -1056,6 +1129,64 @@ mn: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Text" placeholder_users: @@ -1063,11 +1194,11 @@ mn: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1099,8 +1230,8 @@ mn: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1365,7 +1496,7 @@ mn: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "or sign in with your existing account" signup_with_auth_provider: "or sign up using" - auth_source_login: Please login as %{login} to activate your account. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Please login to activate your account. actionview_instancetag_blank_option: "Please select" activemodel: @@ -1636,6 +1767,11 @@ mn: consented_at: "Consented at" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1644,8 +1780,6 @@ mn: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Accessibility mode" auto_hide_popups: "Automatically hide success banners" @@ -1666,6 +1800,28 @@ mn: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Finish date" sharing: "Sharing" @@ -1720,6 +1876,8 @@ mn: before: "must be before %{date}." before_or_equal_to: "must be before or equal to %{date}." blank: "can't be blank." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1756,8 +1914,9 @@ mn: less_than_or_equal_to: "must be less than or equal to %{count}." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is not the current user." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "is not a valid date." not_a_datetime: "is not a valid date time." @@ -1788,6 +1947,10 @@ mn: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "is the wrong length (should be %{count} characters)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1898,6 +2061,9 @@ mn: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "still in use by work packages: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2103,6 +2269,10 @@ mn: description: "'Password confirmation' should match the input in the 'New password' field." status: invalid_on_create: "is not a valid status for new users." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Please choose at least one user or group." role_blank: "need to be assigned." @@ -2369,7 +2539,7 @@ mn: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: create @@ -2809,7 +2979,7 @@ mn: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2826,10 +2996,8 @@ mn: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2917,8 +3085,8 @@ mn: work_package_edit: "Work Package edited" work_package_note: "Work Package note added" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Export" @@ -3169,6 +3337,7 @@ mn: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3176,9 +3345,9 @@ mn: links: configuration_guide: "Configuration guide" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "You can sign in as soon as your account has been activated by clicking %{signin}." - instructions_after_logout: "You can sign in again by clicking %{signin}." - instructions_after_error: "You can try to sign in again by clicking %{signin}. If the error persists, ask your admin for help." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3370,6 +3539,8 @@ mn: label_calendar_show: "Show Calendar" label_category: "Category" label_completed: Completed + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "User Consent" label_wiki_menu_item: Wiki menu item label_select_main_menu_item: Select new main menu item @@ -3536,6 +3707,7 @@ mn: label_subject_or_id: "Subject or ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Identifier" + label_project_identifier: "Project identifier" label_in: "in" label_in_less_than: "in less than" label_in_more_than: "in more than" @@ -3669,11 +3841,13 @@ mn: label_news_view_all: "View all news" label_next: "Next" label_next_week: "Next week" + label_next_year: "Next year" label_no_change_option: "(No change)" label_no_data: "No data to display" label_no_due_date: "no finish date" label_no_start_date: "no start date" label_no_parent_page: "No parent page" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Nothing to display" label_nobody: "nobody" @@ -3702,6 +3876,8 @@ mn: label_overall_activity: "Overall activity" label_overview: "Overview" label_page_title: "Page title" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "part of" label_password_lost: "Forgot your password?" label_password_rule_lowercase: "Lowercase" @@ -3728,6 +3904,7 @@ mn: label_preview_not_available: "Preview not available" label_previous: "Previous" label_previous_week: "Previous week" + label_previous_year: "Previous year" label_principal_invite_via_email: " or invite new users via email" label_principal_search: "Add existing users or groups" label_privacy_policy: "Data privacy and security policy" @@ -3839,6 +4016,7 @@ mn: label_start_to_start: "start to start" label_statistics: "Statistics" label_status: "Төлөв" + label_status_plural: "Statuses" label_storage_free_space: "Remaining disk space" label_storage_used_space: "Used disk space" label_storage_group: "Storage filesystem %{identifier}" @@ -3867,6 +4045,7 @@ mn: label_title: "Title" label_projects_menu: "Projects" label_today: "today" + label_today_capitalized: "Өнөөдөр" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3887,7 +4066,7 @@ mn: label_user: "User" label_user_and_permission: "Users and permissions" label_user_named: "User %{name}" - label_user_activity: "%{value}'s activity" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonymous" label_user_menu: "User menu" label_user_new: "New user" @@ -3974,6 +4153,15 @@ mn: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "yesterday" label_zen_mode: "Zen mode" label_role_type: "Type" @@ -3982,6 +4170,22 @@ mn: label_not_changeable: "(not changeable)" label_global: "Global" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Error executing the macro %{macro_name}" macro_unavailable: "Macro %{macro_name} cannot be displayed." macros: @@ -4016,7 +4220,7 @@ mn: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4046,7 +4250,7 @@ mn: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4145,7 +4349,7 @@ mn: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: User activation limit reached - message: | + message_html: | A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). The user cannot activate their account since the user limit has been reached. steps: @@ -4331,6 +4535,12 @@ mn: permission_manage_versions: "Manage versions" permission_manage_wiki: "Manage wiki" permission_manage_wiki_menu: "Manage wiki menu" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Move work packages" permission_protect_wiki_pages: "Protect wiki pages" permission_rename_wiki_pages: "Rename wiki pages" @@ -4476,10 +4686,10 @@ mn: info: "Deleting the repository is an irreversible action." info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." managed_path_note: "The following directory will be erased: %{path}" - repository_verification: "Enter the project's identifier %{identifier} to verify the deletion of its repository." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Do you really want to delete the %{repository_type} of the project %{project_name}?" - subtitle_not_managed: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" - title: "Delete the %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Remove the linked %{repository_type}?" errors: build_failed: "Unable to create the repository with the selected configuration. %{reason}" @@ -4529,7 +4739,7 @@ mn: storage: not_available: "Disk storage consumption is not available for this repository." update_timeout: "Keep the last required disk space information for a repository for N minutes.\nAs counting the required disk space of a repository may be costly, increase this value to reduce performance impact." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4574,15 +4784,15 @@ mn: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4679,7 +4889,7 @@ mn: setting_work_package_properties: "Work package properties" setting_work_package_startdate_is_adddate: "Use current date as start date for new work packages" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Log user login, name, and mail address for all requests" setting_login_required: "Authentication required" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4760,6 +4970,12 @@ mn: setting_welcome_text: "Welcome block text" setting_welcome_title: "Welcome block title" setting_welcome_on_homescreen: "Display welcome block on homescreen" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Working days" @@ -4926,10 +5142,12 @@ mn: section_work_week: "Ажлын долоо хоног" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Plain text" @@ -5051,6 +5269,10 @@ mn: text_plugin_assets_writable: "Plugin assets directory writable" text_powered_by: "Powered by %{link}" text_project_identifier_info: "Only lower case letters (a-z), numbers, dashes and underscores are allowed, must start with a lower case letter." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassign to work package:" text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' text_repository_usernames_mapping: "Select or update the OpenProject user mapped to each username found in the repository log.\nUsers with the same OpenProject and repository username or email are automatically mapped." @@ -5158,18 +5380,18 @@ mn: version_status_locked: "locked" version_status_open: "open" note: Note - note_password_login_disabled: "Password login has been disabled by %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Warning warning_attachments_not_saved: "%{count} file(s) could not be saved." - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5229,7 +5451,7 @@ mn: reminders: label_remind_at: "Date" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5260,8 +5482,8 @@ mn: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5381,6 +5603,7 @@ mn: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/ms.yml b/config/locales/crowdin/ms.yml index b5544415285..1ee8676b02d 100644 --- a/config/locales/crowdin/ms.yml +++ b/config/locales/crowdin/ms.yml @@ -108,7 +108,7 @@ ms: jemalloc_allocator: Pengagih ingatan Jemalloc journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -373,11 +373,69 @@ ms: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -600,6 +658,14 @@ ms: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -759,6 +825,11 @@ ms: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Tukar pengenal + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -985,9 +1056,9 @@ ms: groups: member_in_these_groups: "Pengguna ini ialah ahli dalam kumpulan berikut buat masa ini:" no_results_title_text: Pengguna ini bukan ahli untuk mana-mana kumpulan buat masa ini. - summary_with_more: Ahli %{names} dan %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} lagi" - summary: Ahli %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Pengguna ini bukan ahli projek buat masa ini. open_profile: "Buka profil" @@ -1042,6 +1113,63 @@ ms: user: "Pengguna kini boleh log masuk untuk mengakses %{project}. Sementara itu, anda boleh merancang dengan pengguna tersebut dan tugaskan pakej kerja sebagai contoh." placeholder_user: "Placeholder kini boleh digunakan dalam %{project}. Sementara itu anda sudah boleh merancang dengan pengguna tersebut dan tugaskan pakej kerja sebagai contoh." group: "Kumpulan tersebut kini sebahagian daripada %{project}. Sementara itu anda sudah boleh merancang dengan kumpulan tersebut dan menugaskan pakej kerja sebagai contoh." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Teks" placeholder_users: @@ -1049,11 +1177,11 @@ ms: Anda tidak dibenarkan untuk membuang pengguna placeholder. Anda tidak mempunyai hak untuk mengurus ahli untuk semua projek yang pengguna placeholder merupakan ahli pada. delete_tooltip: "Buang pengguna placeholder" deletion_info: - heading: "Buang pengguna placeholder %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > Semua kejadian pengguna placeholder (cth., sebagai penerima tugasan, bertanggungjawab atau nilai pengguna lain) akan ditugaskan semula kepada akaun yang dipanggil "Pengguna yang dipadam". Oleh kerana data setiap akaun yang dipadam ditugaskan semula ke akaun ini, tidak mungkin akan dapat untuk membezakan data yang dicipta oleh pengguna, daripada data akaun lain yang dipadam. irreversible: "Tindakan ini tidak dapat dipulihkan" - confirmation: "Masukkan nama pengguna placeholder %{name} untuk mengesahkan pembuangan." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1083,10 +1211,10 @@ ms: Pakej kerja baharu secara lalai ditetapkan kepada jenis ini. Mereka tidak boleh dibaca sahaja. status_excluded_from_totals_text: |- Tandakan pilihan ini untuk mengecualikan pakej kerja dengan status ini dari jumlah Kerja, Kerja yang berbaki, dan % Selesai dalam hierarki. - status_percent_complete_text: |- - Dalam mod pengiraan kemajuan berasaskan status, % Selesai kerja - pakej ditetapkan secara automatik kepada nilai ini apabila status ini dipilih. - Diabaikan dalam mod berasaskan kerja. + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work + package is automatically set to this value when this status is selected. + Ignored in work-based mode. status_readonly_html: | Check this option to mark work packages with this status as read-only. No attributes can be changed with the exception of the status. @@ -1348,7 +1476,7 @@ ms: Pendaftaran pengguna terhad pada penyediaan log masuk satu kali '%{name}'. Sila meminta pentadbir untuk mengaktifkan akaun tersebut untuk anda atau tukar had pendaftaran sendiri untuk penyediaan ini. login_with_auth_provider: "atau daftar masuk dengan akaun sedia ada anda" signup_with_auth_provider: "atau daftar menggunakan" - auth_source_login: Sila log masuk sebagai %{login} untuk mengaktifkan akaun anda. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Sila log masuk untuk mengaktifkan akaun anda. actionview_instancetag_blank_option: "Sila pilih" activemodel: @@ -1619,6 +1747,11 @@ ms: consented_at: "Dipersetujui di" group: identity_url: "Identiti URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1627,8 +1760,6 @@ ms: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Mod ketercapaian" auto_hide_popups: "Automatically hide success banners" @@ -1649,6 +1780,28 @@ ms: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Nama atau alamat e-mel" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Tarikh tamat" sharing: "Perkongsian" @@ -1703,6 +1856,8 @@ ms: before: "mesti sebelum %{date}." before_or_equal_to: "mesti sebelum atau sama dengan %{date}." blank: "tidak boleh dibiarkan kosong." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "perlu ada ciri-ciri '%{property}' yang ditetapkan." cannot_delete_mapping: "diperlukan. Tidak boleh dipadam." is_for_all_cannot_modify: "adalah untuk semua projek dan oleh itu tidak boleh diubah suai." @@ -1739,8 +1894,9 @@ ms: less_than_or_equal_to: "perlu kurang daripada atau sama dengan %{count}." not_available: "adalah tidak tersedia kerana konfigurasi sistem." not_deletable: "tidak dapat dipadamkan." + not_editable: "cannot be edited because it is already in effect." not_current_user: "adalah bukan pengguna semasa." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "tidak dijumpai." not_a_date: "bukan tarikh yang sah." not_a_datetime: "bukan tarikh masa yang sah." @@ -1771,6 +1927,10 @@ ms: tidak menyediakan "Konteks Selamat". Gunakan antara HTTPS atau alamat gelung-balik, seperti localhost. wrong_length: "adalah panjang yang salah (sepatutnya %{count} karakter)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1880,6 +2040,9 @@ ms: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "masih digunakan oleh pakej kerja: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "Modul '%{dependency}' perlu dibenarkan juga kerana modul '%{module}' bergantung padanya." format: "%{message}" @@ -2084,6 +2247,10 @@ ms: description: "'Pengesahan kata laluan' perlu sepadan dengan input dalam ruangan 'Kata laluan baharu'." status: invalid_on_create: "adalah bukan status yang sah untuk pengguna baharu." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Sila pilih sekurang-kurangnya satu pengguna atau kumpulan." role_blank: "perlu ditugaskan." @@ -2332,8 +2499,8 @@ ms: Mengaktifkan sandaran akan membenarkan mana-mana pengguna dengan kebenaran yang diperlukan, dan token sandaran ini untuk memuat turun sandaran yang mengandungi semua data pemasangan OpenProject ini. Ini termasuk data semua pengguna. info: > Anda perlu menghasilkan token sandaran untuk dapat mencipta sandaran. Setiap kali anda ingin meminta sandaran anda perlu menyediakan token ini. Anda boleh memadam token sandaran tersebut untuk menyahdayakan sandaran untuk pengguna ini. - verification: > - Masukkan %{word} untuk mengesahkan anda mahu %{action} token sandaran. + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: Tetapkan semula verification_word_create: cipta warning: > @@ -2751,7 +2918,7 @@ ms: teaser: title: other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2768,10 +2935,8 @@ ms: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2859,8 +3024,8 @@ ms: work_package_edit: "Pakej Kerja diedit" work_package_note: "Nota Pakej Kerja ditambah" title: - project: "Projek: %{name}" - subproject: "Subprojek: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Eksport" @@ -3111,6 +3276,7 @@ ms: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Jumlah kerja dan perkembangan dipadam untuk pakej kerja bukan induk secara automatik dengan versi kemas kini. Ini ialah tugasan penyelenggaraan dan boleh diabaikan dengan selamat. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Pakej kerja kanak-kanak tanpa Kerja diabaikan. total_percent_complete_mode_changed_to_simple_average: >- @@ -3118,9 +3284,9 @@ ms: links: configuration_guide: "Panduan konfigurasi" get_in_touch: "Anda mempunyai soalan? Sila hubungi kami." - instructions_after_registration: "Anda boleh daftar masuk sebaik sahaja akaun anda diaktifkan dengan mengklik %{signin}." - instructions_after_logout: "Anda boleh daftar masuk semula dengan mengklik %{signin}." - instructions_after_error: "Anda boleh cuba daftar masuk semula dengan mengklik %{signin}. Jika ralat ini masih berterusan, sila minta bantuan dari pentadbir anda," + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3312,6 +3478,8 @@ ms: label_calendar_show: "Paparkan Kalendar" label_category: "Kategori" label_completed: Selesai + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Persetujuan Pengguna" label_wiki_menu_item: Item menu wiki label_select_main_menu_item: Pilih item menu utama baharu @@ -3478,6 +3646,7 @@ ms: label_subject_or_id: "Subjek atau ID" label_calendar_subscriptions: "Langganan kalendar" label_identifier: "Pengenalan" + label_project_identifier: "Project identifier" label_in: "dalam" label_in_less_than: "kurang daripada" label_in_more_than: "lebih daripada" @@ -3611,11 +3780,13 @@ ms: label_news_view_all: "Lihat semua berita" label_next: "Seterusnya" label_next_week: "Minggu hadapan" + label_next_year: "Next year" label_no_change_option: "(Tiada perubahan)" label_no_data: "Tiada data untuk dipaparkan" label_no_due_date: "tiada tarikh tamat" label_no_start_date: "tiada tarikh mula" label_no_parent_page: "Tiada halaman induk" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Pemberitahuan" label_nothing_display: "Tiada apa untuk dipaparkan" label_nobody: "tiada siapa" @@ -3644,6 +3815,8 @@ ms: label_overall_activity: "Aktiviti keseluruhan" label_overview: "Gambaran Keseluruhan" label_page_title: "Tajuk halaman" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "sebahagian daripada" label_password_lost: "Lupa kata laluan anda?" label_password_rule_lowercase: "Huruf Kecil" @@ -3670,6 +3843,7 @@ ms: label_preview_not_available: "Previu tidak tersedia" label_previous: "Sebelumnya" label_previous_week: "Minggu sebelumnya" + label_previous_year: "Previous year" label_principal_invite_via_email: "atau jemput pengguna baharu melalui e-mel" label_principal_search: "Tambah pengguna atau kumpulan sedia ada" label_privacy_policy: "Privasi data dan dasar keselamatan" @@ -3781,6 +3955,7 @@ ms: label_start_to_start: "mula ke mula" label_statistics: "Statistik" label_status: "Status" + label_status_plural: "Statuses" label_storage_free_space: "Ruang cakera yang berbaki" label_storage_used_space: "Ruang cakera yang digunakan" label_storage_group: "Sistem storan fail %{identifier}" @@ -3809,6 +3984,7 @@ ms: label_title: "Tajuk" label_projects_menu: "Projek-projek" label_today: "hari ini" + label_today_capitalized: "Hari ini" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3829,7 +4005,7 @@ ms: label_user: "Pengguna" label_user_and_permission: "Pengguna dan kebenaran" label_user_named: "Pengguna %{name}" - label_user_activity: "aktiviti %{value}" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonim" label_user_menu: "User menu" label_user_new: "Pengguna baharu" @@ -3916,6 +4092,12 @@ ms: one: "1 fail" other: "%{count} fail" zero: "tiada fail" + label_x_days: + other: "%{count} days" + label_x_working_days: + other: "%{count} working days" + label_x_working_days_time_off: + other: "Time off: %{count} working days" label_yesterday: "semalam" label_zen_mode: "Mod Zen" label_role_type: "Jenis" @@ -3924,6 +4106,22 @@ ms: label_not_changeable: "(tidak boleh diubah)" label_global: "Global" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Ralat melaksanakan makro berikut %{macro_name}" macro_unavailable: "Makro %{macro_name} tidak dapat dipaparkan." macros: @@ -3958,7 +4156,7 @@ ms: center: "Ke pusat pemberitahuan" see_in_center: "Lihat komen dalam pusat pemberitahuan" settings: "Tukar tetapan e-mel" - salutation: "Helo %{user}" + salutation: "Hello %{user}," salutation_full_name: "Nama penuh" work_packages: created_at: "Dicipta pada %{timestamp} oleh %{user}" @@ -3987,7 +4185,7 @@ ms: note: "Nota: \"%{note}\"" sharing: work_packages: - allowed_actions: "Anda boleh %{allowed_actions} pakej kerja ini. Ini akan berubah bergantung kepada peranan projek dan kebenaran anda." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "Untuk mengakses pakej kerja ini, anda perlu mencipta dan mengaktifkan akaun di %{instance}." open_work_package: "Buka pakej kerja" subject: "Pakej kerja #%{id} telah dikongsikan dengan anda" @@ -4086,9 +4284,9 @@ ms: roles: "Anda kini mempunyai peranan yang berikut:" mail_user_activation_limit_reached: subject: Had pengaktifan pengguna dicapai - message: | - Pengguna baharu (%{email}) telah cuba mencipta satu akaun pada persekitaran OpenProject yang anda uruskan (%{host}). - Pengguna tersebut tidak dapat mengaktifkan akaun mereka kerana had pengguna telah dicapai. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "Untuk membenarkan pengguna untuk daftar masuk, anda juga boleh: " a: "Naik taraf pelan pembayaran anda ([di sini](upgrade_url))" #here turned into a link @@ -4270,6 +4468,12 @@ ms: permission_manage_versions: "Urus versi" permission_manage_wiki: "Urus wiki" permission_manage_wiki_menu: "Urus menu wiki" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Alih pakej kerja" permission_protect_wiki_pages: "Lindungi halaman wiki" permission_rename_wiki_pages: "Nama semula halaman wiki" @@ -4415,10 +4619,10 @@ ms: info: "Memadam repositori tersebut adalah tindakan yang tidak dapat dipulihkan." info_not_managed: "Perhatian: Ini TIDAK akan memadam kandungan repositori, kerana ia bukan diuruskan oleh OpenProject." managed_path_note: "Direktori berikut akan dipadamkan: %{path}" - repository_verification: "Masukkan pengenal projek %{identifier} untuk mengesahkan pemadaman repositorinya." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Adakah anda benar-benar ingin memadam %{repository_type} projek %{project_name}?" - subtitle_not_managed: "Adakah anda benar-benar mahu mengeluarkan %{repository_type} %{url} yang terpaut daripada projek %{project_name}?" - title: "Padamkan %{repository_type} tersebut" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Keluarkan pautan %{repository_type}?" errors: build_failed: "Tidak boleh mencipta repositori dengan konfigurasi yang dipilih. %{reason}" @@ -4468,7 +4672,7 @@ ms: storage: not_available: "Penggunaan storan cakera tidak tersedia untuk repositori." update_timeout: "Simpan informasi ruang cakera terakhir yang diperlukan untuk repositori selama N minit.\nMemandangkan pengiraan ruang cakera yang diperlukan bagi repositori mungkin mahal, tinggikan nilai ini untuk mengurangkan kesan prestasinya." - oauth_application_details: "Nilai rahsia pelanggan tidak akan dapat untuk diakses lagi setelah anda menutup tetingkap ini. Sila salin nilai-nilai ini ke tetapan Integrasi Nextcloud OpenProject:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Pergi ke halaman tetapan" setup_documentation_details: "Jika anda memerlukan bantuan mengkonfigurasikan storan fail baharu, sila lihat dokumentasi berikut:" setup_documentation_details_link_text: "File storages setup" @@ -4513,15 +4717,15 @@ ms: setting_apiv3_cors_title: "Perkongsian Sumber Silang Asal (CORS)" setting_apiv3_cors_enabled: "Aktifkan CORS" setting_apiv3_cors_origins: "Asal yang dibenarkan Perkongsian Sumber Rentas Asal (CORS) API V3 " - setting_apiv3_cors_origins_text_html: > - Jika CORS telah dibenarkan, ini ialah asal yang dibenarkan untuk mengakses API OpenProject.
Sila semak dokumentasi di pengepala Asal untuk cara nyatakan nilai-nilai yang dijangkakan. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Tulis akses pada atribut baca-sahaja" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Saiz halaman maksimum API" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4618,7 +4822,7 @@ ms: setting_work_package_properties: "Ciri-ciri pakej kerja" setting_work_package_startdate_is_adddate: "Guna tarikh semasa sebagai tarikh mula untuk pakej kerja baharu" setting_work_packages_projects_export_limit: "Pakej kerja / Had eksport projek" - setting_journal_aggregation_time_minutes: "Tindakan pengguna dikumpulkan dalam" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Log masuk pengguna yang direkodkan, nama, dan alamat mel untuk semua permintaan" setting_login_required: "Pengesahan diperlukan" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4699,6 +4903,12 @@ ms: setting_welcome_text: "Teks blok selamat datang" setting_welcome_title: "Tajuk blok selamat datang" setting_welcome_on_homescreen: "Paparkan blok selamat datang di skrin utama" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Mod penyorotan default" setting_work_package_list_default_highlighted_attributes: "Atribut disorot sebaris default" setting_working_days: "Hari bekerja" @@ -4865,10 +5075,12 @@ ms: section_work_week: "Minggu kerja" section_holidays_and_closures: "Hari perayaan dan penutupan" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Teks biasa" @@ -4990,6 +5202,10 @@ ms: text_plugin_assets_writable: "Aset plugin direktori yang boleh ditulis" text_powered_by: "Dikuasakan oleh %{link}" text_project_identifier_info: "Hanya huruf kecil (a-z), nombor, sengkang dan tanda garis bawah adalah dibenarkan, mesti mula dengan huruf kecil." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Tugaskan semula ke pakej kerja:" text_regexp_multiline: 'Regex digunakan dalam mod berbilang baris. cth., ^---\s+' text_repository_usernames_mapping: "Pilih atau kemas kini pengguna OpenProject yang dipetakan ke setiap nama pengguna yang ditemui dalam log repositori.\nPengguna dengan OpenProject dan nama pengguna repositori atau e-mel yang sama dipetakan secara automatik. " @@ -5096,18 +5312,18 @@ ms: version_status_locked: "terkunci" version_status_open: "buka" note: Nota - note_password_login_disabled: "Kata laluan log masuk telah dibatalkan oleh %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Amaran warning_attachments_not_saved: "%{count} fail tidak dapat disimpan." - warning_imminent_user_limit: > - Anda menjemput pengguna lebih dari yang disokong pelan semasa anda. Pengguna yang dijemput mungkin tidak dapat sertai persekitaran OpenProject anda. Sila naik taraf pelan anda atau sekat pengguna sedia ada untuk membenarkan pengguna yang dijemput dan berdaftar untuk menyertai. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | Pengaktifan e-mel telah tamat tempoh. Kami telah hantar yang baharu kepada anda di %{email}. Sila klik pautan di dalamnya untuk mengaktifkan akaun anda. warning_user_limit_reached: > Menambah pengguna tambahan akan melebihi had semasa. Sila hubungi pentadbir untuk meningkatkan had pengguna bagi memastikan pengguna luaran dapat mengakses contoh ini. - warning_user_limit_reached_admin: > - Menambah pengguna tambahan akan melebihi had semasa. Sila naik taraf pelan anda bagi memastikan pengguna luaran dapat mengakses contoh ini. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > Anda telah mencapai had pengguna anda (%{current}/%{max} pengguna aktif). Sila hubungi sales@openproject.com untuk menaik taraf pelan edisi Enterprise anda dan tambah pengguna tambahan. warning_protocol_mismatch_html: > @@ -5167,7 +5383,7 @@ ms: reminders: label_remind_at: "Tarikh" note_placeholder: "Mengapa anda menetapkan peringatan ini?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Peringatan berjaya dikemas kini." success_deletion_message: "Peringatan berjaya dipadamkan." sharing: @@ -5198,8 +5414,8 @@ ms: text_user_limit_reached_admins: 'Menambah pengguna tambahan akan melebihi had semasa. Sila tingkatkan rancangan anda untuk dapat menambah lebih ramai pengguna.' warning_user_limit_reached: > Menambah pengguna tambahan akan melebihi had semasa. Sila hubungi pentadbir untuk meningkatkan had pengguna bagi memastikan pengguna luar dapat mengakses %{entity} ini. - warning_user_limit_reached_admin: > - Menambah pengguna tambahan akan melebihi had semasa. Sila naik taraf pelan anda untuk memastikan pengguna luar dapat mengakses %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Sila pilih pengguna untuk berkongsi %{entity} ini" warning_locked_user: "Pengguna %{user} telah dikunci dan tidak boleh dikongsi" user_details: @@ -5319,6 +5535,7 @@ ms: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Tidak didedahkan - Leluhur tidak kelihatan kerana kurang kebenaran. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pra-kebenaran" diff --git a/config/locales/crowdin/ne.yml b/config/locales/crowdin/ne.yml index 28f107c8494..627da672cbc 100644 --- a/config/locales/crowdin/ne.yml +++ b/config/locales/crowdin/ne.yml @@ -108,7 +108,7 @@ ne: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ ne: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -607,6 +667,14 @@ ne: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -767,6 +835,11 @@ ne: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -999,9 +1072,9 @@ ne: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: This user is currently not a member of a project. open_profile: "Open profile" @@ -1056,6 +1129,64 @@ ne: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Text" placeholder_users: @@ -1063,11 +1194,11 @@ ne: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1099,8 +1230,8 @@ ne: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1365,7 +1496,7 @@ ne: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "वा तपाईंको हालको खाताबाट साइन इन गर्नुहोस्" signup_with_auth_provider: "or sign up using" - auth_source_login: Please login as %{login} to activate your account. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Please login to activate your account. actionview_instancetag_blank_option: "कृपया छान्नुहोस्" activemodel: @@ -1636,6 +1767,11 @@ ne: consented_at: "Consented at" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1644,8 +1780,6 @@ ne: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Accessibility mode" auto_hide_popups: "Automatically hide success banners" @@ -1666,6 +1800,28 @@ ne: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Finish date" sharing: "Sharing" @@ -1720,6 +1876,8 @@ ne: before: "must be before %{date}." before_or_equal_to: "must be before or equal to %{date}." blank: "can't be blank." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1756,8 +1914,9 @@ ne: less_than_or_equal_to: "must be less than or equal to %{count}." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is not the current user." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "is not a valid date." not_a_datetime: "is not a valid date time." @@ -1788,6 +1947,10 @@ ne: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "is the wrong length (should be %{count} characters)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1898,6 +2061,9 @@ ne: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "still in use by work packages: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2103,6 +2269,10 @@ ne: description: "'Password confirmation' should match the input in the 'New password' field." status: invalid_on_create: "is not a valid status for new users." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Please choose at least one user or group." role_blank: "need to be assigned." @@ -2369,7 +2539,7 @@ ne: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: create @@ -2809,7 +2979,7 @@ ne: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2826,10 +2996,8 @@ ne: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2917,8 +3085,8 @@ ne: work_package_edit: "Work Package edited" work_package_note: "Work Package note added" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Export" @@ -3169,6 +3337,7 @@ ne: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3176,9 +3345,9 @@ ne: links: configuration_guide: "Configuration guide" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "You can sign in as soon as your account has been activated by clicking %{signin}." - instructions_after_logout: "You can sign in again by clicking %{signin}." - instructions_after_error: "You can try to sign in again by clicking %{signin}. If the error persists, ask your admin for help." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3370,6 +3539,8 @@ ne: label_calendar_show: "Show Calendar" label_category: "Category" label_completed: पूरा भयो + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "User Consent" label_wiki_menu_item: Wiki menu item label_select_main_menu_item: Select new main menu item @@ -3536,6 +3707,7 @@ ne: label_subject_or_id: "Subject or ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "परिचायक" + label_project_identifier: "Project identifier" label_in: "in" label_in_less_than: "in less than" label_in_more_than: "in more than" @@ -3669,11 +3841,13 @@ ne: label_news_view_all: "View all news" label_next: "Next" label_next_week: "Next week" + label_next_year: "Next year" label_no_change_option: "(No change)" label_no_data: "No data to display" label_no_due_date: "no finish date" label_no_start_date: "no start date" label_no_parent_page: "No parent page" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Nothing to display" label_nobody: "nobody" @@ -3702,6 +3876,8 @@ ne: label_overall_activity: "Overall activity" label_overview: "Overview" label_page_title: "Page title" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "part of" label_password_lost: "Forgot your password?" label_password_rule_lowercase: "Lowercase" @@ -3728,6 +3904,7 @@ ne: label_preview_not_available: "Preview not available" label_previous: "Previous" label_previous_week: "Previous week" + label_previous_year: "Previous year" label_principal_invite_via_email: " or invite new users via email" label_principal_search: "Add existing users or groups" label_privacy_policy: "Data privacy and security policy" @@ -3839,6 +4016,7 @@ ne: label_start_to_start: "start to start" label_statistics: "Statistics" label_status: "Status" + label_status_plural: "Statuses" label_storage_free_space: "Remaining disk space" label_storage_used_space: "Used disk space" label_storage_group: "Storage filesystem %{identifier}" @@ -3867,6 +4045,7 @@ ne: label_title: "Title" label_projects_menu: "Projects" label_today: "today" + label_today_capitalized: "Today" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3887,7 +4066,7 @@ ne: label_user: "User" label_user_and_permission: "Users and permissions" label_user_named: "User %{name}" - label_user_activity: "%{value}'s activity" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonymous" label_user_menu: "User menu" label_user_new: "New user" @@ -3974,6 +4153,15 @@ ne: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "yesterday" label_zen_mode: "Zen mode" label_role_type: "Type" @@ -3982,6 +4170,22 @@ ne: label_not_changeable: "(not changeable)" label_global: "Global" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Error executing the macro %{macro_name}" macro_unavailable: "Macro %{macro_name} cannot be displayed." macros: @@ -4016,7 +4220,7 @@ ne: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4046,7 +4250,7 @@ ne: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4145,7 +4349,7 @@ ne: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: User activation limit reached - message: | + message_html: | A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). The user cannot activate their account since the user limit has been reached. steps: @@ -4331,6 +4535,12 @@ ne: permission_manage_versions: "Manage versions" permission_manage_wiki: "Manage wiki" permission_manage_wiki_menu: "Manage wiki menu" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Move work packages" permission_protect_wiki_pages: "Protect wiki pages" permission_rename_wiki_pages: "Rename wiki pages" @@ -4476,10 +4686,10 @@ ne: info: "Deleting the repository is an irreversible action." info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." managed_path_note: "The following directory will be erased: %{path}" - repository_verification: "Enter the project's identifier %{identifier} to verify the deletion of its repository." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Do you really want to delete the %{repository_type} of the project %{project_name}?" - subtitle_not_managed: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" - title: "Delete the %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Remove the linked %{repository_type}?" errors: build_failed: "Unable to create the repository with the selected configuration. %{reason}" @@ -4529,7 +4739,7 @@ ne: storage: not_available: "Disk storage consumption is not available for this repository." update_timeout: "Keep the last required disk space information for a repository for N minutes.\nAs counting the required disk space of a repository may be costly, increase this value to reduce performance impact." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4574,15 +4784,15 @@ ne: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4679,7 +4889,7 @@ ne: setting_work_package_properties: "Work package properties" setting_work_package_startdate_is_adddate: "Use current date as start date for new work packages" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Log user login, name, and mail address for all requests" setting_login_required: "Authentication required" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4760,6 +4970,12 @@ ne: setting_welcome_text: "Welcome block text" setting_welcome_title: "Welcome block title" setting_welcome_on_homescreen: "Display welcome block on homescreen" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Working days" @@ -4926,10 +5142,12 @@ ne: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Plain text" @@ -5051,6 +5269,10 @@ ne: text_plugin_assets_writable: "Plugin assets directory writable" text_powered_by: "Powered by %{link}" text_project_identifier_info: "Only lower case letters (a-z), numbers, dashes and underscores are allowed, must start with a lower case letter." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassign to work package:" text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' text_repository_usernames_mapping: "Select or update the OpenProject user mapped to each username found in the repository log.\nUsers with the same OpenProject and repository username or email are automatically mapped." @@ -5158,18 +5380,18 @@ ne: version_status_locked: "locked" version_status_open: "open" note: Note - note_password_login_disabled: "Password login has been disabled by %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Warning warning_attachments_not_saved: "%{count} file(s) could not be saved." - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5229,7 +5451,7 @@ ne: reminders: label_remind_at: "Date" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5260,8 +5482,8 @@ ne: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5381,6 +5603,7 @@ ne: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/nl.yml b/config/locales/crowdin/nl.yml index b17ffaa38c7..020d96b726f 100644 --- a/config/locales/crowdin/nl.yml +++ b/config/locales/crowdin/nl.yml @@ -108,7 +108,7 @@ nl: jemalloc_allocator: Jemalloc geheugentoewijzer journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ nl: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -604,6 +664,14 @@ nl: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -764,6 +832,11 @@ nl: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -996,9 +1069,9 @@ nl: groups: member_in_these_groups: "Deze gebruiker is momenteel lid van de volgende groepen:" no_results_title_text: Deze gebruiker is momenteel geen lid in een groep. - summary_with_more: Lid van %{names} en %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} meer" - summary: Lid van %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Deze gebruiker is momenteel geen lid van een project. open_profile: "Profiel openen" @@ -1053,6 +1126,64 @@ nl: user: "De gebruiker kan nu inloggen om toegang te krijgen tot %{project}. Ondertussen kan je met die gebruiker al plannen en werkpakketten toewijzen, bijvoorbeeld." placeholder_user: "De tijdelijke gebruiker kan nu worden gebruikt in %{project}. Ondertussen kunt u deze gebruiker al plannen en werkpakketten toewijzen, bijvoorbeeld." group: "De groep is nu een deel van %{project}. Ondertussen kun je al plannen maken met die groep en werkpakketten toewijzen, bijvoorbeeld." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Tekst" placeholder_users: @@ -1060,11 +1191,11 @@ nl: U heeft geen toestemming om de placeholder gebruiker te verwijderen. U heeft niet het recht om deelnemers te beheren voor alle projecten waarvan de placeholder gebruiker lid is. delete_tooltip: "Placeholder gebruiker verwijderen" deletion_info: - heading: "Tijdelijke gebruiker %{name} verwijderen" + heading_html: "Delete placeholder user %{name}" data_consequences: > Alle gebeurtenissen van de tijdelijke gebruiker (bijv. als taakontvanger, verantwoordelijke of andere gebruikerswaarden) zullen opnieuw worden toegewezen aan een account genaamd "Verwijderde gebruiker". Aangezien de gegevens van elke verwijderde account opnieuw zijn toegewezen aan dit account, zal het niet mogelijk zijn om de gegevens die de gebruiker heeft aangemaakt van een ander verwijderd account te onderscheiden. irreversible: "Deze actie is onomkeerbaar" - confirmation: "Voer de naam van de tijdelijke gebruiker %{name} in om de verwijdering te bevestigen." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1096,9 +1227,10 @@ nl: status_excluded_from_totals_text: |- Vink deze optie aan om werkpakketten met deze status uit te sluiten van de totalen van Werk, Resterende werk, en % Voltooid in een hiërarchie. - status_percent_complete_text: |- - In de statusgebaseerde voortgang berekeningsmodus wordt het % Voltooid van een werkpakket automatisch op deze waarde ingesteld wanneer deze status geselecteerd is. - Genegeerd in de werkgebaseerde modus. + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work + package is automatically set to this value when this status is selected. + Ignored in work-based mode. status_readonly_html: | Check this option to mark work packages with this status as read-only. No attributes can be changed with the exception of the status. @@ -1361,7 +1493,7 @@ nl: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "of log in met een bestaand account" signup_with_auth_provider: "of meld je aan via" - auth_source_login: Gelieve in te loggen als %{login} om uw account te activeren. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Gelieve in te loggen om uw account te activeren. actionview_instancetag_blank_option: "Gelieve te selecteren" activemodel: @@ -1632,6 +1764,11 @@ nl: consented_at: "Ingestemd op" group: identity_url: "Identiteit URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1640,8 +1777,6 @@ nl: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Toegankelijkheidsmodus" auto_hide_popups: "Automatically hide success banners" @@ -1662,6 +1797,28 @@ nl: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Naam of e-mailadres" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Einddatum" sharing: "Delen" @@ -1716,6 +1873,8 @@ nl: before: "moet voor %{date} zijn." before_or_equal_to: "moet voor of gelijk zijn aan %{date}." blank: "mag niet leeg zijn." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "moet de eigenschap '%{property}' ingesteld hebben." cannot_delete_mapping: "is vereist. Kan niet worden verwijderd." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1752,8 +1911,9 @@ nl: less_than_or_equal_to: "moet kleiner zijn dan of gelijk aan %{count}." not_available: "is niet beschikbaar vanwege een systeemconfiguratie." not_deletable: "kan niet worden verwijderd." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is niet de huidige gebruiker." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "niet gevonden." not_a_date: "is geen geldige datum." not_a_datetime: "is geen geldige datum tijd." @@ -1784,6 +1944,10 @@ nl: bevat geen "Secure Context". Gebruik HTTPS of een loopbackadres, zoals localhost. wrong_length: "is de verkeerde lengte (dient %{count} karakters te zijn)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1894,6 +2058,9 @@ nl: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "nog steeds in gebruik door werkpakketten: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "De module '%{dependency}' moet ook ingeschakeld zijn, omdat de module '%{module}' ervan afhankelijk is." format: "%{message}" @@ -2099,6 +2266,10 @@ nl: description: "'Wachtwoordbevestiging' moet hetzelfde zijn als de invoer bij het 'Nieuw wachtwoord'-veld." status: invalid_on_create: "is niet een geldige status voor nieuwe gebruikers." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Kies ten minste één gebruiker of groep." role_blank: "moet worden toegewezen." @@ -2365,8 +2536,8 @@ nl: Back-ups inschakelen zal elke gebruiker met de vereiste machtigingen en deze back-up token toestaan om een back-up te downloaden met alle gegevens van deze OpenProject installatie. Dit omvat de gegevens van alle andere gebruikers. info: > U moet een back-up token genereren om een back-up te kunnen maken. Elke keer dat je een back-up wilt aanvragen, moet je deze back-up token opgeven. U kunt het back-up token verwijderen om back-ups voor deze gebruiker uit te schakelen. - verification: > - Voer %{word} in om te bevestigen dat u de back-up token %{action} wilt gebruiken. + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: aanmaken warning: > @@ -2805,7 +2976,7 @@ nl: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2822,10 +2993,8 @@ nl: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2913,8 +3082,8 @@ nl: work_package_edit: "Werkpakket bewerkt" work_package_note: "Werkpakket notitie toegevoegd" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Exporteren" @@ -3165,6 +3334,7 @@ nl: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3172,9 +3342,9 @@ nl: links: configuration_guide: "Configuratiegids" get_in_touch: "Heb je vragen? Neem contact met ons op." - instructions_after_registration: "U kan inloggen zodra uw account geactiveerd is door te klikken op %{signin}." - instructions_after_logout: "U kan terug inloggen door op %{signin} te klikken." - instructions_after_error: "U kan opnieuw proberen inloggen door op %{signin} te klikken. Als de fout aanhoudt, vraag dan uw admin om hulp." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3366,6 +3536,8 @@ nl: label_calendar_show: "Agenda weergeven" label_category: "Categorie" label_completed: Voltooid + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Gebruikers toestemming" label_wiki_menu_item: Wiki menu-item label_select_main_menu_item: Selecteer nieuwe hoofdmenu-item @@ -3532,6 +3704,7 @@ nl: label_subject_or_id: "Onderwerp of ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Identifier" + label_project_identifier: "Project identifier" label_in: "in" label_in_less_than: "in minder dan" label_in_more_than: "in meer dan" @@ -3665,11 +3838,13 @@ nl: label_news_view_all: "Bekijk al het nieuws" label_next: "Volgende" label_next_week: "Volgende week" + label_next_year: "Next year" label_no_change_option: "(Niet wijzigen)" label_no_data: "Geen gegevens om weer te geven" label_no_due_date: "geen einddatum" label_no_start_date: "geen startdatum" label_no_parent_page: "Geen bovenliggende pagina" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Meldingen" label_nothing_display: "Niets om weer te geven" label_nobody: "niemand" @@ -3698,6 +3873,8 @@ nl: label_overall_activity: "Totale activiteit" label_overview: "Overzicht" label_page_title: "Pagina titel" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "onderdeel van" label_password_lost: "Wachtwoord vergeten?" label_password_rule_lowercase: "Kleine letters" @@ -3724,6 +3901,7 @@ nl: label_preview_not_available: "Voorbeeld niet beschikbaar" label_previous: "Vorige" label_previous_week: "Vorige week" + label_previous_year: "Previous year" label_principal_invite_via_email: " of nieuwe gebruikers uitnodigen via e-mail" label_principal_search: "Bestaande gebruikers of groepen toevoegen" label_privacy_policy: "Gegevensprivacy en veiligheidsbeleid" @@ -3835,6 +4013,7 @@ nl: label_start_to_start: "begin tot begin" label_statistics: "Statistieken" label_status: "Status" + label_status_plural: "Statuses" label_storage_free_space: "Resterende schijfruimte" label_storage_used_space: "Gebruikte schijfruimte" label_storage_group: "Opslag filesystem %{identifier}" @@ -3863,6 +4042,7 @@ nl: label_title: "Titel" label_projects_menu: "Projecten" label_today: "vandaag" + label_today_capitalized: "Vandaag" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3883,7 +4063,7 @@ nl: label_user: "Gebruiker" label_user_and_permission: "Gebruikers en rechten" label_user_named: "Gebruiker %{name}" - label_user_activity: "%{value} activiteit" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anoniem" label_user_menu: "User menu" label_user_new: "Nieuwe gebruiker" @@ -3970,6 +4150,15 @@ nl: one: "1 bestand" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "gisteren" label_zen_mode: "Zen mode" label_role_type: "Type" @@ -3978,6 +4167,22 @@ nl: label_not_changeable: "(niet wijzigbaar)" label_global: "Globaal" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Fout bij het uitvoeren van de macro %{macro_name}" macro_unavailable: "Macro %{macro_name} kan niet worden weergegeven." macros: @@ -4012,7 +4217,7 @@ nl: center: "Naar meldingscentrum" see_in_center: "Bekijk commentaar in notificatie center" settings: "E-mailinstellingen wijzigen" - salutation: "Hallo %{user}" + salutation: "Hello %{user}," salutation_full_name: "Volledige naam" work_packages: created_at: "Aangemaakt op %{timestamp} door %{user} " @@ -4042,7 +4247,7 @@ nl: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4141,8 +4346,9 @@ nl: roles: "U heeft nu de volgende rollen:" mail_user_activation_limit_reached: subject: Activering gebruikerslimiet bereikt - message: | - Een nieuwe gebruiker (%{email}) heeft geprobeerd om een account in een OpenProject omgeving dat u beheerd (%{host}) te maken. De gebruiker kan het account niet activeren omdat het maximum aantal gebruikers is bereikt. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "Als u wilt dat de gebruiker ja inloggen kunt in u: " a: "Upgrade uw abbonement ([here](upgrade_url))" #here turned into a link @@ -4326,6 +4532,12 @@ nl: permission_manage_versions: "Versies beheren" permission_manage_wiki: "Wiki beheren" permission_manage_wiki_menu: "Wiki menu beheren" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Werkpakketten verplaatsen" permission_protect_wiki_pages: "Wiki-pagina's beveiligen" permission_rename_wiki_pages: "Wiki-pagina's wijzigen" @@ -4471,10 +4683,10 @@ nl: info: "Het verwijderen van de opslagplaats is een onomkeerbare actie." info_not_managed: "Opmerking: Dit zal niet de inhoud verwijderen van deze opslagplaats, aangezien het niet wordt beheerd door OpenProject." managed_path_note: "De volgende doelmap wordt gewist: %{path}" - repository_verification: "Voer het project identificatienummer %{identifier} in om de verwijdering van de opslagplaats te verifiëren." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Wil je echt de %{repository_type} van het project %{project_name} verwijderen?" - subtitle_not_managed: "Wilt u echt de gekoppelde %{repository_type} %{url} van het project %{project_name} verwijderen?" - title: "Verwijder de %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "De gekoppelde %{repository_type} verwijderen?" errors: build_failed: "Niet mogelijk om de opslagplaats met de geselecteerde configuratie te creëren. %{reason}" @@ -4524,7 +4736,7 @@ nl: storage: not_available: "Schijf opslag consumptie is niet beschikbaar voor deze repository." update_timeout: "Houd de laatste vereiste vrije schijfruimte voor een repository voor N minuten. Als het tellen van de vereiste schijfruimte van een repository kostbaar is, verhoog dit getal om invloed op de prestaties verminderen." - oauth_application_details: "De klantgeheim waarde zal niet meer toegankelijk zijn nadat u dit venster sluit. Kopieer deze waarden in de Nextcloud OpenProject integratie-instellingen:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Ga naar instellingen pagina" setup_documentation_details: "Als u hulp nodig heeft bij het configureren van een nieuw bestand controleer dan de documentatie: " setup_documentation_details_link_text: "File storages setup" @@ -4569,15 +4781,15 @@ nl: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Inschakelen CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) toegestane oorsprong" - setting_apiv3_cors_origins_text_html: > - Als CORS is ingeschakeld, zijn dit de oorsprong die toegang heeft tot OpenProject API.
Bekijk de Documentatie op de Oorsprongshoofd over hoe u de verwachte waarden kunt opgeven. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Schrijftoegang tot alleen-lezen attributen" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximale API pagina grootte" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4674,7 +4886,7 @@ nl: setting_work_package_properties: "Werkpakketeigenschappen" setting_work_package_startdate_is_adddate: "Huidige datum als begindatum voor nieuwe werkpakketten gebruiken" setting_work_packages_projects_export_limit: "Werkpakketten / Projecten exportlimiet" - setting_journal_aggregation_time_minutes: "Gebruikersacties geaggregeerd binnen" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Gebruikerslogin, naam en e-mailadres voor alle aanvragen vastleggen" setting_login_required: "Verificatie vereist" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4755,6 +4967,12 @@ nl: setting_welcome_text: "Welkom blok tekst" setting_welcome_title: "Welkom blok titel" setting_welcome_on_homescreen: "Toon het Welkom blok op thuisscherm" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Standaardmodus markeren" setting_work_package_list_default_highlighted_attributes: "Inline gemarkeerd standaardkenmerken" setting_working_days: "Werkdagen" @@ -4921,10 +5139,12 @@ nl: section_work_week: "Werkweek" section_holidays_and_closures: "Feestdagen en sluitingen" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Onopgemaakte tekst" @@ -5046,6 +5266,10 @@ nl: text_plugin_assets_writable: "Plugin directory schrijfbaar" text_powered_by: "Powered by %{link}" text_project_identifier_info: "Alleen kleine letters (a-z), cijfers, streepjes en underscores (_) zijn toegestaan, moet beginnen met een kleine letter." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Opnieuw toewijzen aan werkpakket:" text_regexp_multiline: 'De regex wordt toegepast in een modus met meerdere regels. bijvoorbeeld, ^---\s+' text_repository_usernames_mapping: "Selecteer of update de gebruiker van de OpenProject gelinkt aan elke gebruikersnaam gevonden in het repository log. Gebruikers met de zelfde OpenProject en repository gebruikersnaam of e-mail worden automatisch gelinkt." @@ -5153,17 +5377,17 @@ nl: version_status_locked: "geblokkeerd" version_status_open: "Open" note: Opmerking - note_password_login_disabled: "Wachtwoord is uitgeschakeld door %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Waarschuwing warning_attachments_not_saved: "%{count} bestanden kunnen niet worden opgeslagen." - warning_imminent_user_limit: > - U heeft meer gebruikers uitgenodigd dan wordt ondersteund in uw huidig abbonement. Uitgenodigde gebruikers kunnen mogelijk niet kunnen inloggen in uw OpenProject omgeving. Voer een verhoging van het abbonement uit of blokkeer bestaande gebruikers zodat nieuwe gebruikers kunnen inloggen. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | De activatie e-mail is verlopen. Wij sturen u een nieuwe activatie e-mail naar %{email} gestuurd. Klik op de link in de activatie e-mail om uw account te activeren. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5223,7 +5447,7 @@ nl: reminders: label_remind_at: "Datum" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5254,8 +5478,8 @@ nl: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "De gebruiker %{user} is vergrendeld en kan niet worden gedeeld met" user_details: @@ -5375,6 +5599,7 @@ nl: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Onbekend - De voorouder is onzichtbaar door ontbrekende rechten. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-autorisatie" diff --git a/config/locales/crowdin/no.yml b/config/locales/crowdin/no.yml index b05690137f1..948c85fe600 100644 --- a/config/locales/crowdin/no.yml +++ b/config/locales/crowdin/no.yml @@ -108,7 +108,7 @@ jemalloc_allocator: Jemalloc minne allokator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -607,6 +667,14 @@ danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -767,6 +835,11 @@ description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Endre identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -999,9 +1072,9 @@ groups: member_in_these_groups: "Denne brukeren er for øyeblikket medlem av følgende grupper:" no_results_title_text: Denne brukeren er for øyeblikket ikke medlem i noen gruppe. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Denne brukeren er for øyeblikket ikke medlem av et prosjekt. open_profile: "Open profile" @@ -1056,6 +1129,64 @@ user: "Brukeren kan nå logge inn for å få tilgang til %{project}. Selv så kan du allerede planlegge med den brukeren og tilknytte arbeidspakker for forekomst." placeholder_user: "Plassholderen kan nå brukes i %{project}. Samtidig kan du allerede planlegge med den brukeren og tilordne arbeidspakker i forekomsten." group: "Gruppen er nå en del av %{project}. Dette betyr at du allerede kan planlegge med den gruppen og tildele arbeidspakker for forekomst." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Tekst" placeholder_users: @@ -1063,11 +1194,11 @@ Du har ikke tilgang til å slette plassholderbrukeren. Du har ikke rettigheter til å administrere medlemmer i alle prosjekter som plassholderen er medlem av. delete_tooltip: "Slett plassholderbruker" deletion_info: - heading: "Slett plassholderbruker %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > Alle forekomster av plassholderbrukeren (f.eks. som utførende, ansvarlig eller andre brukerverdier) blir tilordnet på nytt til en konto kalt "Slettet bruker". Siden dataene for hver slettede konto blir tilordnet denne kontoen vil det ikke være mulig å skille dataene brukeren har opprettet fra data for en annen slettet konto. irreversible: "Du kan ikke angre denne handlingen" - confirmation: "Skriv inn plassholderbrukernavnet %{name} for å bekrefte slettingen." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1098,10 +1229,10 @@ New work packages are by default set to this type. They cannot be read-only. status_excluded_from_totals_text: |- Velg denne innstillingen for å utelukke arbeidspakker med denne statusen fra oppsummeringer for Arbeid, Gjenstående arbeid og % Ferdig i et hierarki. - status_percent_complete_text: |- - I statusbasert fremdriftsberegningsmodus, % ferdig arbeid - -pakken blir automatisk satt til denne verdien når denne statusen er valgt. - Ignorert i arbeidsbasert modus. + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work + package is automatically set to this value when this status is selected. + Ignored in work-based mode. status_readonly_html: | Check this option to mark work packages with this status as read-only. No attributes can be changed with the exception of the status. @@ -1364,7 +1495,7 @@ Brukerregistrering er begrenset for Single sign-on leverandøren '%{name}'. Be en administrator om å aktivere kontoen for deg eller endre grense for selvregistrering for denne leverandøren. login_with_auth_provider: "eller logg på med din eksisterende konto" signup_with_auth_provider: "eller registrer deg ved å bruke" - auth_source_login: Logg inn som %{login} for å aktivere kontoen din. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Vennligst logg inn for å aktivere kontoen din. actionview_instancetag_blank_option: "Vennligst velg" activemodel: @@ -1635,6 +1766,11 @@ consented_at: "Godkjent" group: identity_url: "Identitet URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1643,8 +1779,6 @@ button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Tilgjengelighetsmodus" auto_hide_popups: "Automatically hide success banners" @@ -1665,6 +1799,28 @@ users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Navn eller e-postadresse" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Sluttdato" sharing: "Deling" @@ -1719,6 +1875,8 @@ before: "må være før %{date}." before_or_equal_to: "må være før eller lik %{date}." blank: "kan ikke være blank." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "må ha egenskapen '%{property}' aktivert." cannot_delete_mapping: "er påkrevd. Kan ikke slettes." is_for_all_cannot_modify: "er for alle prosjekter og kan derfor ikke modifiseres." @@ -1755,8 +1913,9 @@ less_than_or_equal_to: "må være mindre enn eller lik %{count}." not_available: "er ikke tilgjengelig på grunn av en systemkonfigurasjon." not_deletable: "kan ikke slettes." + not_editable: "cannot be edited because it is already in effect." not_current_user: "er ikke gjeldende bruker." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "er ikke en gyldig dato." not_a_datetime: "er ikke et gyldig tidspunkt for datoen." @@ -1787,6 +1946,10 @@ Ikke oppgi en "Secure Context". Enten bruk HTTPS eller en loopback address, som localhost. wrong_length: "har feil lengde (skal være %{count} tegn)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1897,6 +2060,9 @@ project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "fortsatt i bruk av arbeidspakker: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "Modulen '%{dependency}' må være aktivert i tillegg siden modulen '%{module}' avhenger av den." format: "%{message}" @@ -2102,6 +2268,10 @@ description: "Bekreftelse av passord må samsvare med inndata i det nye passordet feltet." status: invalid_on_create: "er ikke gyldig status for nye brukere." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Velg minst én bruker eller gruppe." role_blank: "må tilordnes." @@ -2368,8 +2538,8 @@ Aktivering av sikkerhetskopier vil tillate brukeren med de nødvendige tillatelser, og denne sikkerhetskopinøkkelen å laste ned en sikkerhetskopi som inneholder alle data fra denne OpenProject installasjonen. Dette inkluderer data for alle andre brukere. info: > Du må generere en sikkerhetskopinøkkel for å kunne opprette en sikkerhetskopi. Hver gang du vil be om en sikkerhetskopi må du oppgi denne nøkkelen. Du kan slette sikkerhetskopinøkkelen for å deaktivere sikkerhetskopier for denne brukeren. - verification: > - Angi %{word} for å bekrefte at du vil %{action} sikkerhetskopinøkkelen. + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: tilbakestill verification_word_create: opprett warning: > @@ -2808,7 +2978,7 @@ title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2825,10 +2995,8 @@ confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2916,8 +3084,8 @@ work_package_edit: "Arbeidspakke redigert" work_package_note: "Notat lagt til arbeidspakke" title: - project: "Prosjekt: %{name}" - subproject: "Underprosjekt: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Eksportèr" @@ -3168,6 +3336,7 @@ Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Arbeids- og fremdriftssummer fjernet automatisk for ikke-overordnede arbeidspakker med -versjon. Dette er en vedlikeholdsoppgave og kan trygt ignoreres. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Arbeidspakker uten arbeid blir ignorert. total_percent_complete_mode_changed_to_simple_average: >- @@ -3175,9 +3344,9 @@ links: configuration_guide: "Konfigurasjonsveiviser" get_in_touch: "Har du spørsmål? Ta kontakt med oss." - instructions_after_registration: "Du kan logge inn ved å trykke på %{signin} så fort kontoen din er aktivert." - instructions_after_logout: "Du kan logge inn på nytt ved å trykke %{signin}." - instructions_after_error: "Du kan forsøke å logge inn på nytt ved å trykke %{signin}. Dersom feilen vedvarer må du kontakte din systemadministrator for hjelp." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3369,6 +3538,8 @@ label_calendar_show: "Vis kalender" label_category: "Kategori" label_completed: Fullført + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Samtykke fra bruker" label_wiki_menu_item: Wiki menyelement label_select_main_menu_item: Velg nytt hovedmenyelement @@ -3535,6 +3706,7 @@ label_subject_or_id: "Emne eller ID" label_calendar_subscriptions: "Abonnementer til kalendere" label_identifier: "Identifikator" + label_project_identifier: "Project identifier" label_in: "i" label_in_less_than: "i mindre enn" label_in_more_than: "i mer enn" @@ -3668,11 +3840,13 @@ label_news_view_all: "Vis alle nyheter" label_next: "Neste" label_next_week: "Neste uke" + label_next_year: "Next year" label_no_change_option: "(Ingen endring)" label_no_data: "Ingen data å vise" label_no_due_date: "ingen ferdigmeldingsdato" label_no_start_date: "ingen startdato" label_no_parent_page: "Ingen overordnet side" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Varsler" label_nothing_display: "Ingenting å vise" label_nobody: "ingen" @@ -3701,6 +3875,8 @@ label_overall_activity: "Samlet aktivitet" label_overview: "Oversikt" label_page_title: "Sidetittel" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "del av" label_password_lost: "Glemt passord?" label_password_rule_lowercase: "Små bokstaver" @@ -3727,6 +3903,7 @@ label_preview_not_available: "Forhåndsvisning ikke tilgjengelig" label_previous: "Forrige" label_previous_week: "Forrige uke" + label_previous_year: "Previous year" label_principal_invite_via_email: " eller inviter nye brukere via e-post" label_principal_search: "Legg til eksisterende brukere eller grupper" label_privacy_policy: "Data personvern og sikkerhetspolicy" @@ -3838,6 +4015,7 @@ label_start_to_start: "start til start" label_statistics: "Statistikk" label_status: "Status" + label_status_plural: "Statuses" label_storage_free_space: "Gjenværende diskplass" label_storage_used_space: "Brukt diskplass" label_storage_group: "Lagringsfilsystem %{identifier}" @@ -3866,6 +4044,7 @@ label_title: "Tittel" label_projects_menu: "Prosjekter" label_today: "i dag" + label_today_capitalized: "I dag" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3886,7 +4065,7 @@ label_user: "Bruker" label_user_and_permission: "Brukere og tillatelser" label_user_named: "Bruker %{name}" - label_user_activity: "%{value}s aktivitet" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonym" label_user_menu: "User menu" label_user_new: "Ny bruker" @@ -3973,6 +4152,15 @@ one: "1 fil" other: "%{count} filer" zero: "ingen filer" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "i går" label_zen_mode: "Zen-modus" label_role_type: "Type" @@ -3981,6 +4169,22 @@ label_not_changeable: "(ikke mulig å endre)" label_global: "Globalt" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Feil ved kjøring av makroen %{macro_name}" macro_unavailable: "Makroen %{macro_name} kan ikke vises." macros: @@ -4015,7 +4219,7 @@ center: "Til varslingssenter" see_in_center: "Se kommentar i varslingssenter" settings: "Endre e-postinnstillinger" - salutation: "Hei %{user}" + salutation: "Hello %{user}," salutation_full_name: "Fullt navn" work_packages: created_at: "Opprettet %{timestamp} av %{user} " @@ -4045,7 +4249,7 @@ note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "Du kan %{allowed_actions} denne arbeidspakken. Dette kan endre avhengig av din prosjektrolle og tillatelser." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "For å få tilgang til denne arbeidspakken, må du opprette og aktivere en konto for %{instance}." open_work_package: "Åpne arbeidspakke" subject: "Arbeidspakke #%{id} ble delt med deg" @@ -4144,9 +4348,9 @@ roles: "Du har nå følgende roller:" mail_user_activation_limit_reached: subject: Grensen for brukeraktivering er nådd - message: | - En ny bruker (%{email}) prøvde å opprette en konto på et OpenProject miljø som du administrerer (%{host}). - Brukeren kan ikke aktivere sin konto siden brukergrensen er nådd. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "For at brukeren skal kunne logge på kan du enten: " a: "Oppgrader din betalingsplan ([here](upgrade_url))" #here turned into a link @@ -4330,6 +4534,12 @@ permission_manage_versions: "Administrere versjoner" permission_manage_wiki: "Administrere wiki" permission_manage_wiki_menu: "Administrere wiki-meny" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Flytt arbeidspakker" permission_protect_wiki_pages: "Beskytt wiki-sider" permission_rename_wiki_pages: "Gi nytt navn til wiki-sider" @@ -4475,10 +4685,10 @@ info: "Sletting av kodelageret kan ikke angres." info_not_managed: "Merk: Dette vil ikke slette innholdet i dette kodelageret, da det ikke administreres av OpenProject." managed_path_note: "Den følgende mappen vil bli slettet: %{path}" - repository_verification: "Skriv inn prosjektets identifikator %{identifier} for å bekrefte sletting av depotet." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Vil du virkelig slette %{repository_type} i prosjektet %{project_name}-?" - subtitle_not_managed: "Vil du virkelig fjerne den koblede %{repository_type} %{url} fra prosjektet %{project_name}?" - title: "Slett %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Fjerne den koblede %{repository_type}?" errors: build_failed: "Kan ikke opprette kodelager med den valgte konfigurasjonen. %{reason}" @@ -4528,7 +4738,7 @@ storage: not_available: "Ledig lagring er ikke tilgjengelig for dette kodelageret." update_timeout: "Behold den siste nødvendige lagringsplassinformasjonen i et sted i N minutter.\nNår det kreves diskplass i et lagringssted, kan det være kostbart å øke denne verdien for å redusere ytelsesbelastningen." - oauth_application_details: "Den hemmelige verdien for klienten blir ikke tilgjengelig igjen etter at du har lukket dette vinduet. Kopier disse verdiene inn i Nextcloud OpenProject integrasjonsinnstillinger:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Gå til innstillingssiden" setup_documentation_details: "Hvis du trenger hjelp til å konfigurere en ny fillagring, bør du kontrollere dokumentasjonen: " setup_documentation_details_link_text: "File storages setup" @@ -4573,15 +4783,15 @@ setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Aktiver CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) tillatte opprinnelser" - setting_apiv3_cors_origins_text_html: > - Hvis CORS er aktivert, er dette opprinnelsen som har tilgang til OpenProject API.
Kontroller Dokumentasjonen på Origin header på hvordan angi de forventede verdiene. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Skrivetilgang til skrivebeskyttede egenskaper" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maksimal størrelse på API side" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4678,7 +4888,7 @@ setting_work_package_properties: "Egenskaper for arbeidspakke" setting_work_package_startdate_is_adddate: "Bruk gjeldende dato som startdato for nye arbeidspakker" setting_work_packages_projects_export_limit: "Eksportgrense for arbeidspakker/prosjekter" - setting_journal_aggregation_time_minutes: "Brukers handlinger aggregert innenfor" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Logg brukernavn, navn og e-postadresse for alle forespørsler" setting_login_required: "Autentisering er påkrevd" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4759,6 +4969,12 @@ setting_welcome_text: "Velkommen blokktekst" setting_welcome_title: "Velkomst blokk tittel" setting_welcome_on_homescreen: "Vis velkomstblokk på hjemskjermen" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Standard utheving modus" setting_work_package_list_default_highlighted_attributes: "Standard inline uthevede egenskaper" setting_working_days: "Arbeidsdager" @@ -4925,10 +5141,12 @@ section_work_week: "Arbeidsuke" section_holidays_and_closures: "Ferier og lukking" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Rabatt" plain: "Ren tekst" @@ -5050,6 +5268,10 @@ text_plugin_assets_writable: "Mappen for programtillegg er skrivbar" text_powered_by: "Driftes med %{link}" text_project_identifier_info: "Kun små bokstaver (a-z), tall, bindestrek og understrek er tillatt. Første tegn må være liten bokstav." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Tilordne til arbeidspakke:" text_regexp_multiline: 'Denne regexen brukes i flerlinjemodus. f.eks ^---\s+' text_repository_usernames_mapping: "Velg eller oppdater OpenProject-brukeren knyttet til hvert enkelt brukernavn i pakkebrønn-loggen.\nBrukere med samme OpenProject- og pakkebrønn-brukernavn eller e-post tilknyttes automatisk." @@ -5157,18 +5379,18 @@ version_status_locked: "låst" version_status_open: "åpne" note: Notat - note_password_login_disabled: "Passordinnlogging er deaktivert av %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Advarsel warning_attachments_not_saved: "%{count} fil(er) kunne ikke lagres." - warning_imminent_user_limit: > - Du har invitert flere brukere en planen din tillater. Inviterte bruker vil kanksje ikke være i stand til å bli med i ditt OpenProject miljø. Vennligst oppgrader din plan eller blokker eksisterende brukere for å tillate inviterte og registrerte brukere å bli med. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | Aktiverings-eposten har utløpt. Vi sendte deg en ny til %{email}. Venligst bruk linken i den til å aktivere kontoen din. warning_user_limit_reached: > Å legg til ekstra brukere vil overskride gjeldende grense. Vennligst kontakt en administrator for å øke brukergrensen for å sikre at eksterne brukere har tilgang til denne forekomsten. - warning_user_limit_reached_admin: > - Å legg til ekstra brukere vil overskride gjeldende grense. Vennligst oppgrader planen din for å sikre at eksterne brukere har tilgang til denne forekomsten. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > Du har nådd din brukergrense (%{current}/%{max} aktive brukere). Vennligst kontakt sales@openproject.com for å oppgradere din Enterprise edition plan og legg til flere brukere. warning_protocol_mismatch_html: > @@ -5228,7 +5450,7 @@ reminders: label_remind_at: "Dato" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5259,8 +5481,8 @@ text_user_limit_reached_admins: 'Å legge til ekstra brukere overskrider gjeldende grense. oppgradere din plan for å kunne legge til flere brukere.' warning_user_limit_reached: > Å legge til ekstra brukere vil overskride gjeldende grense. Kontakt en administrator for å øke brukergrensen for å sikre at eksterne brukere har tilgang til %{entity}. - warning_user_limit_reached_admin: > - Å legge til ekstra brukere vil overskride gjeldende grense. Vennligst oppgrader ditt abonnement for å sikre at eksterne brukere har tilgang til %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Velg brukere du skal dele denne %{entity} med" warning_locked_user: "Brukeren %{user} er låst og kan ikke bli delt med" user_details: @@ -5380,6 +5602,7 @@ project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Ukjent - den valgte overordnet er usynlig på grunn av manglende tillatelser. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-autorisasjon" diff --git a/config/locales/crowdin/pl.yml b/config/locales/crowdin/pl.yml index 04aaf6e47be..832577eb3ab 100644 --- a/config/locales/crowdin/pl.yml +++ b/config/locales/crowdin/pl.yml @@ -108,7 +108,7 @@ pl: jemalloc_allocator: Alokator pamięci Jemalloc journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -391,11 +391,75 @@ pl: project_creation: "Utworzenie projektu" notification_text_default: >

Witaj,

Utworzono nowy projekt: projectValue:name

Dziękujemy

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + few: "... %{count} more projects" + many: "... %{count} more projects" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Przejścia domyślne" user_author: "Użytkownik jest autorem" user_assignee: "Użytkownik jest przypisaną osobą" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + few: "Remove %{count} statuses?" + many: "Remove %{count} statuses?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Logowanie i rejestracja" announcements: @@ -616,6 +680,14 @@ pl: danger_dialog: confirmation_live_message_checked: "Przycisk kontynuowania jest już aktywny." confirmation_live_message_unchecked: "Przycisk kontynuowania jest teraz nieaktywny. Aby kontynuować, zaznacz pole wyboru." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "Adres URL, pod którym będzie dostępny serwer MCP OpenProject. Wymagany do skonfigurowania klientów MCP." @@ -778,6 +850,11 @@ pl: description: > Projekt będzie widoczny tylko dla członków projektu w zależności od ich roli i powiązanych uprawnień. Nie ma to wpływu na podprojekty, które mają własne ustawienia. change_identifier: Identyfikator zmiany + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Wybierz szablony, które mają być używane podczas tworzenia nowych podpozycji. @@ -1022,9 +1099,9 @@ pl: groups: member_in_these_groups: "Ten użytkownik jest obecnie członkiem następujących grup:" no_results_title_text: Ten użytkownik nie jest obecnie członkiem żadnej grupy. - summary_with_more: Członek %{names} i %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} więcej" - summary: Członek %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Użytkownik jeszcze nie jest członkiem projektu. open_profile: "Otwórz profil" @@ -1079,6 +1156,66 @@ pl: user: "Użytkownik może się teraz zalogować, aby uzyskać dostęp do %{project}. Tymczasem możesz już planować z tym użytkownikiem i na przykład przypisać pakiety robocze." placeholder_user: "Symbolu zastępczego można teraz użyć w %{project}. Tymczasem możesz już planować z tym użytkownikiem i na przykład przypisać pakiety robocze." group: "Grupa jest teraz częścią %{project}. Tymczasem możesz już planować z tą grupą i na przykład przypisać pakiety robocze." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + few: "%{count} working days" + many: "%{count} working days" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Tekst" placeholder_users: @@ -1086,11 +1223,11 @@ pl: Nie masz uprawnień do usunięcia użytkownika zastępczego. Nie masz uprawnień do zarządzania członkami niektórych projektów, których użytkownik zastępczy jest członkiem. delete_tooltip: "Usuń użytkownika zastępczego" deletion_info: - heading: "Usuń użytkownika zastępczego %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > Wszystkie wystąpienia użytkownika zastępczego (np. jako osoby przypisanej, odpowiedzialnej lub inne wartości użytkownika) zostaną przypisane do konta o nazwie „Usunięty użytkownik”. Jako że do tego konta przypisywane są dane każdego usuniętego konta, nie można odróżnić danych utworzonych przez użytkownika od danych innego usuniętego konta. irreversible: "To działanie jest nieodwracalne." - confirmation: "Wprowadź nazwę użytkownika zastępczego %{name}, aby potwierdzić usunięcie." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1124,10 +1261,10 @@ pl: status_excluded_from_totals_text: |- Zaznacz tę opcję, aby wykluczyć pakiety robocze o tym statusie z sum atrybutów Praca, Pozostała praca i % ukończenia w hierarchii. - status_percent_complete_text: |- - W trybie obliczania postępu na podstawie statusu % ukończenia pakietu roboczego - jest automatycznie ustawiany na tę wartość po wybraniu tego statusu. - Ignorowane w trybie opartym na pracy. + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work + package is automatically set to this value when this status is selected. + Ignored in work-based mode. status_readonly_html: | Zaznacz tę opcję, aby oznaczyć pakiety robocze o tym stanie jako tylko do odczytu. Nie można zmienić żadnych atrybutów z wyjątkiem stanu. @@ -1391,7 +1528,7 @@ pl: Rejestracja użytkowników jest ograniczona w przypadku dostawcy pojedynczego logowania „%{name}”. Poproś administratora o aktywację konta dla Ciebie lub zmianę limitu samorejestracji dla tego dostawcy. login_with_auth_provider: "lub zaloguj się za pomocą istniejącego konta" signup_with_auth_provider: "lub zapisz się używając" - auth_source_login: Zaloguj się jako %{login} aby aktywować konto. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Zaloguj się, aby aktywować konto. actionview_instancetag_blank_option: "Proszę wybrać" activemodel: @@ -1662,6 +1799,11 @@ pl: consented_at: "Zgodę na" group: identity_url: "Adres URL tożsamości" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Wygląd i działanie" header_alerts: "Alerty" @@ -1670,8 +1812,6 @@ pl: button_update_user_information: "Zaktualizuj profil" comments_sorting: "Wyświetl działania pakietu roboczego posortowane według" disable_keyboard_shortcuts: "Wyłącz skróty klawiaturowe" - disable_keyboard_shortcuts_caption_html: |- - Jeśli korzystasz z czytnika ekranu lub chcesz uniknąć przypadkowego uruchomienia działania za pomocą skrótu, możesz wyłączyć domyślne skróty klawiaturowe. dismissed_enterprise_banners: "Ukryte banery przedsiębiorstwa" impaired: "Ułatwienia dostępu" auto_hide_popups: "Automatycznie ukrywaj banery sukcesu" @@ -1692,6 +1832,28 @@ pl: users/invitation/form_model: principal_type: "Typ zaproszenia" id_or_email: "Nazwa lub adres e-mail" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Data zakończenia" sharing: "Udostępnianie" @@ -1746,6 +1908,8 @@ pl: before: "musi być przed %{date}." before_or_equal_to: "musi być przed lub równe %{date}." blank: "nie może być puste." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "musi mieć ustawioną właściwość '%{property}'." cannot_delete_mapping: "jest wymagane. Nie można usunąć." is_for_all_cannot_modify: "dotyczy wszystkich projektów i dlatego nie można zmodyfikować." @@ -1782,8 +1946,9 @@ pl: less_than_or_equal_to: "musi być mniejsze niż lub równe %{count}." not_available: "jest niedostępne z powodu konfiguracji systemu." not_deletable: "— nie można usunąć." + not_editable: "cannot be edited because it is already in effect." not_current_user: "nie jest bieżącym użytkownikiem." - only_one_active_sprint_allowed: "dozwolony jest tylko jeden aktywny sprint na projekt." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "nie znaleziono." not_a_date: "nie jest poprawną datą." not_a_datetime: "nie jest poprawną datą i czasem." @@ -1814,6 +1979,10 @@ pl: nie zapewnia „bezpiecznego kontekstu”. Użyj protokołu HTTPS albo adresu pętli zwrotnej, takiej jak localhost. wrong_length: "ma nieprawidłową długość (powinno mieć %{count} znaków)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1926,6 +2095,9 @@ pl: project_initiation_request_disabled: "Żądanie zainicjowania projektu jest wyłączone. Musi być włączone, aby można było utworzyć pakiet roboczy artefaktu." types: in_use_by_work_packages: "nadal w użyciu przez Zestawy zadań: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "Moduł „%{dependency}” musi również zostać włączony, ponieważ zależny jest od niego moduł „%{module}”." format: "%{message}" @@ -2133,6 +2305,10 @@ pl: description: "\"Potwierdzenie hasła\" powinno być zgodne z wartością w polu 'Nowe hasło'." status: invalid_on_create: "nie jest prawidłowym statusem dla nowych użytkowników." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Wybierz co najmniej jeden użytkownik lub Grupa." role_blank: "musi być przypisany." @@ -2435,8 +2611,8 @@ pl: Włączenie kopii zapasowych pozwoli każdemu użytkownikowi mającemu wymagane uprawnienia i ten token kopii zapasowej pobrać kopię zapasową zawierającą wszystkie dane tej instalacji OpenProject. Obejmuje to dane wszystkich pozostałych użytkowników. info: > Aby móc utworzyć kopię zapasową, musisz wygenerować token kopii zapasowej. Za każdym razem, gdy chcesz zażądać kopii zapasowej, musisz podać ten token. Możesz usunąć token kopii zapasowej, aby wyłączyć kopie zapasowe tego użytkownika. - verification: > - Wprowadź %{word}, aby potwierdzić %{action} tokenu kopii zapasowej. + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: zresetowanie verification_word_create: utworzenie warning: > @@ -2917,7 +3093,7 @@ pl: few: "Pozostały %{count} dni próbnego tokena %{trial_plan}" many: "Pozostało %{count} dni próbnego tokena %{trial_plan}" other: "Pozostało %{count} dnia próbnego tokena %{trial_plan}" - description: "Masz dostęp do wszystkich funkcji %{trial_plan}." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "Zażądano tokena próbnego, ale nie jest on już dostępny. Spróbuj ponownie." wait_for_confirmation: "Wysłaliśmy Ci wiadomość e-mail z prośbą o potwierdzenie adresu w celu pobrania tokena próbnego." @@ -2934,10 +3110,8 @@ pl: confirmation_subline: > Sprawdź skrzynkę odbiorczą i wykonaj kroki, aby rozpocząć 14-dniowy darmowy okres próbny. domain_caption: Token będzie ważny dla aktualnie skonfigurowanej nazwy hosta. - receive_newsletter_html: > - Chcę otrzymywać newsletter OpenProject. - consent_html: > - Akceptuję warunki umowy i politykę prywatności. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Wyłączono." @@ -3025,8 +3199,8 @@ pl: work_package_edit: "Pakiet roboczy edytowany" work_package_note: "Notatka pakietu roboczego dodana" title: - project: "Projekt: %{name}" - subproject: "Podprojekt: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Eksport" @@ -3277,6 +3451,7 @@ pl: Tryb planowania automatycznie dostosowywany w razie aktualizacji wersji. totals_removed_from_childless_work_packages: >- Sumy pracy i postępu są automatycznie usuwane dla pakietów pracy innych niż nadrzędne wraz z aktualizacją wersji. Jest to zadanie konserwacyjne i można je bezpiecznie zignorować. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Podrzędne pakiety robocze bez parametru Praca są ignorowane. total_percent_complete_mode_changed_to_simple_average: >- @@ -3284,9 +3459,9 @@ pl: links: configuration_guide: "Przewodnik po konfiguracji" get_in_touch: "Masz pytania? Skontaktuj się z nami." - instructions_after_registration: "Możesz się zalogować w momencie gdy Twoje konto zostanie aktywowane poprzez kliknięcie %{signin}." - instructions_after_logout: "Możesz zalogować się ponownie klikając %{signin}." - instructions_after_error: "Można spróbować się zalogować ponownie klikając %{signin}. Jeśli ten błąd będzie się powtarzał, poproś swojego admina o pomoc." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Sztuczna inteligencja (AI)" @@ -3478,6 +3653,8 @@ pl: label_calendar_show: "Pokaż kalendarz" label_category: "Kategoria" label_completed: Ukończono + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Zgoda użytkownika" label_wiki_menu_item: Element menu Wiki label_select_main_menu_item: Wybierz nową pozycję menu głównego @@ -3644,6 +3821,7 @@ pl: label_subject_or_id: "Temat lub identyfikator" label_calendar_subscriptions: "Subskrypcje Kalendarza" label_identifier: "Identyfikator" + label_project_identifier: "Project identifier" label_in: "w" label_in_less_than: "w mniej niż" label_in_more_than: "w ponad" @@ -3777,11 +3955,13 @@ pl: label_news_view_all: "Zobacz wszystkie wiadomości" label_next: "Następny" label_next_week: "Następny tydzień" + label_next_year: "Next year" label_no_change_option: "(Bez zmian)" label_no_data: "Brak danych do pokazania" label_no_due_date: "brak daty zakończenia" label_no_start_date: "brak daty rozpoczęcia" label_no_parent_page: "Bez strony nadrzędnej" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Powiadomienia" label_nothing_display: "Brak danych do pokazania" label_nobody: "nikt" @@ -3810,6 +3990,8 @@ pl: label_overall_activity: "Ogólna aktywność" label_overview: "Przegląd" label_page_title: "Tytuł strony" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "część" label_password_lost: "Nie pamiętasz hasła?" label_password_rule_lowercase: "Małe litery" @@ -3836,6 +4018,7 @@ pl: label_preview_not_available: "Podgląd niedostępny" label_previous: "Poprzedni" label_previous_week: "Poprzedni tygodzień" + label_previous_year: "Previous year" label_principal_invite_via_email: " lub zaproś nowych użytkowników przez email" label_principal_search: "Dodaj istniejących użytkowników lub grupy" label_privacy_policy: "Polityka prywatności i bezpieczeństwa danych" @@ -3947,6 +4130,7 @@ pl: label_start_to_start: "rozpoczęcie-rozpoczęcie" label_statistics: "Statystyki" label_status: "Status" + label_status_plural: "Statuses" label_storage_free_space: "Pozostałe miejsca na dysku" label_storage_used_space: "Używana przestrzeń dyskowa" label_storage_group: "System plików %{identifier}" @@ -3975,6 +4159,7 @@ pl: label_title: "Tytuł" label_projects_menu: "Projekty" label_today: "dzisiaj" + label_today_capitalized: "Dzisiaj" label_token_version: "Wersja tokena" label_today_as_start_date: "Wybierz dzisiaj jako datę rozpoczęcia." label_today_as_due_date: "Wybierz dzisiaj jako datę zakończenia." @@ -3995,7 +4180,7 @@ pl: label_user: "Użytkownik" label_user_and_permission: "Użytkownicy i uprawnienia" label_user_named: "Użytkownik %{name}" - label_user_activity: "Aktywność użytkownika: %{value}" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonimowy" label_user_menu: "Menu użytkownika" label_user_new: "Nowy użytkownik" @@ -4082,6 +4267,21 @@ pl: one: "1 plik" other: "%{count} pliku" zero: "brak plików" + label_x_days: + one: "1 day" + few: "%{count} days" + many: "%{count} days" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + few: "%{count} working days" + many: "%{count} working days" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + few: "Time off: %{count} working days" + many: "Time off: %{count} working days" + other: "Time off: %{count} working days" label_yesterday: "wczoraj" label_zen_mode: "Tryb Zen" label_role_type: "Typ" @@ -4090,6 +4290,22 @@ pl: label_not_changeable: "(niezmienialne)" label_global: "Globalna" label_seeded_from_env_warning: Ten rekord został utworzony za pomocą ustawienia zmiennej środowiskowej. Nie można go edytować za pomocą interfejsu użytkownika. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Błąd podczas wykonywania makra %{macro_name}" macro_unavailable: "Makro %{macro_name} nie może zostać wyświetlone." macros: @@ -4124,7 +4340,7 @@ pl: center: "Do centrum powiadomień" see_in_center: "Zobacz komentarz w centrum powiadomień" settings: "Zmień ustawienia poczty elektronicznej" - salutation: "Witaj %{user}" + salutation: "Hello %{user}," salutation_full_name: "Imię i nazwisko" work_packages: created_at: "Utworzono %{timestamp}, autor %{user} " @@ -4156,7 +4372,7 @@ pl: note: "Uwaga: „%{note}”" sharing: work_packages: - allowed_actions: "Możesz %{allowed_actions} ten pakiet roboczy. Może się to zmienić w zależności od Twojej roli w projekcie i uprawnień." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "Aby uzyskać dostęp do tego pakietu roboczego, musisz utworzyć i aktywować konto w %{instance}. " open_work_package: "Otwórz pakiet roboczy" subject: "Udostępniono Ci pakiet roboczy nr %{id}" @@ -4255,8 +4471,9 @@ pl: roles: "Masz teraz następujące role:" mail_user_activation_limit_reached: subject: Osiągnięto limit aktywacji użytkownika - message: | - Nowy użytkownik (%{email}) próbował utworzyć konto w środowisku OpenProject na (%{host}). Użytkownik nie może aktywować swojego konta ponieważ został osiągnięty limit użytkowników. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "Aby zezwolić użytkownikowi na logowanie, możesz albo: " a: "Zaktualizuj swój plan płatności ([here] (upgrade_url))" #here turned into a link @@ -4442,6 +4659,12 @@ pl: permission_manage_versions: "Zarządzanie wersjami" permission_manage_wiki: "Zarządzanie wiki" permission_manage_wiki_menu: "Zarządzanie menu wiki" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Przenoszenie pakietów roboczych" permission_protect_wiki_pages: "Blokowanie stron wiki" permission_rename_wiki_pages: "Zmiana nazw strony wiki" @@ -4585,10 +4808,10 @@ pl: info: "Usuniecie repozytorium jest operacją nieodwracalną." info_not_managed: "Uwaga: To NIE usunie zawartości tego repozytorium, ponieważ nie jest zarządzany przez OpenProject." managed_path_note: "Następny katalog zostanie usunięty: %{path}" - repository_verification: "Wprowadź identyfikator %{identifier} projektu, aby potwierdzić usunięcie jego repozytorium." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Czy naprawdę chcesz usunąć %{repository_type} z projektu %{project_name}?" - subtitle_not_managed: "Czy naprawdę chcesz usunąć powiązane %{repository_type}%{url} z projektu %{project_name}?" - title: "Usuń %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Usunąć połączone %{repository_type}?" errors: build_failed: "Nie można utworzyć repozytorium w wybranej konfiguracji. %{reason}" @@ -4638,7 +4861,7 @@ pl: storage: not_available: "Zużycie pamięci dysku nie jest dostępne dla tego repozytorium." update_timeout: "Zachowaj informacje o ostatnim wymaganym dla repozytorium miejscu na dysku przez N minut. Ponieważ obliczenie wymaganej dla repozytorium przestrzeni dysku może być kosztowne, powiększ tę wartość, aby pomniejszyć wpływ na wydajność." - oauth_application_details: "Wartość kod klienta nie będzie ponownie dostępna po zamknięciu tego okna. Skopiuj tę wartości do ustawień Nextcloud OpenProject Integration:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Przejdź do ustawień" setup_documentation_details: "Jeśli potrzebujesz pomocy w konfiguracji nowego magazynu plików, sprawdź dokumentację: " setup_documentation_details_link_text: "Konfiguracja magazynów plików" @@ -4683,15 +4906,15 @@ pl: setting_apiv3_cors_title: "Współdzielenie zasobów między źródłami (CORS)" setting_apiv3_cors_enabled: "Włącz CORS" setting_apiv3_cors_origins: "Dozwolone źródła mechanizmu Cross-Origin Resource Sharing (CORS) interfejsu API V3" - setting_apiv3_cors_origins_text_html: > - Jeśli mechanizm CORS jest włączony, są to źródła, których dostęp do interfejsu API OpenProject jest dozwolony.
Sprawdź w dokumentacji nagłówka origin jak należy określić oczekiwane wartości. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Dostęp do zapisu do atrybutów tylko do odczytu" setting_apiv3_write_readonly_attributes_instructions: > Jeśli funkcja ta jest włączona, interfejs API pozwoli administratorom na zapisywanie podczas tworzenia statycznych atrybutów tylko do odczytu, takich jak createdAt i author. setting_apiv3_write_readonly_attributes_warning: > To ustawienie ma zastosowanie np. do importowania danych, ale pozwala administratorom na podszywanie się pod innych użytkowników podczas tworzenia elementów. Wszystkie żądania utworzenia są jednak rejestrowane z prawdziwym autorem. - setting_apiv3_write_readonly_attributes_additional: > - Więcej informacji na temat atrybutów i obsługiwanych zasobów można znaleźć na stronie %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maksymalny rozmiar strony interfejsu API" setting_apiv3_max_page_size_instructions: > Ustaw maksymalny rozmiar strony, jakim będzie odpowiadać interfejs API. Nie będzie możliwe wykonywanie żądań interfejsu API, które zwracają więcej wartości na jednej stronie. @@ -4788,7 +5011,7 @@ pl: setting_work_package_properties: "Właściwości pakietu roboczego" setting_work_package_startdate_is_adddate: "Użyj bieżącej daty jako daty początkowej dla nowych pakietów roboczych" setting_work_packages_projects_export_limit: "Limit eksportu pakietów roboczych / projektów" - setting_journal_aggregation_time_minutes: "Działania użytkownika agregowane w ciągu" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Rejestrowanie loginu, nazwy i adresu e-mail użytkownika dla wszystkich żądań" setting_login_required: "Wymagane uwierzytelnienie" setting_login_required_caption: "Po zaznaczeniu tej opcji wszystkie żądania do aplikacji muszą zostać uwierzytelnione." @@ -4869,6 +5092,12 @@ pl: setting_welcome_text: "Tekst bloku powitalnego" setting_welcome_title: "Tytuł bloku powitalnego" setting_welcome_on_homescreen: "Wyświetl wiadomość powitalną na ekranie głównym" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Domyślny tryb wyróżniania" setting_work_package_list_default_highlighted_attributes: "Domyślnie wyróżniane atrybuty wyświetlane w treści" setting_working_days: "Dni robocze" @@ -5035,10 +5264,12 @@ pl: section_work_week: "Tydzień roboczy" section_holidays_and_closures: "Dni wolne i zamknięcia" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "Nie masz uprawnień niezbędnych do wyświetlenia tej strony." activities: enable_internal_comments: "Włącz komentarze wewnętrzne" - helper_text: "Komentarze wewnętrzne pozwalają zespołowi wewnętrznemu komunikować się między sobą prywatnie. Są one widoczne tylko w celu wybrania ról, które mają niezbędne uprawnienia i nie będą widoczne publicznie. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Zwykły tekst" @@ -5160,6 +5391,10 @@ pl: text_plugin_assets_writable: "Plugin assets directory writable" text_powered_by: "Napędzany przez %{link}" text_project_identifier_info: "Tylko małe litery (a-z), cyfry, myślniki i podkreślenia są dozwolone, oraz musi zaczynać się małą literą." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Ponowne przydzielenie do Zestawu zadań:" text_regexp_multiline: 'Wyrażenie regularne jest stosowane w trybie wielolinijkowym. np. ^---\s+' text_repository_usernames_mapping: "Wybierz lub zaktualizuj użytkownika OpenProject do każdego użytkownika w dzienniku repozytorium.\nUżytkownicy z tym samym loginem lub adresem e-mail w OpenProject i repozytorium są automatycznie mapowani." @@ -5269,18 +5504,18 @@ pl: version_status_locked: "zablokowane" version_status_open: "Otwarte" note: Uwaga - note_password_login_disabled: "Logowanie poprzez hasło zostało wyłączone przez %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Ostrzeżenie warning_attachments_not_saved: "%{count} plik(ów) nie może być zapisany." - warning_imminent_user_limit: > - Zaprosiłeś więcej użytkowników niż jest to obsługiwane przez Twój obecny abonament. Zaproszeni użytkownicy mogą nie być w stanie dołączyć do twojego środowiska OpenProject. uaktualnij swój plan lub zablokuj istniejących użytkowników, aby umożliwić zaproszonym i zarejestrowanym użytkownikom dołączenie. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | Ważność aktywacyjnej wiadomości e-mail wygasła. Wysłaliśmy nową wiadomość na adres %{email}. Kliknij zawarte w niej łącze, aby aktywować konto. warning_user_limit_reached: > Dodanie dodatkowych użytkowników spowoduje przekroczenie bieżącego limitu. Aby zapewnić użytkownikom zewnętrznym dostęp do tego wystąpienia, skontaktuj się z administratorem w celu zwiększenia limitu liczby użytkowników. - warning_user_limit_reached_admin: > - Dodanie dodatkowych użytkowników spowoduje przekroczenie bieżącego limitu. Aby zapewnić użytkownikom zewnętrznym dostęp do tego wystąpienia, przejdź na wyższy plan. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > Osiągnięto limit użytkownika (%{current}/%{max} aktywnych użytkowników). Skontaktuj się z sales@openproject.com w celu uaktualnienia planu Enterprise Edition i dodania kont użytkowników. warning_protocol_mismatch_html: > @@ -5340,7 +5575,7 @@ pl: reminders: label_remind_at: "Data" note_placeholder: "Dlaczego ustawiasz to przypomnienie?" - create_success_message: "Przypomnienie zostało ustawione. %{reminder_time} otrzymasz powiadomienie dotyczące tego pakietu roboczego." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Przypomnienie zostało zaktualizowane." success_deletion_message: "Przypomnienie zostało usunięte." sharing: @@ -5371,8 +5606,8 @@ pl: text_user_limit_reached_admins: 'Dodanie dodatkowych użytkowników spowoduje przekroczenie bieżącego limitu. Aby móc dodać więcej użytkowników, przejdź na wyższy plan.' warning_user_limit_reached: > Dodanie dodatkowych użytkowników spowoduje przekroczenie bieżącego limitu. Aby zapewnić użytkownikom zewnętrznym dostęp do tego %{entity}, skontaktuj się z administratorem w celu zwiększenia limitu liczby użytkowników. - warning_user_limit_reached_admin: > - Dodanie dodatkowych użytkowników spowoduje przekroczenie bieżącego limitu. Aby zapewnić użytkownikom zewnętrznym dostęp do tego %{entity}, przejdź na wyższy plan. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Wybierz użytkowników, którym chcesz udostępnić ten %{entity}" warning_locked_user: "Użytkownik %{user} jest zablokowany i nie można mu udostępniać" user_details: @@ -5492,6 +5727,7 @@ pl: project: Nie ujawniono — projekt jest niewidoczny ze względu na brak uprawnień. ancestor: Nie ujawniono — przodek jest niewidoczny ze względu na brak uprawnień. definingProject: Nie ujawniono — projekt jest niewidoczny ze względu na brak uprawnień. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-Autoryzacja" diff --git a/config/locales/crowdin/pt-BR.yml b/config/locales/crowdin/pt-BR.yml index 5da435df53b..7964285f010 100644 --- a/config/locales/crowdin/pt-BR.yml +++ b/config/locales/crowdin/pt-BR.yml @@ -108,7 +108,7 @@ pt-BR: jemalloc_allocator: Alocador de memória Jemalloc journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Importar" jira: @@ -379,11 +379,71 @@ pt-BR: project_creation: "Criação de projeto" notification_text_default: >

Olá,

Um novo projeto foi criado: projectValue:name

Obrigado

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Transições padrão" user_author: "Usuário é autor" user_assignee: "Usuário é responsável" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Entrar e cadastrar" announcements: @@ -606,6 +666,14 @@ pt-BR: danger_dialog: confirmation_live_message_checked: "O botão para prosseguir agora está ativo." confirmation_live_message_unchecked: "O botão para prosseguir está desativado. É necessário marcar a caixa de seleção para continuar." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "O URL em que o servidor MCP do OpenProject estará acessível. Necessário para configurar os clientes MCP." @@ -766,6 +834,11 @@ pt-BR: description: > O projeto será visível apenas para os membros, de acordo com sua função e permissões associadas. Subprojetos não são afetados e têm configurações próprias. change_identifier: Mudar identificador + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Selecione os modelos a serem usados ao criar novos subitens. @@ -998,9 +1071,9 @@ pt-BR: groups: member_in_these_groups: "No momento, este usuário é um membro dos seguintes grupos: " no_results_title_text: No momento, este usuário não é membro de nenhum grupo. - summary_with_more: Membro de %{names} e %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} a mais" - summary: Membro do %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Atualmente, este usuário não é um membro de um projeto. open_profile: "Abrir perfil" @@ -1055,6 +1128,64 @@ pt-BR: user: "O usuário agora pode entrar para acessar %{project}. Enquanto isso, você já pode planejar com este usuário e atribuir pacotes de trabalho por exemplo." placeholder_user: "O espaço reservado agora pode ser usado em %{project}. Enquanto isso, você já pode planejar com esse usuário e, por exemplo, atribuir pacotes de trabalho." group: "O grupo agora faz parte de %{project}. Enquanto isso, você já pode planejar com este grupo e atribuir pacotes de trabalho por exemplo." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Texto" placeholder_users: @@ -1062,11 +1193,11 @@ pt-BR: Você não tem permissão para excluir o usuário de espaço reservado. Você também não possui o direito de gerenciar membros em todos os projetos dos quais esse usuário de espaço reservado faz parte. delete_tooltip: "Excluir usuário de espaço reserva" deletion_info: - heading: "Excluir usuário de espaço reservado %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > Todas as ocorrências do usuário de espaço reservado (por exemplo, como responsável, competente ou outros valores de usuário) serão reatribuídas a uma conta chamada "Usuário excluído". Como os dados de todas as contas excluídas são reatribuídos a esta conta, não será possível diferenciar os dados criados por usuários de dados excluídos por outra conta. irreversible: "Esta ação é irreversível" - confirmation: "Digite o nome do usuário de espaço reservado %{name} para confirmar a exclusão." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1097,9 +1228,10 @@ pt-BR: Por padrão, os novos pacotes de trabalho são definidos com este tipo. Eles não podem ser somente leitura. status_excluded_from_totals_text: |- Selecione esta opção para excluir pacotes de trabalho com este status dos totais de Trabalho, Trabalho Restante e % de conclusão em uma hierarquia. - status_percent_complete_text: |- - No modo de cálculo de progresso com base no status, o % de conclusão de um pacote de trabalho é automaticamente ajustado para este valor quando o status é selecionado. - Ignorado no modo baseado em trabalho. + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work + package is automatically set to this value when this status is selected. + Ignored in work-based mode. status_readonly_html: | Marque esta opção para definir pacotes de trabalho com este status como somente leitura. Nenhum atributo poderá ser alterado, exceto o status. @@ -1362,7 +1494,7 @@ pt-BR: O registro do usuário é limitado para o provedor de logon único '%{name}'. Peça a um administrador para ativar a conta para você ou alterar o limite de auto-registro para este provedor. login_with_auth_provider: "ou entre com a sua conta existente" signup_with_auth_provider: "ou cadastre-se usando" - auth_source_login: Faça login como %{login} para ativar sua conta. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Faça login para ativar sua conta. actionview_instancetag_blank_option: "Por favor selecione" activemodel: @@ -1633,6 +1765,11 @@ pt-BR: consented_at: "Consentido em" group: identity_url: "URL de identidade" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Aparência e comportamento" header_alerts: "Alertas" @@ -1641,8 +1778,6 @@ pt-BR: button_update_user_information: "Atulizar perfil" comments_sorting: "Exibir atividade do pacote de trabalho classificada por" disable_keyboard_shortcuts: "Desativar atalhos de teclado" - disable_keyboard_shortcuts_caption_html: |- - Você pode optar por desativar os atalhos de teclado padrão caso use leitor de tela ou queira evitar acionar ações acidentalmente com atalhos. dismissed_enterprise_banners: "Banners empresariais ocultos" impaired: "Modo de acessibilidade" auto_hide_popups: "Ocultar automaticamente as notificações de sucesso" @@ -1663,6 +1798,28 @@ pt-BR: users/invitation/form_model: principal_type: "Tipo de convite" id_or_email: "Nome ou endereço de e-mail" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Data de conclusão" sharing: "Compartilhamento" @@ -1717,6 +1874,8 @@ pt-BR: before: "deve ser antes de %{date}." before_or_equal_to: "deve ser antes ou igual a %{date}." blank: "não pode ficar em branco." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "precisa ter a propriedade '%{property}' definida. " cannot_delete_mapping: "é obrigatório. Não pode ser excluído." is_for_all_cannot_modify: "é aplicável a todos os projetos e, portanto, não pode ser modificado." @@ -1753,8 +1912,9 @@ pt-BR: less_than_or_equal_to: "deve ser menor ou igual a %{count}." not_available: "não está disponível devido a uma configuração do sistema." not_deletable: "não pode ser excluído." + not_editable: "cannot be edited because it is already in effect." not_current_user: "não é o usuário atual." - only_one_active_sprint_allowed: "apenas uma sprint ativa é permitida por projeto." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "não encontrado." not_a_date: "não é uma data válida." not_a_datetime: "não é uma data/hora válida." @@ -1785,6 +1945,10 @@ pt-BR: não está fornecendo um "Secure Context". Você pode tanto usar HTTPS ou um endereço loopback. wrong_length: "é o tamanho errado (deve ser %{count} caracteres)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1895,6 +2059,9 @@ pt-BR: project_initiation_request_disabled: "A solicitação de início de projeto está desabilitada. Ela precisa estar habilitada para criar o pacote de trabalho de artefato." types: in_use_by_work_packages: "ainda em uso pelos pacotes de trabalho: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "O módulo '%{dependency}' precisa ser habilitado, pois o módulo '%{module}' depende dele." format: "%{message}" @@ -2100,6 +2267,10 @@ pt-BR: description: "'Confirmação de senha' deve coincidir com a entrada no campo 'nova senha'." status: invalid_on_create: "não é um estado válido para novos usuários." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Por favor, escolha ao menos um usuário ou grupo." role_blank: "precisa ser atribuído." @@ -2366,8 +2537,8 @@ pt-BR: Habilitar backups permitirá que qualquer usuário com as permissões necessárias e este token de backup baixe um backup contendo todos os dados desta instalação do OpenProject. Isso inclui os dados de todos os outros usuários. info: > Você precisará gerar um token de backup para poder criar um backup. Cada vez que você solicitar um backup você terá que fornecer esse token. Você pode excluir o token de backup para desabilitar backups deste usuário. - verification: > - Digite %{word} para confirmar que você deseja %{action} o token de backup. + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: redefinir verification_word_create: criar warning: > @@ -2806,7 +2977,7 @@ pt-BR: title: one: "Falta um dia para o término do token de avaliação %{trial_plan}" other: "Faltam %{count} dias para o término do token de avaliação %{trial_plan}" - description: "Você possui acesso a todos os recursos do %{trial_plan}." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "Você solicitou um token de avaliação, mas esta solicitação não está mais disponível. Tente novamente." wait_for_confirmation: "Enviamos um e-mail para você confirmar seu endereço e assim resgatar um token de avaliação." @@ -2823,10 +2994,8 @@ pt-BR: confirmation_subline: > Verifique sua caixa de entrada e realize as etapas para iniciar sua avaliação gratuita de 14 dias. domain_caption: O token será válido apenas para o nome de host configurado no momento. - receive_newsletter_html: > - Quero receber a boletim informativo do OpenProject. - consent_html: > - Eu concordo com os termos de serviço e a política de privacidade. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Desabilitado." @@ -2914,8 +3083,8 @@ pt-BR: work_package_edit: "Pacote de Trabalho editado" work_package_note: "Anotação acrescentada ao Pacote de Trabalho" title: - project: "Projeto: %{name}" - subproject: "Subprojeto: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Exportar" @@ -3166,6 +3335,7 @@ pt-BR: Modo de agendamento ajustado automaticamente com a atualização da versão. totals_removed_from_childless_work_packages: >- Os totais de trabalho e progresso foram removidos automaticamente para pacotes de trabalho que não são principais com a atualização de versão. Esta é uma tarefa de manutenção e pode ser ignorada com segurança. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Pacotes de trabalho infantil sem Trabalho são ignorados. total_percent_complete_mode_changed_to_simple_average: >- @@ -3173,9 +3343,9 @@ pt-BR: links: configuration_guide: "Guia de configuração" get_in_touch: "Com dúvidas? Entre em contato conosco." - instructions_after_registration: "Você pode entrar, assim que a sua conta for ativada clicando %{signin}." - instructions_after_logout: "Você pode entrar novamente clicando em %{signin}." - instructions_after_error: "Você pode tentar entrar novamente, clicando em %{signin}. Se o erro persistir, consulte seu administrador para obter ajuda." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Inteligência artificial (IA)" @@ -3367,6 +3537,8 @@ pt-BR: label_calendar_show: "Mostrar Calendário" label_category: "Categoria" label_completed: Concluído + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Consentimento do usuário" label_wiki_menu_item: Item do menu da wiki label_select_main_menu_item: Selecione novo item do menu principal @@ -3533,6 +3705,7 @@ pt-BR: label_subject_or_id: "Assunto ou ID" label_calendar_subscriptions: "Assinaturas do calendários" label_identifier: "Identificador" + label_project_identifier: "Project identifier" label_in: "em" label_in_less_than: "em menos de" label_in_more_than: "em mais de" @@ -3666,11 +3839,13 @@ pt-BR: label_news_view_all: "Ver todas as notícias" label_next: "Próxima" label_next_week: "Próxima semana" + label_next_year: "Next year" label_no_change_option: "(Sem alteração)" label_no_data: "Sem dados para exibir" label_no_due_date: "sem data de conclusão" label_no_start_date: "nenhuma data de início" label_no_parent_page: "Nenhuma página pai" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notificações" label_nothing_display: "Nada para exibir" label_nobody: "ninguém" @@ -3699,6 +3874,8 @@ pt-BR: label_overall_activity: "Atividade global" label_overview: "Visão geral" label_page_title: "Título da página" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "parte de" label_password_lost: "Esqueceu a senha?" label_password_rule_lowercase: "Letras minúsculas" @@ -3725,6 +3902,7 @@ pt-BR: label_preview_not_available: "Visualização não disponível" label_previous: "Anterior" label_previous_week: "Semana anterior" + label_previous_year: "Previous year" label_principal_invite_via_email: " ou convidar novos usuários via e-mail" label_principal_search: "Adicionar usuários existentes ou grupos" label_privacy_policy: "Política de privacidade e segurança de dados" @@ -3836,6 +4014,7 @@ pt-BR: label_start_to_start: "início à início" label_statistics: "Estatísticas" label_status: "Situação" + label_status_plural: "Statuses" label_storage_free_space: "Espaço em disco restante" label_storage_used_space: "Espaço em disco utilizado" label_storage_group: "Armazenamento de arquivos %{identifier}" @@ -3864,6 +4043,7 @@ pt-BR: label_title: "Título" label_projects_menu: "Projetos" label_today: "hoje" + label_today_capitalized: "Hoje" label_token_version: "Versão do Token" label_today_as_start_date: "Selecionar hoje como data de início." label_today_as_due_date: "Selecionar hoje como data de fim." @@ -3884,7 +4064,7 @@ pt-BR: label_user: "Usuário" label_user_and_permission: "Usuários e permissões" label_user_named: "Usuário %{name}" - label_user_activity: "atividade do %{value}" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anônimo" label_user_menu: "Menu de usuários" label_user_new: "Novo usuário" @@ -3971,6 +4151,15 @@ pt-BR: one: "1 arquivo" other: "%{count} arquivos" zero: "nenhum arquivo" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "ontem" label_zen_mode: "Modo Zen" label_role_type: "Tipo" @@ -3979,6 +4168,22 @@ pt-BR: label_not_changeable: "(não modificável)" label_global: "Global" label_seeded_from_env_warning: Este registro foi criado por meio de uma configuração de variável de ambiente e, portanto, não pode ser editado através da interface do usuário. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Erro de execução da macro %{macro_name}" macro_unavailable: "Macro %{macro_name} não pode ser exibida." macros: @@ -4013,7 +4218,7 @@ pt-BR: center: "Para o centro de notificação" see_in_center: "Ver comentário no centro de notificações" settings: "Alterar configurações de e-mail" - salutation: "Olá, %{user}!" + salutation: "Hello %{user}," salutation_full_name: "Nome completo" work_packages: created_at: "Criado em %{timestamp} por %{user}" @@ -4043,7 +4248,7 @@ pt-BR: note: "Nota: “%{note}”" sharing: work_packages: - allowed_actions: "Você pode %{allowed_actions} este pacote de trabalho. Isso pode mudar dependendo da sua função e permissões do projeto." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "Para acessar este pacote de trabalho, você terá que criar e ativar uma conta em %{instance}." open_work_package: "Abrir pacote de trabalho" subject: "O Pacote de trabalho nº %{id} foi compartilhado com você" @@ -4141,9 +4346,9 @@ pt-BR: roles: "Agora você tem os seguintes papéis:" mail_user_activation_limit_reached: subject: Limite de ativação de usuários atingido - message: | - Um novo usuário (%{email}) tentou criar uma conta em um ambiente do OpenProject que você gerencia (%{host}). - O usuário não conseguiu ativar sua conta pois o limite máximo de usuários foi atingido. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "Para permitir que o usuário entre você pode: " a: "Atualizar seu plano de pagamento ([here](upgrade_url))" #here turned into a link @@ -4327,6 +4532,12 @@ pt-BR: permission_manage_versions: "Gerenciar versões" permission_manage_wiki: "Gerenciar wiki" permission_manage_wiki_menu: "Gerenciar menu da wiki" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Mover pacotes de trabalho" permission_protect_wiki_pages: "Proteger páginas wiki" permission_rename_wiki_pages: "Renomear páginas wiki" @@ -4472,10 +4683,10 @@ pt-BR: info: "Excluir o repositório é uma ação irreversível." info_not_managed: "Nota: Isto NÃO irá excluir o conteúdo deste repositório, pois não é gerenciado pelo OpenProject." managed_path_note: "Será apagado o seguinte diretório: %{path}" - repository_verification: "Digite o identificador do projeto %{identifier} para verificar a exclusão de seu repositório." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Você quer realmente excluir o %{repository_type} do projeto %{project_name}?" - subtitle_not_managed: "Você quer realmente remover o %{repository_type} %{url} vinculado do projeto %{project_name}?" - title: "Excluir o %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Remover o %{repository_type} vinculado?" errors: build_failed: "Não é possível criar o repositório com a configuração selecionada. %{reason}" @@ -4525,7 +4736,7 @@ pt-BR: storage: not_available: "Consumo de armazenamento em disco não está disponível para este repositório." update_timeout: "Manter as últimas informações de espaço em disco necessário para um repositório por N minutos. Como contar o espaço em disco necessário de um repositório pode ser custoso, aumente este valor para reduzir o impacto no desempenho." - oauth_application_details: "O valor secreto do cliente não poderá ser acessado novamente após esta janela ser fechada. Copie estes valores nas configurações de Integração do Nextcloud OpenProject:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Ir para a página de configurações" setup_documentation_details: "Se você precisar de ajuda para configurar um novo armazenamento de arquivos, confira a documentação:" setup_documentation_details_link_text: "Configuração dos armazenamentos de arquivo" @@ -4570,15 +4781,15 @@ pt-BR: setting_apiv3_cors_title: "Compartilhamento de recursos entre origens (CORS)" setting_apiv3_cors_enabled: "Habilitar CORS" setting_apiv3_cors_origins: "Cross-Origin Resource Sharing (CORS) permitidos pela API V3" - setting_apiv3_cors_origins_text_html: > - Se o CORS estiver habilitado, essas são as origens que têm permissão para acessar a API OpenProject.
Por favor, verifique a documentação na header da Origin sobre como especificar os valores esperados. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Acesso de gravação a atributos somente leitura" setting_apiv3_write_readonly_attributes_instructions: > Se ativada, a API permitirá que os administradores gravem atributos estáticos de somente leitura durante a criação, como createdAt e author. setting_apiv3_write_readonly_attributes_warning: > Esta configuração tem casos de uso, por exemplo, para importação de dados, mas permite que administradores criem itens em nome de outros usuários. Todas as solicitações de criação, no entanto, são registradas com o autor verdadeiro. - setting_apiv3_write_readonly_attributes_additional: > - Para obter mais informações sobre atributos e recursos suportados, consulte %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Tamanho máximo da página de API" setting_apiv3_max_page_size_instructions: > Defina o tamanho máximo de página que a API irá retornar. Não será possível realizar solicitações à API que retornem mais valores em uma única página. @@ -4675,7 +4886,7 @@ pt-BR: setting_work_package_properties: "Propriedades do pacote de trabalho" setting_work_package_startdate_is_adddate: "Usar a data atual como data para início dos novos pacotes de trabalho" setting_work_packages_projects_export_limit: "Limite de exportação de pacote de trabalho / projetos" - setting_journal_aggregation_time_minutes: "Ações do usuário agregadas em" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Registrar início de sessão do usuário, nome e endereço de e-mail para todas as requisições" setting_login_required: "Autenticação requerida" setting_login_required_caption: "Quando ativado, todas as solicitações ao aplicativo devem ser autenticadas." @@ -4756,6 +4967,12 @@ pt-BR: setting_welcome_text: "Texto do bloco de boas-vindas" setting_welcome_title: "Título do bloco de boas-vindas" setting_welcome_on_homescreen: "Exibir bloco de boas-vindas na tela inicial" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Modo de destaque padrão" setting_work_package_list_default_highlighted_attributes: "Atributos embutidos com destaque padrão" setting_working_days: "Dias úteis" @@ -4922,10 +5139,12 @@ pt-BR: section_work_week: "Semana de trabalho" section_holidays_and_closures: "Feriados e fechamentos" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "Você não tem as permissões necessárias para visualizar esta página." activities: enable_internal_comments: "Habilitar comentários internos" - helper_text: "Comentários internos permitem que a equipe interna se comunique de forma privada. Eles só são visíveis para funções selecionadas que possuem as permissões necessárias e não aparecem publicamente. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Texto simples" @@ -5047,6 +5266,10 @@ pt-BR: text_plugin_assets_writable: "Diretório de plugins ativos é gravável" text_powered_by: "Desenvolvido por %{link}" text_project_identifier_info: "Apenas letras minúsculas (a-z), números, hífens e sublinhados são permitidos, deve-se começar com uma letra minúscula." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reatribua ao pacote de trabalho:" text_regexp_multiline: 'A expressão regular é aplicada no modo multilinha. Por exemplo: ^---\s+' text_repository_usernames_mapping: "Selecionar ou atualizar o usuário do OpenProject mapeado para cada nome de usuário encontrado no log do repositório. Os usuários com o mesmo nome de usuário OpenProject e repositório ou e-mail serão mapeados automaticamente." @@ -5154,17 +5377,17 @@ pt-BR: version_status_locked: "bloqueado" version_status_open: "aberto" note: Nota - note_password_login_disabled: "Senha foi desativada por %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Aviso warning_attachments_not_saved: "%{count} arquivo(s) não pôde(m) ser salvo(s)." - warning_imminent_user_limit: > - Você convidou usuários além do que é suportado pelo seu plano atual. Usuários convidados podem não ser capazes de participar de seu ambiente OpenProject. Por favor, atualize seu plano ou bloqueie usuários existentes a fim de permitir que convidados possam registrar-se. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | O e-mail de ativação expirou. Enviamos um novo para %{email}. Por favor, clique no link dentro dele para ativar sua conta. warning_user_limit_reached: > A adição de usuários adicionais fará com que o limite atual seja excedido. Entre em contato com um administrador para aumentar o limite de usuários e garantir que usuários externos possam acessar esta instância. - warning_user_limit_reached_admin: > - A adição de usuários adicionais excederá o limite atual. Atualize o seu plano para poder garantir que os usuários externos possam acessar a esta instância. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > Você atingiu seu limite de usuários (%{current}/%{max} usuários ativos). Entre em contato com sales@openproject.com para atualizar seu plano da edição Enterprise e adicionar novos usuários. warning_protocol_mismatch_html: > @@ -5224,7 +5447,7 @@ pt-BR: reminders: label_remind_at: "Data" note_placeholder: "Por que você está configurando este lembrete?" - create_success_message: "Lembrete configurado com sucesso. Você receberá uma notificação deste pacote de trabalho %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Lembrete atualizado com sucesso." success_deletion_message: "Lembrete excluído com sucesso." sharing: @@ -5255,8 +5478,8 @@ pt-BR: text_user_limit_reached_admins: 'A adição de usuários adicionais excederá o limite atual. Atualize o seu plano para poder adicionar mais usuários.' warning_user_limit_reached: > A adição de usuários adicionais fará com que o limite atual seja excedido. Entre em contato com um administrador para aumentar o limite de usuários e garantir que usuários externos possam acessar esta %{entity}. - warning_user_limit_reached_admin: > - A adição de usuários adicionais excederá o limite atual. Atualize o seu plano para poder garantir que os usuários externos possam acessar a esta %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Selecione os usuários com quem compartilhar este %{entity}" warning_locked_user: "O usuário %{user} está bloqueado e não pode receber compartilhamento" user_details: @@ -5376,6 +5599,7 @@ pt-BR: project: Não revelado - O projeto está invisível devido à falta de permissões. ancestor: Não revelado - O ancestral está invisível devido à falta de permissões. definingProject: Não revelado - O projeto está invisível devido à falta de permissões. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pré-autorização" diff --git a/config/locales/crowdin/pt-PT.yml b/config/locales/crowdin/pt-PT.yml index d9b50b5c425..20ceb5aa469 100644 --- a/config/locales/crowdin/pt-PT.yml +++ b/config/locales/crowdin/pt-PT.yml @@ -108,7 +108,7 @@ pt-PT: jemalloc_allocator: Alocador de memória Jemalloc journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Importar" jira: @@ -379,11 +379,71 @@ pt-PT: project_creation: "Criação de projeto" notification_text_default: >

Olá,

Foi criado um novo projeto: projectValue:name

Obrigado

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Transições padrão" user_author: "O utilizador é o autor" user_assignee: "O utilizador é encarregado" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Iniciar sessão e registo" announcements: @@ -605,6 +665,14 @@ pt-PT: danger_dialog: confirmation_live_message_checked: "O botão para prosseguir está agora ativo." confirmation_live_message_unchecked: "O botão para prosseguir está agora inativo. Tem de assinalar a caixa de verificação para continuar." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "URL em que o servidor OpenProject MCP estará acessível. Necessário para a configuração de clientes MCP." @@ -765,6 +833,11 @@ pt-PT: description: > O projeto só estará visível para os membros do projeto, dependendo do seu cargo e permissões associadas. Os subprojetos não são afetados e têm suas próprias definições. change_identifier: Mudar identificador + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Selecione os modelos a utilizar na criação de novos sub-elementos. @@ -997,9 +1070,9 @@ pt-PT: groups: member_in_these_groups: "Atualmente, este utilizador é membro dos seguintes grupos:" no_results_title_text: Este utilizador atualmente não é um membro de nenhum grupo. - summary_with_more: Membro de %{names} e %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "mais %{count}" - summary: Membro de %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Este utilizador atualmente não é um membro de um projeto. open_profile: "Abrir perfil" @@ -1054,6 +1127,64 @@ pt-PT: user: "O utilizador agora pode iniciar sessão para aceder a %{project}. Enquanto isso, já pode planear com este utilizador e atribuir pacotes de trabalho, por exemplo." placeholder_user: "O espaço reservado agora pode ser usado em %{project}. Enquanto isso, já pode planear com este utilizador e atribuir pacotes de trabalho, por exemplo." group: "O grupo agora faz parte de %{project}. Enquanto isso, já pode planear com este grupo e atribuir pacotes de trabalho, por exemplo." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Conteúdo" placeholder_users: @@ -1061,11 +1192,11 @@ pt-PT: Não pode eliminar o utilizador do espaço reservado. Não tem direito de gerir membros em todos os projetos de que o utilizador do espaço reservado é membro. delete_tooltip: "Eliminar utilizador de espaço reservado" deletion_info: - heading: "Eliminar utilizador de espaço reservado %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > Todas as ocorrências do utilizador de espaço reservado (por exemplo, como responsável, competente ou outros valores de utilizador) serão reatribuídas a uma conta chamada "Utilizador eliminado". Como os dados de todas as contas eliminadas são reatribuídos a esta conta, não será possível diferenciar os dados criados pelo utilizador a partir de dados de outra conta eliminada. irreversible: "Esta ação é irreversível" - confirmation: "Insira o nome de utilizador do espaço reservado %{name} para confirmar a eliminação." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1097,9 +1228,10 @@ pt-PT: status_excluded_from_totals_text: |- Assinale esta opção para excluir pacotes de trabalho com este estado dos totais de Trabalho, Trabalho restante e % Completo numa hierarquia. - status_percent_complete_text: |- - No modo de cálculo de progresso baseado no estado, a % de conclusão de um pacote de trabalho é automaticamente definida para este valor quando este estado é selecionado. - Ignorado no modo baseado no trabalho. + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work + package is automatically set to this value when this status is selected. + Ignored in work-based mode. status_readonly_html: | Assinale esta opção para marcar pacotes de trabalho com este estado como só de leitura. Nenhum atributo pode ser alterado com a exceção do estado. @@ -1362,7 +1494,7 @@ pt-PT: O registo de utilizadores é limitado para o fornecedor de início de sessão único "%{name}". Peça a um administrador para ativar a conta para si ou para alterar o limite de auto-registo para este fornecedor. login_with_auth_provider: "ou inicie sessão com a sua conta" signup_with_auth_provider: "ou registe-se, utilizando" - auth_source_login: Por favor, inicie a sessão como %{login} para ativar a sua conta. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Por favor, inicie a sessão para ativar a sua conta. actionview_instancetag_blank_option: "Por favor, selecione" activemodel: @@ -1633,6 +1765,11 @@ pt-PT: consented_at: "Consentiu em" group: identity_url: "URL de identidade" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Aspeto e sensação" header_alerts: "Alertas" @@ -1641,8 +1778,6 @@ pt-PT: button_update_user_information: "Atualizar perfil" comments_sorting: "Exibir a atividade do pacote de trabalho ordenada por" disable_keyboard_shortcuts: "Desativar atalhos de teclado" - disable_keyboard_shortcuts_caption_html: |- - Pode optar por desativar atalhos de teclado predefinidos se utilizar um leitor de ecrã, ou se quiser evitar desencadear acidentalmente uma ação com um atalho. dismissed_enterprise_banners: "Faixas de empresas ocultas" impaired: "Modo de acessibilidade" auto_hide_popups: "Ocultar automaticamente os banners de sucesso" @@ -1663,6 +1798,28 @@ pt-PT: users/invitation/form_model: principal_type: "Tipo de convite" id_or_email: "Nome ou endereço de e-mail" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Data de término" sharing: "Compartilhar" @@ -1717,6 +1874,8 @@ pt-PT: before: "tem de ser anterior a %{date}." before_or_equal_to: "deve ser antes ou igual a %{date}." blank: "não pode ficar em branco." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "precisa de ter a propriedade '%{property}' configurada." cannot_delete_mapping: "é necessário. Não pode ser eliminado." is_for_all_cannot_modify: "é para todos os projetos e, por conseguinte, não pode ser alterado." @@ -1753,8 +1912,9 @@ pt-PT: less_than_or_equal_to: "deve ser menor ou igual a %{count}." not_available: "não está disponível devido a uma configuração do sistema." not_deletable: "não pode ser eliminado" + not_editable: "cannot be edited because it is already in effect." not_current_user: "não é o utilizador atual." - only_one_active_sprint_allowed: "só é permitido um sprint ativo por projeto." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "não encontrado." not_a_date: "não é uma data válida." not_a_datetime: "não é uma data/hora válida." @@ -1785,6 +1945,10 @@ pt-PT: não está a fornecer um "Contexto Seguro". Use HTTPS ou um endereço de loopback, como localhost. wrong_length: "tamanho errado (deve ser %{count} caracteres)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1895,6 +2059,9 @@ pt-PT: project_initiation_request_disabled: "A solicitação de início do projeto está desativada. Deve ser ativada para criar o pacote de trabalho do artefacto." types: in_use_by_work_packages: "ainda em uso por pacotes de trabalho: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "O módulo '%{dependency}' tem de ser ativado também, pois o módulo '%{module}' depende dele." format: "%{message}" @@ -2100,6 +2267,10 @@ pt-PT: description: "A 'confirmação de senha' deverá coincidir com a entrada no campo 'Nova senha'." status: invalid_on_create: "não é um estado válido para novos utilizadores." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Por favor, escolha pelo menos um utilizador ou grupo." role_blank: "tem de ser atribuído." @@ -2366,8 +2537,8 @@ pt-PT: Ativar as cópias de segurança permite que qualquer utilizador com as permissões necessárias e com este token de cópia de segurança transfira um backup com todos os dados desta instalação do Open Project. Isto inclui os dados de todos os outros utilizadores. info: > Tem de gerar um token de cópia de segurança para poder criar uma cópia de segurança . Cada vez que solicitar uma cópia de segurança , terá de fornecer este token. Pode eliminar o token de cópia de segurança para desativar cópias de segurança deste utilizador. - verification: > - Digite %{word} para confirmar que quer %{action} o token de cópia de segurança. + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: redefinir verification_word_create: criar warning: > @@ -2806,7 +2977,7 @@ pt-PT: title: one: "Um dia restante do token de teste %{trial_plan}" other: "F%{count} dias restantes do token de teste %{trial_plan}" - description: "Tem acesso a todas as funcionalidades de %{trial_plan}." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "Solicitou um token de teste, mas esse pedido já não está disponível. Tente novamente." wait_for_confirmation: "Enviámos um e-mail para confirmar o seu endereço, a fim de obter um token de avaliação." @@ -2823,10 +2994,8 @@ pt-PT: confirmation_subline: > Verifique a sua caixa de correio eletrónico e siga os passos para iniciar o seu teste gratuito de 14 dias. domain_caption: O token será válido para o nome do anfitrião configurado atualmente. - receive_newsletter_html: > - Quero receber a newsletter do OpenProject. - consent_html: > - Concordo com os termos de serviço e a política de privacidade. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Desativado." @@ -2914,8 +3083,8 @@ pt-PT: work_package_edit: "Pacote de trabalho editado" work_package_note: "Nota de pacote de trabalho adicionada" title: - project: "Projeto: %{name}" - subproject: "Subprojeto: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Exportar" @@ -3166,6 +3335,7 @@ pt-PT: Modo de agendamento ajustado automaticamente com a atualização da versão. totals_removed_from_childless_work_packages: >- Os totais de trabalho e de progresso são automaticamente removidos dos pacotes de trabalho que não são principais com a atualização da versão. Esta é uma tarefa de manutenção e pode ser ignorada com segurança. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Os pacotes de trabalho para crianças sem Trabalho são ignorados. total_percent_complete_mode_changed_to_simple_average: >- @@ -3173,9 +3343,9 @@ pt-PT: links: configuration_guide: "Guia de configuração" get_in_touch: "Tem questões? Entre em contato conosco." - instructions_after_registration: "Pode iniciar a sessão assim que a sua conta for ativada ao clicar em %{signin}." - instructions_after_logout: "Pode iniciar sessão novamente ao clicar em %{signin}." - instructions_after_error: "Pode tentar entrar novamente clicando em %{signin}. Se o erro persistir, peça ajuda ao seu administrador." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Inteligência artificial (IA)" @@ -3367,6 +3537,8 @@ pt-PT: label_calendar_show: "Mostrar Calendários" label_category: "Categoria" label_completed: Concluído + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Consentimento do utilizador" label_wiki_menu_item: Item do menu wiki label_select_main_menu_item: Seleccione novo item do menu principal @@ -3533,6 +3705,7 @@ pt-PT: label_subject_or_id: "ID ou Assunto" label_calendar_subscriptions: "Subscrições de Calendários" label_identifier: "Identificador" + label_project_identifier: "Project identifier" label_in: "em" label_in_less_than: "em menos de" label_in_more_than: "em mais de" @@ -3666,11 +3839,13 @@ pt-PT: label_news_view_all: "Exibir todas as notícias" label_next: "Próxima" label_next_week: "Próxima semana" + label_next_year: "Next year" label_no_change_option: "(Sem mudança)" label_no_data: "Sem dados para apresentar" label_no_due_date: "sem data de término" label_no_start_date: "sem data de início" label_no_parent_page: "Sem página pai" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notificações" label_nothing_display: "Nada para exibir" label_nobody: "ninguém" @@ -3699,6 +3874,8 @@ pt-PT: label_overall_activity: "Atividade global" label_overview: "Sinopse" label_page_title: "Título da página" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "parte de" label_password_lost: "Esqueceu a sua senha?" label_password_rule_lowercase: "Minúsculas" @@ -3725,6 +3902,7 @@ pt-PT: label_preview_not_available: "Pré-visualização não disponível" label_previous: "Anterior" label_previous_week: "Semana passada" + label_previous_year: "Previous year" label_principal_invite_via_email: " ou convide novos utilizadores via correio eletrónico" label_principal_search: "Adicionar utilizadores ou grupos existentes" label_privacy_policy: "Política de privacidade e segurança de dados" @@ -3836,6 +4014,7 @@ pt-PT: label_start_to_start: "início a início" label_statistics: "Estatísticas" label_status: "Situação" + label_status_plural: "Statuses" label_storage_free_space: "Espaço em disco restante" label_storage_used_space: "Espaço de disco usado" label_storage_group: "Armazenamento de ficheiro de sistema %{identifier}" @@ -3864,6 +4043,7 @@ pt-PT: label_title: "Título" label_projects_menu: "Projetos" label_today: "hoje" + label_today_capitalized: "Hoje" label_token_version: "Versão do token" label_today_as_start_date: "Selecione hoje como data de início." label_today_as_due_date: "Selecione hoje como data de fim." @@ -3884,7 +4064,7 @@ pt-PT: label_user: "Utilizador" label_user_and_permission: "Utilizadores e Permissões" label_user_named: "Utilizador %{name}" - label_user_activity: "Atividade de %{value}" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anónimo" label_user_menu: "Menu do utilizador" label_user_new: "Novo Utilizador" @@ -3971,6 +4151,15 @@ pt-PT: one: "1 ficheiro" other: "%{count} ficheiros" zero: "sem ficheiros" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "ontem" label_zen_mode: "Modo Zen" label_role_type: "Tipo" @@ -3979,6 +4168,22 @@ pt-PT: label_not_changeable: "(não mutável)" label_global: "Global" label_seeded_from_env_warning: Este registo foi criado através de uma variável de ambiente de definição. Não é editável através da IU. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Erro a executar a macro %{macro_name}" macro_unavailable: "Macro %{macro_name} não pode ser mostrada." macros: @@ -4013,7 +4218,7 @@ pt-PT: center: "Para o centro de notificações" see_in_center: "Ver comentário no centro de notificações" settings: "Alterar configurações de e-mail" - salutation: "Olá %{user}" + salutation: "Hello %{user}," salutation_full_name: "Nome completo" work_packages: created_at: "Criado a %{timestamp} por %{user}" @@ -4043,7 +4248,7 @@ pt-PT: note: "Nota: \"%{note}\"" sharing: work_packages: - allowed_actions: "Você pode %{allowed_actions} este pacote de trabalho. Isso pode mudar dependendo da sua função e permissões do projeto." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "Para aceder a este pacote de trabalho, terá de criar e ativar uma conta em %{instance}. " open_work_package: "Abrir pacote de trabalho" subject: "O pacote de trabalho #%{id} foi partilhado consigo" @@ -4141,9 +4346,9 @@ pt-PT: roles: "Agora você tem as seguintes funções:" mail_user_activation_limit_reached: subject: Atingido o limite de ativação de utilizador - message: | - Um novo utilizador (%{email}) tentou criar uma conta num ambiente do OpenProject gerido por si (%{host}). - O utilizador não conseguiu ativar a sua conta pois foi atingido o limite máximo de utilizadores. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "Para permitir que o utilizador inicie a sessão pode: " a: "Atualizar o seu plano de pagamento ([here](upgrade_url))" #here turned into a link @@ -4327,6 +4532,12 @@ pt-PT: permission_manage_versions: "Gerir versões" permission_manage_wiki: "Gerir wiki" permission_manage_wiki_menu: "Gerir menu da wiki" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Mover pacotes de trabalho" permission_protect_wiki_pages: "Proteger páginas da wiki" permission_rename_wiki_pages: "Renomear páginas da wiki" @@ -4470,10 +4681,10 @@ pt-PT: info: "Apagar o repositório é uma ação irreversível." info_not_managed: "Nota: Isto NÃO apagará o conteúdo deste repositório, uma vez que não é gerido por OpenProject." managed_path_note: "O seguinte directório será apagado: %{path}" - repository_verification: "Digite o identificador do projeto %{identifier} para verificar a eliminação do seu repositório." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Pretende realmente apagar o %{repository_type} do projeto %{project_name}?" - subtitle_not_managed: "Pretende realmente remover o vinculado %{repository_type} %{url} do projeto %{project_name}?" - title: "Apagar o %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Remover o %{repository_type} vinculado?" errors: build_failed: "Não é possível criar o repositório com a configuração selecionada. %{reason}" @@ -4523,7 +4734,7 @@ pt-PT: storage: not_available: "O consumo de armazenamento de disco não está disponível para este repositório." update_timeout: "Manter as últimas informações de espaço em disco necessário para um repositório por N minutos. Como contar o espaço em disco necessário para um repositório pode ser caro, aumente este valor para reduzir o impacto no desempenho." - oauth_application_details: "O valor secreto do cliente não estará acessível novamente após fechar esta janela. Copie esses valores para as definições de integração do OpenProject da Nextcloud:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Ir para a página de definições" setup_documentation_details: "Se precisar de ajuda para configurar um novo armazenamento de ficheiros, verifique a documentação: " setup_documentation_details_link_text: "Definição de armazenamentos" @@ -4568,15 +4779,15 @@ pt-PT: setting_apiv3_cors_title: "Partilha de recursos entre origens (CORS)" setting_apiv3_cors_enabled: "Habilitar CORS" setting_apiv3_cors_origins: "Partilha de recursos entre origens (CORS) permitidos pela API V3" - setting_apiv3_cors_origins_text_html: > - Se o CORS estiver habilitado, estas são as origens que têm permissão para aceder ao API OpenProject.
Por favor, verifique a documentação no cabeçalho da Origem sobre como especificar os valores esperados. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Acesso de escrita a atributos só de leitura" setting_apiv3_write_readonly_attributes_instructions: > Se ativada, a API permitirá que os administradores escrevam atributos estáticos só de leitura durante a criação, tais como createdAt e author. setting_apiv3_write_readonly_attributes_warning: > Esta definição tem um caso de utilização para, por exemplo, importar dados, mas permite que os administradores se façam passar por outros utilizadores na criação de elementos. No entanto, todos os pedidos de criação são registados com o verdadeiro autor. - setting_apiv3_write_readonly_attributes_additional: > - Para mais informações sobre atributos e recursos suportados, consulte %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Tamanho máximo da página de API" setting_apiv3_max_page_size_instructions: > Defina o tamanho máximo da página com que a API responderá. Não será possível executar pedidos de API que devolvam mais valores numa única página. @@ -4673,7 +4884,7 @@ pt-PT: setting_work_package_properties: "Propriedades do pacote de trabalho" setting_work_package_startdate_is_adddate: "Utilizar a data atual como data de início para novos pacotes de trabalho" setting_work_packages_projects_export_limit: "Pacotes de trabalho / limite de exportação de projetos" - setting_journal_aggregation_time_minutes: "Ações do utilizador agregadas em" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Registar início de sessão, nome e endereço de email para todos os pedidos" setting_login_required: "Autenticação necessária" setting_login_required_caption: "Quando assinalado, todas as solicitações para a aplicação têm de ser autenticadas." @@ -4754,6 +4965,12 @@ pt-PT: setting_welcome_text: "Bloco de texto de boas-vindas" setting_welcome_title: "Título de texto de boas-vindas" setting_welcome_on_homescreen: "Exibir o bloco de boas-vindas no ecrã inicial" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Modo de destaque padrão" setting_work_package_list_default_highlighted_attributes: "Atributos padrão destacados em linha" setting_working_days: "Dias úteis" @@ -4920,10 +5137,12 @@ pt-PT: section_work_week: "Semana de trabalho" section_holidays_and_closures: "Feriados e encerramentos" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "Não tem as permissões necessárias para visualizar esta página." activities: enable_internal_comments: "Ativar comentários internos" - helper_text: "Os comentários internos permitem que uma equipa interna se comunique de forma privada. Estes são visíveis apenas para cargos selecionados que tenham as permissões necessárias e não serão visíveis publicamente. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Texto Simples" @@ -5045,6 +5264,10 @@ pt-PT: text_plugin_assets_writable: "É possíver escrever na pasta de ativos dos módulos de extensão" text_powered_by: "Desenvolvido por %{link}" text_project_identifier_info: "Apenas letras minúsculas (a-z), números, traços e underscores são permitidos, deve começar com uma letra minúscula." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reatribuir pacote de trabalho:" text_regexp_multiline: 'Regex é aplicado num modo de várias linhas. por exemplo, ^---\s+' text_repository_usernames_mapping: "Selecionar ou atualizar o utilizador de OpenProjecto mapeado a cada nome de utilizador encontrado no repositório.\nUtilizadores com o mesmo nome de utilizador ou e-mail no OpenProject e no repositório são mapeados automaticamente." @@ -5152,18 +5375,18 @@ pt-PT: version_status_locked: "bloqueado" version_status_open: "abrir" note: Nota - note_password_login_disabled: "A senha da sessão foi desativada por %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Aviso warning_attachments_not_saved: "Não foi possível guardar %{count} ficheiro(s)." - warning_imminent_user_limit: > - Convidou mais utilizadores do que é suportado pelo seu plano atual. Os utilizadores convidados podem não ser capazes de participar do seu ambiente OpenProject. Por favor, atualize o seu plano ou bloqueie utilizadores existentes para permitir que os utilizadores convidados se possam registar. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | O e-mail de ativação expirou. Enviámos um novo para %{email}. por favor clique no link lá contido para ativar a sua conta. warning_user_limit_reached: > Adicionar usuários adicionais excederá o limite atual. Por favor, contate um administrador para aumentar o limite de usuários para garantir que usuários externos sejam capazes de acessar esta instância. - warning_user_limit_reached_admin: > - A adição de utilizadores adicionais excederá o limite atual. Atualize o seu plano para poder garantir que os utilizadores externos possam aceder a esta instância. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > Atingiu o seu limite de utilizadores (%{current}/%{max} utilizadores ativos). Entre em contato com sales@openproject.com para atualizar o seu plano da edição Enterprise e adicionar novos utilizadores. warning_protocol_mismatch_html: > @@ -5223,7 +5446,7 @@ pt-PT: reminders: label_remind_at: "Data" note_placeholder: "Porque está a definir este lembrete?" - create_success_message: "Lembrete definido com sucesso. Irá receber uma notificação para este pacote de trabalho %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Lembrete atualizado com sucesso." success_deletion_message: "Lembrete eliminado com sucesso." sharing: @@ -5254,8 +5477,8 @@ pt-PT: text_user_limit_reached_admins: 'A adição de utilizadores adicionais excederá o limite atual. Atualize o seu plano para poder adicionar mais utilizadores.' warning_user_limit_reached: > A adição de utilizadores adicionais excederá o limite atual. Contacte um administrador para aumentar o limite de utilizadores, de modo a garantir que os utilizadores externos possam aceder a esta %{entity}. - warning_user_limit_reached_admin: > - A adição de utilizadores adicionais excederá o limite atual. Atualize o seu plano para poder garantir que os utilizadores externos possam aceder a esta %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Selecione os utilizadores com quem partilhar esta %{entity}" warning_locked_user: "O utilizador %{user} está bloqueado e não pode ser partilhado com" user_details: @@ -5375,6 +5598,7 @@ pt-PT: project: Não revelado - O projeto está invisível devido a falta de permissões. ancestor: Não revelado - O ancestral está invisível devido a falta de permissões. definingProject: Não revelado - O projeto está invisível devido a falta de permissões. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pré-autorização" diff --git a/config/locales/crowdin/ro.yml b/config/locales/crowdin/ro.yml index 6742c0cb934..f0a13ecb220 100644 --- a/config/locales/crowdin/ro.yml +++ b/config/locales/crowdin/ro.yml @@ -108,7 +108,7 @@ ro: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -385,11 +385,73 @@ ro: project_creation: "Crearea proiectului" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + few: "... %{count} more projects" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + few: "Remove %{count} statuses?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -613,6 +675,14 @@ ro: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -774,6 +844,11 @@ ro: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Schimbă identificatorul + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Selectează șabloanele care vor fi utilizate la crearea de subelemente noi. @@ -1012,9 +1087,9 @@ ro: groups: member_in_these_groups: "Acest utilizator este în prezent membru al următoarelor grupuri:" no_results_title_text: Acest utilizator nu este în prezent membru în niciun grup. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Acest utilizator nu este în acest moment participant în vreun proiect. open_profile: "Open profile" @@ -1069,6 +1144,65 @@ ro: user: "Utilizatorul se poate autentifica acum pentru a accesa %{project}. Între timp, poți deja să planifici cu acel utilizator și să atribui pachete de lucru, de exemplu." placeholder_user: "Placeholder-ul poate fi utilizat acum în %{project}. Între timp, poți deja să planifici cu acel utilizator și să atribui pachete de lucru, de exemplu." group: "Grupul este acum o parte din %{project}. Între timp, poți deja să planifici cu acest grup și să atribui pachete de lucru, de exemplu." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + few: "%{count} working days" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Text" placeholder_users: @@ -1076,11 +1210,11 @@ ro: Nu ai permisiunea să ștergi utilizatorul de tip placeholder. Nu ai dreptul să gestionezi membrii pentru toate proiectele din care face parte utilizatorul de tip placeholder. delete_tooltip: "Șterge utilizator placeholder" deletion_info: - heading: "Ștergeți utilizatorul de tip placeholder %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > Toate prezențele utilizatorului de tip "placeholder" (de exemplu, ca destinatar, responsabil sau alte valori de utilizator) vor fi realocate unui cont numit "Utilizator eliminat". Deoarece datele fiecărui cont șters sunt realocate acestui cont, nu va fi posibilă deosebirea datelor create de utilizator de datele unui alt cont șters. irreversible: "Această acțiune este ireversibilă" - confirmation: "Introdu numele de utilizator de tip placeholder %{name} pentru a confirma ștergerea." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1113,8 +1247,8 @@ ro: status_excluded_from_totals_text: |- Bifează această opțiune pentru a exclude pachetele de lucru cu acest statut din totalurile de lucrări, muncă rămasă, și % complet într-o ierarhie. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1380,7 +1514,7 @@ ro: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "sau conectaţi-vă cu contul existent" signup_with_auth_provider: "sau înregistrează-te folosind" - auth_source_login: Autentifică-te ca %{login} pentru a activa contul. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Autentifică-te pentru activarea contului tău. actionview_instancetag_blank_option: "Selectează" activemodel: @@ -1651,6 +1785,11 @@ ro: consented_at: "Consimţit la" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Aspect și stil" header_alerts: "Alerts" @@ -1659,8 +1798,6 @@ ro: button_update_user_information: "Update profile" comments_sorting: "Afișează activitatea pachetelor de lucru sortate după" disable_keyboard_shortcuts: "Dezactivează comenzile rapide pentru tastatură" - disable_keyboard_shortcuts_caption_html: |- - Poți alege să dezactivezi tastatura cu comenzi rapide dacă utilizezi un cititor de ecran sau dorești să eviți din greșeala declanșarea unei acțiuni cu o comandă rapidă. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Mod accesibilitate" auto_hide_popups: "Automatically hide success banners" @@ -1681,6 +1818,28 @@ ro: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Numele sau adresa e-mail" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Dată finalizare" sharing: "Distribuire" @@ -1735,6 +1894,8 @@ ro: before: "trebuie să fie înainte de %{date}." before_or_equal_to: "trebuie să fie înainte sau în %{date}." blank: "nu poate fi gol." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "trebuie să aibă setul '%{property}' al proprietății." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1771,8 +1932,9 @@ ro: less_than_or_equal_to: "trebuie să fie mai mic sau egal cu %{count}." not_available: "nu este disponibil din cauza unei configurații a sistemului." not_deletable: "%s nu poate fi șters." + not_editable: "cannot be edited because it is already in effect." not_current_user: "nu este utilizatorul curent." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "nu a fost găsit." not_a_date: "Acest câmp trebuie să conțină o dată validă." not_a_datetime: "nu este o dată-ora validă." @@ -1803,6 +1965,10 @@ ro: nu oferă un "Context securizat". Folosește fie HTTPS sau o adresă de tip buclă, cum ar fi localhost. wrong_length: "nu are lungimea corectă (ar trebui să fie de %{count} characters)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1914,6 +2080,9 @@ ro: project_initiation_request_disabled: "Solicitarea de inițiere a proiectului este dezactivată. Aceasta trebuie să fie activată pentru a crea pachetul de lucru artefact." types: in_use_by_work_packages: "încă în uz în pachetele de lucru: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "Modulul \"%{dependency}\" trebuie, de asemenea, să fie activat, deoarece modulul \"%{module}\" depinde de el." format: "%{message}" @@ -2120,6 +2289,10 @@ ro: description: "Valoarea din 'Confirmare parolă' ar trebui să fie identică cu cea introdusă în 'Parolă nouă'." status: invalid_on_create: "nu este un statut valabil pentru utilizatorii noi." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Trebuie să alegeţi cel puţin un utilizator sau grup." role_blank: "trebuie să fie atribuite." @@ -2404,8 +2577,8 @@ ro: Activarea copiilor de rezervă va permite oricărui utilizator cu permisiunile necesare și acestui token pentru copii de rezervă să descarce o copie de rezervă care conține toate datele acestei instalări OpenProject. Acestea includ datele tuturor celorlalți utilizatori. info: > Va trebui să generezi un token pentru copia de rezervă pentru a putea crea o copie de rezervă. De fiecare dată când vrei să soliciți o copie de rezervă va trebui să furnizezi acest token. Poți șterge token-ul pentru copia de rezervă pentru a dezactiva copiile de rezervă ale acestui utilizator. - verification: > - Introdu %{word} pentru a confirma că vrei să %{action} token-ul pentru copia de rezervă. + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: resetezi verification_word_create: creezi warning: > @@ -2865,7 +3038,7 @@ ro: one: "One day left of %{trial_plan} trial token" few: "%{count} days left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2882,10 +3055,8 @@ ro: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Dezactivat." @@ -2973,8 +3144,8 @@ ro: work_package_edit: "Pachet de lucru editat" work_package_note: "Notă adăugată la pachetul de lucru" title: - project: "Proiect: %{name}" - subproject: "Subproiect: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Exportă" @@ -3225,6 +3396,7 @@ ro: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3232,9 +3404,9 @@ ro: links: configuration_guide: "Ghid de configurare" get_in_touch: "Aveți întrebări? Luați legătura cu noi." - instructions_after_registration: "Vă puteţi autentifica de îndată ce contul a fost activat dând click pe %{signin}." - instructions_after_logout: "Te poți autentifica din nou dând click pe %{signin}." - instructions_after_error: "Poţi încerca să te autentifici din nou dând click pe %{signin}. Dacă eroarea persistă, cere ajutorul administratorului." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3426,6 +3598,8 @@ ro: label_calendar_show: "Afișare calendar" label_category: "Categorie" label_completed: Finalizat + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Consimțământ utilizator" label_wiki_menu_item: Meniu wiki label_select_main_menu_item: Selectare meniu wiki nou @@ -3592,6 +3766,7 @@ ro: label_subject_or_id: "Subiect sau ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Identificator" + label_project_identifier: "Project identifier" label_in: "în" label_in_less_than: "în mai puțin de" label_in_more_than: "în mai mult de" @@ -3725,11 +3900,13 @@ ro: label_news_view_all: "Afișează toate știrile" label_next: "Înainte" label_next_week: "Săptămâna viitoare" + label_next_year: "Next year" label_no_change_option: "(Fără modificări)" label_no_data: "Nu există date de afișat" label_no_due_date: "fără dată finalizare" label_no_start_date: "fără dată început" label_no_parent_page: "Pagină părinte:" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notificări" label_nothing_display: "Nimic de afișat" label_nobody: "nimeni" @@ -3758,6 +3935,8 @@ ro: label_overall_activity: "Activitate globală" label_overview: "Vedere de ansamblu" label_page_title: "Titlu pagină" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "parte a" label_password_lost: "V-aţi uitat parola?" label_password_rule_lowercase: "Litere mici" @@ -3784,6 +3963,7 @@ ro: label_preview_not_available: "Preview not available" label_previous: "Înapoi" label_previous_week: "Săptămâna trecută" + label_previous_year: "Previous year" label_principal_invite_via_email: " sau invită utilizatori folosind email" label_principal_search: "Adaugă utilizatori sau grupuri existente" label_privacy_policy: "Politica privind confidențialitatea și securitatea datelor" @@ -3895,6 +4075,7 @@ ro: label_start_to_start: "început la început" label_statistics: "Statistici" label_status: "Stare" + label_status_plural: "Statuses" label_storage_free_space: "Spațiu disc rămas" label_storage_used_space: "Spațiu disc folosit" label_storage_group: "Sistem de fișiere pentru stocare %{identifier}" @@ -3923,6 +4104,7 @@ ro: label_title: "Titlu" label_projects_menu: "Proiecte" label_today: "astăzi" + label_today_capitalized: "Azi" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3943,7 +4125,7 @@ ro: label_user: "Utilizator" label_user_and_permission: "Utilizatori și permisiuni" label_user_named: "Utilizator %{name}" - label_user_activity: "Activitatea lui %{value}" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonim" label_user_menu: "User menu" label_user_new: "Utilizator nou" @@ -4030,6 +4212,18 @@ ro: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + few: "%{count} days" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + few: "%{count} working days" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + few: "Time off: %{count} working days" + other: "Time off: %{count} working days" label_yesterday: "ieri" label_zen_mode: "Zen mode" label_role_type: "Tip" @@ -4038,6 +4232,22 @@ ro: label_not_changeable: "(nu se poate modifica)" label_global: "Global" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Eroare la execuția macro-ului %{macro_name}" macro_unavailable: "Macro-ul %{macro_name} nu poate fi afișat." macros: @@ -4072,7 +4282,7 @@ ro: center: "Centrul de notificare" see_in_center: "Vezi comentariul în centrul de notificări" settings: "Modificare setări e-mail" - salutation: "Salut %{user}" + salutation: "Hello %{user}," salutation_full_name: "Numele complet" work_packages: created_at: "Creat la %{timestamp} de %{user} " @@ -4103,7 +4313,7 @@ ro: note: "Notă: „%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4202,8 +4412,9 @@ ro: roles: "Acum ai următoarele roluri:" mail_user_activation_limit_reached: subject: Limita numărului de utilizatori activi a fost atinsă - message: | - Un nou utilizator (%{email}) a încercat să creeze un cont pe un server pe care îl gestionați (%{host}). Utilizatorul nu-și poate activa contul deoarece s-a atins limita superioară de utilizatori activi. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "Pentru a permite utilizatorului să se conecteze, puteți: " a: "Actualizați planul de plată ([here](upgrade_url))" #here turned into a link @@ -4388,6 +4599,12 @@ ro: permission_manage_versions: "Gestionare versiuni" permission_manage_wiki: "Gestionare wiki" permission_manage_wiki_menu: "Gestionare meniu wiki" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Mutare pachete de lucru" permission_protect_wiki_pages: "Protejare pagini wiki" permission_rename_wiki_pages: "Redenumește pagini wiki" @@ -4533,10 +4750,10 @@ ro: info: "Ștergerea repo-ului este o acțiune ireversibilă." info_not_managed: "Atenție: Această acțiune NU va șterge conținutul repo-ului, deoarece acesta nu este gestionat de OpenProject." managed_path_note: "Urmatorul director va fi şters: %{path}" - repository_verification: "Introduceţi identificatorul proiectului %{identifier} pentru a verifica ștergerea sa din repo." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Ești sigur că vrei să ştergi %{repository_type} din proiectul %{project_name}?" - subtitle_not_managed: "Sunteți sigur că doriţi să ştergeţi %{repository_type} %{url} din proiectul %{project_name}?" - title: "Ștergere %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Doriți eliminarea %{repository_type} corespunzător?" errors: build_failed: "Imposibil de creat repo-ul cu configuraţia selectată. %{reason}" @@ -4586,7 +4803,7 @@ ro: storage: not_available: "Consumul de spațiu de stocare nu este disponibil pentru acest repo." update_timeout: "Păstrează ultimele informații privind spațiul necesar pe disc pentru un depozit timp de N minute.\nDeoarece numărarea spațiului necesar pe disc al unui depozit poate fi costisitoare, crește această valoare pentru a reduce impactul asupra performanței." - oauth_application_details: "Valoarea secretă a clientului nu va mai fi accesibilă după ce închizi această fereastră. Te rog să copiezi aceste valori în setările Nextcloud OpenProject Integration:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Mergi la pagina setări" setup_documentation_details: "Dacă ai nevoie de ajutor pentru configurarea unui nou depozit de fișiere, consultă documentația: " setup_documentation_details_link_text: "Configurarea stocărilor de fișiere" @@ -4631,15 +4848,15 @@ ro: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Activați CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) origini permise" - setting_apiv3_cors_origins_text_html: > - Dacă CORS este activat, acestea sunt originile cărora li se permite accesul la OpenProject API.
Vă rugăm să consultați documentația privind antetul Origin pentru a specifica valorile așteptate. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Dimensiunea maximă a paginii API" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4736,7 +4953,7 @@ ro: setting_work_package_properties: "Proprietăți pachet de lucru" setting_work_package_startdate_is_adddate: "Folosire data curentă ca dată de început pentru pachetele de lucru noi" setting_work_packages_projects_export_limit: "Limita de export a pachetelor de lucru / proiectelor" - setting_journal_aggregation_time_minutes: "Acțiunile utilizatorilor agregate în cadrul" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Auditare utilizator, nume și adresă de email pentru toate cererile" setting_login_required: "Autentificare obligatorie" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4817,6 +5034,12 @@ ro: setting_welcome_text: "Text bloc \"bun venit\"" setting_welcome_title: "Titlu bloc \"bun venit\"" setting_welcome_on_homescreen: "Afişare bloc \"bun venit\" pe ecranul de start" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Mod de evidențiere implicit" setting_work_package_list_default_highlighted_attributes: "Atributele evidențiate implicit în linie" setting_working_days: "Zile lucrătoare" @@ -4983,10 +5206,12 @@ ro: section_work_week: "Săptămână de lucru" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "Nu ai drepturile necesare pentru a vizualiza acest widget." activities: enable_internal_comments: "Activează comentariile interne" - helper_text: "Comentariile interne permit unei echipe interne să comunice între ei în mod privat. Acestea sunt vizibile numai pentru rolurile selectate care au permisiunile necesare și nu vor fi vizibile public. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Text simplu" @@ -5108,6 +5333,10 @@ ro: text_plugin_assets_writable: "Se poate scrie în directorul de resurse pentru module" text_powered_by: "Propulsat de %{link}" text_project_identifier_info: "Doar litere mici (a-z), numere, cratime şi linii de subliniere sunt permise, trebuie să înceapă cu o literă mică." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reatribuire la pachetul de lucru:" text_regexp_multiline: 'Formula regex este aplicată într-un mod multilinie - de exemplu: ^---\s+' text_repository_usernames_mapping: "Selectați sau modificați contul OpenProject mapat la fiecare cont din istoricul repo-ului.\nUtilizatorii cu cont sau e-mail identic în OpenProject și repo sunt echivalați automat." @@ -5216,18 +5445,18 @@ ro: version_status_locked: "blocat" version_status_open: "deschis" note: Notă - note_password_login_disabled: "Autentificarea cu parolă a fost dezactivată prin %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Avertizare warning_attachments_not_saved: "Nu au putut fi salvate %{count} fișiere." - warning_imminent_user_limit: > - Ați invitat mai mulți utilizatori decât suportă planul dvs. actual. Este posibil ca utilizatorii invitați să nu se poată alătura mediului dumneavoastră OpenProject. Vă rugăm să vă actualizați planul sau să blocați utilizatorii existenți pentru a permite utilizatorilor invitați și înregistrați să se alăture. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | E-mailul de activare a expirat. Ți-am trimis unul nou la %{email}. Vă rugăm să faceți clic pe linkul din interiorul acestuia pentru a vă activa contul. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > Ai atins limita de utilizatori (%{current}/%{max} utilizatori activi). Te rog să contactezi sales@openproject.com pentru a vă actualiza planul ediției Enterprise și a adăuga utilizatori suplimentari. warning_protocol_mismatch_html: > @@ -5287,7 +5516,7 @@ ro: reminders: label_remind_at: "Dată" note_placeholder: "De ce setezi acest memento?" - create_success_message: "Memento setat cu succes. Vei primi o notificare pentru acest pachet de lucru %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5318,8 +5547,8 @@ ro: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5439,6 +5668,7 @@ ro: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - Strămoșul este invizibil din cauza lipsei de permisiuni. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Autorizare prealabilă" diff --git a/config/locales/crowdin/ru.yml b/config/locales/crowdin/ru.yml index 999ed1c8670..299f06f4c84 100644 --- a/config/locales/crowdin/ru.yml +++ b/config/locales/crowdin/ru.yml @@ -108,7 +108,7 @@ ru: jemalloc_allocator: Распределитель памяти Jemalloc journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + Действия пользователя над пакетом работ (изменение описания, статуса, значений или написание комментариев) группируются, если они выполнены в течение этого периода. Он также контролирует задержки уведомлений и [webhook](webhook_link). import: title: "Импорт" jira: @@ -391,11 +391,75 @@ ru: project_creation: "Создание проекта" notification_text_default: >

Здравствуйте,

Был создан новый проект: projectValue:name

Спасибо

+ work_packages_identifier: + page_header: + description: Выберите между базовыми числовыми идентификаторами пакетов работ или специфическими для проекта, которые добавляют идентификатор проекта к идентификатору пакета работ. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Проект + label_previous_identifier: Предыдущий идентификатор + label_autofixed_suggestion: Следующий идентификатор + label_example_work_package_id: Пример ID пакета работ + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + few: "... %{count} more projects" + many: "... %{count} more projects" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Переходы по умолчанию" user_author: "Пользователь является автором" user_assignee: "Пользователь является назначенным" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + few: "Remove %{count} statuses?" + many: "Remove %{count} statuses?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Войти и зарегистрироваться" announcements: @@ -618,6 +682,14 @@ ru: danger_dialog: confirmation_live_message_checked: "Кнопка для продолжения активна." confirmation_live_message_unchecked: "Кнопка для продолжения неактивна. Чтобы продолжить, поставьте галочку." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "URL, по которому будет доступен сервер OpenProject MCP. Требуется для настройки клиентов MCP." @@ -780,6 +852,11 @@ ru: description: > Проект будет доступен только участникам проекта в зависимости от их роли и соответствующих разрешений. Подпроекты не затрагиваются и имеют свои собственные настройки. change_identifier: Изменить идентификатор + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Выберите шаблоны, которые будут использоваться при создании новых подпунктов. @@ -1024,9 +1101,9 @@ ru: groups: member_in_these_groups: "Этот пользователь в настоящее время является членом следующих групп:" no_results_title_text: Этот пользователь в настоящее время не является членом какой-либо группы. - summary_with_more: Член %{names} и %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "ещё %{count}" - summary: Член %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Этот пользователь в данный момент в проекте не участвует. open_profile: "Открыть профиль" @@ -1081,6 +1158,66 @@ ru: user: "Теперь пользователь может войти в систему и получить доступ к %{project}. Тем временем вы уже можете планировать работу с этим пользователем и назначать пакеты работ." placeholder_user: "Теперь плейсхолдер может быть использован в %{project}. Тем временем вы уже можете планировать с этим пользователем и назначать рабочие пакеты." group: "Теперь группа является частью %{project}. Тем временем вы уже можете спланировать работу с этой группой и назначить пакеты работ." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + few: "%{count} working days" + many: "%{count} working days" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Текст" placeholder_users: @@ -1088,11 +1225,11 @@ ru: Вы не можете удалить пользователя-заполнителя. Вы не имеете права управлять участниками проектов, в которых состоит заполнитель. delete_tooltip: "Удалить пользователя-заполнителя" deletion_info: - heading: "Удалить плейсхолдер пользователя %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > Все вхождения пользователя плейсхолдера (например, как цессионария, ответственные или другие пользовательские значения) будут переназначены на учетную запись под названием "Удаленный пользователь". Так как данные каждого удаленного аккаунта переназначены на этот аккаунт, невозможно отличить данные пользователя от данных другого удаленного аккаунта. irreversible: "Это действие необратимо" - confirmation: "Введите имя пользователя %{name} для подтверждения удаления." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1126,9 +1263,10 @@ ru: status_excluded_from_totals_text: |- Отметьте эту опцию, чтобы исключить пакеты работ с этим статусом из итогов Работы, Оставшейся работы и % Завершения в иерархии. - status_percent_complete_text: |- - В режиме расчета прогресса на основе статуса % завершения пакета работ автоматически устанавливается на это значение, когда выбран этот статус. - Игнорируется в режиме, основанном на работе. + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work + package is automatically set to this value when this status is selected. + Ignored in work-based mode. status_readonly_html: | Установите этот флажок, чтобы пометить пакеты работ как доступные только для чтения. Никакие атрибуты не могут быть изменены за исключением статуса. @@ -1393,7 +1531,7 @@ ru: Регистрация пользователей ограничена для поставщика системы единого входа «%{name}». Попросите администратора активировать для вас учетную запись или изменить лимит самостоятельной регистрации для этого провайдера. login_with_auth_provider: "или войдите своей учетной записью" signup_with_auth_provider: "Или зарегистрируйтесь с помощью" - auth_source_login: Пожалуйста, авторизируйтесь как %{login} для активации вашей учетной записи. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Пожалуйста, авторизируйтесь для активации вашей учетной записи. actionview_instancetag_blank_option: "Пожалуйста, выберите" activemodel: @@ -1664,6 +1802,11 @@ ru: consented_at: "Согласен с" group: identity_url: "URL идентификации" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Оформление" header_alerts: "Оповещения" @@ -1672,8 +1815,6 @@ ru: button_update_user_information: "Обновить профиль" comments_sorting: "Отображение активности пакета работ, отсортированной по" disable_keyboard_shortcuts: "Отключить горячие клавиши" - disable_keyboard_shortcuts_caption_html: |- - Вы можете отключить горячие клавиши по умолчанию, если Вы пользуетесь программой чтения с экрана или хотите избежать случайного запуска действия с помощью сочетания клавиш. dismissed_enterprise_banners: "Скрытые корпоративные баннеры" impaired: "Режим отображения для людей с ограниченными возможностями" auto_hide_popups: "Автоматически скрывать успешные баннеры" @@ -1694,6 +1835,28 @@ ru: users/invitation/form_model: principal_type: "Тип приглашения" id_or_email: "Имя или email адрес" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Дата окончания" sharing: "Совместное использование" @@ -1748,6 +1911,8 @@ ru: before: "должны быть до %{date}." before_or_equal_to: "должны быть до или ровно %{date}." blank: "не может быть пустым." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "должно быть установлено свойство '%{property}'." cannot_delete_mapping: "требуется. Невозможно удалить." is_for_all_cannot_modify: "предназначено для всех проектов и поэтому не может быть изменено." @@ -1784,8 +1949,9 @@ ru: less_than_or_equal_to: "должно быть меньше или равно %{count}." not_available: "недоступно из-за конфигурации системы." not_deletable: "не может быть удален." + not_editable: "cannot be edited because it is already in effect." not_current_user: "не является текущим пользователем." - only_one_active_sprint_allowed: "для каждого проекта допускается только один активный спринт." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "не найдено." not_a_date: "не является допустимой датой." not_a_datetime: "дата и время не являются допустимыми." @@ -1816,6 +1982,10 @@ ru: не предоставляет "Secure Context". Используйте HTTPS или обратный адрес, например localhost. wrong_length: "неправильная длина (должно быть %{count} знаков)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1928,6 +2098,9 @@ ru: project_initiation_request_disabled: "Запрос на инициирование проекта отключен. Он должен быть включен, чтобы создать рабочий пакет артефактов." types: in_use_by_work_packages: "всё ещё используются в пакетах работ: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "Модуль '%{dependency}' ' должен быть включен, так как модуль '%{module}' зависит от него." format: "%{message}" @@ -2135,6 +2308,10 @@ ru: description: "«Подтвержденный пароль» должен совпадать с введенным «новым паролем»." status: invalid_on_create: "не является допустимым статусом для новых пользователей." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Пожалуйста, выберите по крайней мере одного пользователя или группу." role_blank: "требуется назначить." @@ -2437,8 +2614,8 @@ ru: Включение резервных копий позволит любому пользователю с необходимыми правами и этим ключом резервного копирования загрузить резервную копию, содержащую все данные этой установки OpenProject. Сюда входят данные всех других пользователей. info: > Для создания резервной копии Вам необходимо создать маркер резервного копирования. Каждый раз, когда вы хотите запросить резервную копию, вы должны предоставить этот маркер. Вы можете удалить маркер резервного копирования, чтобы запретить резервное копирование для этого пользователя. - verification: > - Введите %{word} , чтобы подтвердить %{action} маркер резервного копирования. + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: сбросить verification_word_create: создать warning: > @@ -2919,7 +3096,7 @@ ru: few: "Осталось %{count} дня для пробного токена %{trial_plan}" many: "Осталось %{count} дней для пробного токена %{trial_plan}" other: "Осталось %{count} дней для пробного токена %{trial_plan}" - description: "У вас есть доступ ко всем функциям %{trial_plan}." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "Вы запросили пробный токен, но запрос более недоступен. Пожалуйста, попробуйте еще раз." wait_for_confirmation: "Мы отправили вам письмо для подтверждения вашего адреса для получения токена пробной версии." @@ -2936,10 +3113,8 @@ ru: confirmation_subline: > Пожалуйста, проверьте папку "Входящие" вашего почтового ящика и выполните шаги по запуску бесплатной 14-дневной пробной версии. domain_caption: Токен будет действителен для настроенного в данный момент имени хоста. - receive_newsletter_html: > - Я хочу получить информационный бюллетень OpenProject. - consent_html: > - Я подтверждаю правила и условия пользования. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Отключено." @@ -3027,8 +3202,8 @@ ru: work_package_edit: "Пакет работ отредактирован" work_package_note: "Добавлено примечание к пакету работ" title: - project: "Проект: %{name}" - subproject: "Подпроект: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Экспорт" @@ -3279,6 +3454,7 @@ ru: Режим планирования автоматически настраивается с обновлением версии. totals_removed_from_childless_work_packages: >- При обновлении версии автоматически удаляются итоги работы и прогресса для неродительских пакетов работ. Это задача по обслуживанию, и её можно смело игнорировать. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Дочерние пакеты работ без Работы игнорируются. total_percent_complete_mode_changed_to_simple_average: >- @@ -3286,9 +3462,9 @@ ru: links: configuration_guide: "Руководство по конфигурации" get_in_touch: "У вас есть вопросы? Свяжитесь с нами." - instructions_after_registration: "Вы сможете войти как только ваша учетная запись будет активирована, нажав %{signin}." - instructions_after_logout: "Вы можете войти в снова, нажав %{signin}." - instructions_after_error: "Вы можете попробовать войти снова, нажав %{signin}. Если ошибка повторится, обратитесь к вашему администратору за помощью." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Искусственный интеллект (AI)" @@ -3480,6 +3656,8 @@ ru: label_calendar_show: "Показать календарь" label_category: "Категория" label_completed: Завершено + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Согласие пользователя" label_wiki_menu_item: Пункт меню wiki label_select_main_menu_item: Выберите новый пункт главного меню @@ -3646,6 +3824,7 @@ ru: label_subject_or_id: "Тема или ID" label_calendar_subscriptions: "Подписки на календарь" label_identifier: "Идентификатор" + label_project_identifier: "Project identifier" label_in: "в" label_in_less_than: "менее чем" label_in_more_than: "более чем" @@ -3779,11 +3958,13 @@ ru: label_news_view_all: "Посмотреть все новости" label_next: "Следующие" label_next_week: "На следующей неделе" + label_next_year: "Next year" label_no_change_option: "(Без изменений)" label_no_data: "Нет данных для отображения" label_no_due_date: "нет даты окончания" label_no_start_date: "нет даты начала" label_no_parent_page: "Без родительской страницы" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Уведомления" label_nothing_display: "Нет данных для отображения" label_nobody: "никто" @@ -3812,6 +3993,8 @@ ru: label_overall_activity: "Общая деятельность" label_overview: "Обзор" label_page_title: "Заголовок страницы" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "является частью" label_password_lost: "Забыли пароль?" label_password_rule_lowercase: "Нижний регистр" @@ -3838,6 +4021,7 @@ ru: label_preview_not_available: "Предварительный просмотр недоступен" label_previous: "Предыдущие" label_previous_week: "Предыдущая неделя" + label_previous_year: "Previous year" label_principal_invite_via_email: " или пригласить новых пользователей по электронной почте" label_principal_search: "Добавление существующих пользователей или групп" label_privacy_policy: "Политика конфиденциальности данных и безопасности" @@ -3949,6 +4133,7 @@ ru: label_start_to_start: "Пуск, чтобы начать" label_statistics: "Статистика" label_status: "Статус" + label_status_plural: "Statuses" label_storage_free_space: "Свободное дисковое пространство" label_storage_used_space: "Используемое дисковое пространство" label_storage_group: "Файловая система %{identifier}" @@ -3977,6 +4162,7 @@ ru: label_title: "Заголовок" label_projects_menu: "Проекты" label_today: "Сегодня" + label_today_capitalized: "Сегодня" label_token_version: "Версия токена" label_today_as_start_date: "Выберите сегодня в качестве даты начала." label_today_as_due_date: "Выберите сегодня в качестве даты окончания." @@ -3997,7 +4183,7 @@ ru: label_user: "Пользователь" label_user_and_permission: "Пользователи и права доступа" label_user_named: "Пользователь %{name}" - label_user_activity: "%{value} деятельности" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Анонимно" label_user_menu: "Пользовательское меню" label_user_new: "Новый пользователь" @@ -4084,6 +4270,21 @@ ru: one: "1 файл" other: "%{count} файлов" zero: "нет файлов" + label_x_days: + one: "1 day" + few: "%{count} days" + many: "%{count} days" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + few: "%{count} working days" + many: "%{count} working days" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + few: "Time off: %{count} working days" + many: "Time off: %{count} working days" + other: "Time off: %{count} working days" label_yesterday: "вчера" label_zen_mode: "Режим «Дзен» (только доска и часы)" label_role_type: "Тип" @@ -4092,6 +4293,22 @@ ru: label_not_changeable: "(неизменяемая)" label_global: "Глобальная" label_seeded_from_env_warning: Эта настройка была создана с использованием параметра среды окружения и не может быть отредактирована через пользовательский интерфейс. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Ошибка при выполнении макроса %{macro_name}" macro_unavailable: "Макрос %{macro_name} не может быть отображен." macros: @@ -4126,7 +4343,7 @@ ru: center: "В центр уведомлений" see_in_center: "Смотрите комментарий в центре уведомлений" settings: "Изменить настройки электронной почты" - salutation: "Здравствуйте, %{user}" + salutation: "Hello %{user}," salutation_full_name: "Полное имя" work_packages: created_at: "Создано %{timestamp} пользователем %{user} " @@ -4158,7 +4375,7 @@ ru: note: "Примечание: \"%{note}\"" sharing: work_packages: - allowed_actions: "Вы можете %{allowed_actions} этот пакет работ. Это может измениться в зависимости от роли и разрешений вашего проекта." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "Для доступа к этому пакету работ необходимо создать и активировать учетную запись на %{instance}." open_work_package: "Открыть пакет работ" subject: "Пакет работ #%{id} был разделен с вами" @@ -4257,8 +4474,9 @@ ru: roles: "Теперь у вас есть следующие роли:" mail_user_activation_limit_reached: subject: Достигнут лимит активации пользователя - message: | - Новый пользователь (%{email}) попытался создать учетную запись в OpenProject (%{host}). Запись пользователя не может быть активирована, так как достигнут лимит разрешенного числа пользователей. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "Для разрешения пользователю подписаться к вам необходимо: " a: "Обновите ваш платежный план ([here](upgrade_url))" #here turned into a link @@ -4444,6 +4662,12 @@ ru: permission_manage_versions: "Управление этапами" permission_manage_wiki: "Управление wiki" permission_manage_wiki_menu: "Управление меню wiki" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Переместить пакет работ" permission_protect_wiki_pages: "Защитить wiki-страницы" permission_rename_wiki_pages: "Переименование wiki-страниц" @@ -4587,10 +4811,10 @@ ru: info: "Удаление репозитория – действие необратимое." info_not_managed: "Примечание: Содержимое этого репозитория не будет удалено, так как оно не управляется OpenProject." managed_path_note: "Следующий каталог будет удален: %{path}" - repository_verification: "Введите идентификатор проекта %{identifier} для проверки удаления его репозитория." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Вы действительно хотите удалить %{repository_type} проект %{project_name}?" - subtitle_not_managed: "Вы действительно хотите удалить связанный %{repository_type} %{url} из %{project_name} проекта?" - title: "Удаление %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Удалить связанный %{repository_type}?" errors: build_failed: "Не удается создать репозиторий с выбранной конфигурацией. %{reason}" @@ -4640,7 +4864,7 @@ ru: storage: not_available: "Дисковое пространство не доступно для этого репозитория." update_timeout: "Хранить последнюю информацию о дисковом пространстве, необходимом для репозитория, N минут. Так как подсчет необходимого для репозитория дискового пространства могут быть дорогостоящим, увеличить это значение для снижения его влияния на производительность." - oauth_application_details: "Секретное значение клиента не будет доступно после закрытия этого окна. Пожалуйста, скопируйте это значение в настройки интеграции Nextcloud OpenProject:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Перейти на страницу настроек" setup_documentation_details: "Если вам нужна помощь в настройке нового хранилища файлов, пожалуйста, проверьте документацию: " setup_documentation_details_link_text: "Настройка файловых хранилищ" @@ -4685,15 +4909,15 @@ ru: setting_apiv3_cors_title: "Совместное использование ресурсов между источниками (Cross-Origin Resource Sharing, CORS)" setting_apiv3_cors_enabled: "Включить CORS" setting_apiv3_cors_origins: "Разделение ресурсов (CORS) разрешено в API V3" - setting_apiv3_cors_origins_text_html: > - Если CORS включен, то это источники, которым разрешен доступ к OpenProject API.
Пожалуйста, проверьте документацию по происхождению о том, как указывать ожидаемые значения. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Доступ на запись к атрибутам, доступным только для чтения" setting_apiv3_write_readonly_attributes_instructions: > Если эта опция включена, API позволит администраторам записывать статические атрибуты, доступные только для чтения, во время создания, такие как createdAt и author. setting_apiv3_write_readonly_attributes_warning: > Эта настройка используется, например, для импорта данных, но позволяет администраторам выдавать себя за других пользователей при создании элементов. Однако все запросы на создание регистрируются с указанием истинного автора. - setting_apiv3_write_readonly_attributes_additional: > - Более подробную информацию об атрибутах и поддерживаемых ресурсах см. на сайте %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Максимальный размер страницы API" setting_apiv3_max_page_size_instructions: > Установите максимальный размер страницы, на которую будет отвечать API. Запросы API, возвращающие больше значений на одной странице, выполнить будет невозможно. @@ -4790,7 +5014,7 @@ ru: setting_work_package_properties: "Свойства пакета работ" setting_work_package_startdate_is_adddate: "Использовать текущую дату как дату начала для новых пакетов работ" setting_work_packages_projects_export_limit: "Ограничение экспорта пакетов работ / проектов" - setting_journal_aggregation_time_minutes: "Действия пользователя агрегированы в" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Журналировать входное имя, имя и адрес электронной почты для всех запросов" setting_login_required: "Требуется аутентификация" setting_login_required_caption: "Когда флажок установлен, все запросы к приложению должны быть аутентифицированы." @@ -4871,6 +5095,12 @@ ru: setting_welcome_text: "Текст приветствия" setting_welcome_title: "Заголовок приветствия" setting_welcome_on_homescreen: "Показывать приветствие на домашней странице" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Способ выделения по умолчанию" setting_work_package_list_default_highlighted_attributes: "Выделенные встроенные атрибуты по умолчанию" setting_working_days: "Рабочие дни" @@ -5037,10 +5267,12 @@ ru: section_work_week: "Рабочая неделя" section_holidays_and_closures: "Праздничные и нерабочие дни" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "У вас нет необходимых прав для просмотра этой страницы." activities: enable_internal_comments: "Включить служебные комментарии" - helper_text: "Служебные комментарии позволяют команде общаться между собой в частном порядке. Эти комментарии видны только определённым ролям, которые имеют необходимые права доступа и не будут видны всем. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Обычный текст" @@ -5162,6 +5394,10 @@ ru: text_plugin_assets_writable: "Папка активов дополнения(plugin) доступна для записи" text_powered_by: "С использованием %{link}" text_project_identifier_info: "Разрешены только строчные буквы (a-z), цифры, тире и знаки подчеркивания, начинать с буквы нижнего регистра." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Переназначить для пакета работ:" text_regexp_multiline: 'Регулярное выражение применяется в многострочном режиме. Например: ^---\s+' text_repository_usernames_mapping: "Выберете или обновите пользователя OpenProject сопоставленного с именами пользователей найдеными в журнале репозитория. Пользователи с одинаковыми именами в OpenProject и в репозитории или почте будут сопоставлены автоматически." @@ -5271,17 +5507,17 @@ ru: version_status_locked: "заблокировано" version_status_open: "открыт" note: Заметка - note_password_login_disabled: "Вход по паролю был отключен через параметры %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Предупреждение warning_attachments_not_saved: "%{count} файл(-ов) не может быть сохранен(-о)." - warning_imminent_user_limit: > - Вы пригласили пользователей больше, чем позволяет ваш текущий тарифный план. Приглашенные пользователи смогут присоединиться к OpenProject. Пожалуйста обновите ваш план или блокируйте существующих пользователей для присоединения приглашенных и зарегистрированных пользователей. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | Срок ответа на письмо активации истек. Мы отправили вам новое на %{email}. Пожалуйста, нажмите на ссылку внутри него, чтобы активировать вашу учетную запись. warning_user_limit_reached: > Добавление дополнительных пользователей превысит текущий лимит. Пожалуйста, свяжитесь с администратором для увеличения лимита пользователей для обеспечения доступа к этому экземпляру внешних пользователей. - warning_user_limit_reached_admin: > - Добавление дополнительных пользователей превысит текущий лимит. Пожалуйста, обновите свой план , чтобы гарантировать, что внешние пользователи смогут получить доступ к этому экземпляру. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > Вы достигли вашего пользовательского предела (%{current}/%{max} активных пользователей). Пожалуйста, свяжитесь с sales@openproject.com для обновления своего плана до Корпоративной версии и добавьте дополнительных пользователей. warning_protocol_mismatch_html: > @@ -5341,7 +5577,7 @@ ru: reminders: label_remind_at: "Дата" note_placeholder: "Причина установки напоминания" - create_success_message: "Напоминание установлено успешно. Вы получите уведомление для этого пакета работ %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Напоминание успешно обновлено." success_deletion_message: "Напоминание успешно удалено." sharing: @@ -5372,8 +5608,8 @@ ru: text_user_limit_reached_admins: 'Добавление дополнительных пользователей превысит текущий лимит. Пожалуйста, обновите свой тарифный план , чтобы иметь возможность добавлять больше пользователей.' warning_user_limit_reached: > Добавление пользователей превысит текущий лимит. Обратитесь к администратору для увеличения лимита, чтобы внешние пользователи могли получить доступ к %{entity}. - warning_user_limit_reached_admin: > - Добавление дополнительных пользователей превысит текущий лимит. Пожалуйста, обновите свой план , чтобы гарантировать, что внешние пользователи смогут получить доступ к этому экземпляру. Обратитесь к администратору для увеличения лимита, чтобы внешние пользователи могли получить доступ к %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Пожалуйста, выберите пользователей, которыми предоставляется общий доступ для %{entity}." warning_locked_user: "Пользователь %{user} заблокирован, и им нельзя поделиться с другими пользователями." user_details: @@ -5493,6 +5729,7 @@ ru: project: Нераскрыто - Проект невидим из-за отсутствия разрешений. ancestor: Неизвестный - выбранный родитель невидим из-за отсутствия разрешений. definingProject: Нераскрыто - Проект невидим из-за отсутствия разрешений. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Предавторизация" diff --git a/config/locales/crowdin/rw.yml b/config/locales/crowdin/rw.yml index 9cb101a9340..953fae11eb8 100644 --- a/config/locales/crowdin/rw.yml +++ b/config/locales/crowdin/rw.yml @@ -108,7 +108,7 @@ rw: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ rw: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -607,6 +667,14 @@ rw: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -767,6 +835,11 @@ rw: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -999,9 +1072,9 @@ rw: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: This user is currently not a member of a project. open_profile: "Open profile" @@ -1056,6 +1129,64 @@ rw: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Text" placeholder_users: @@ -1063,11 +1194,11 @@ rw: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1099,8 +1230,8 @@ rw: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1365,7 +1496,7 @@ rw: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "or sign in with your existing account" signup_with_auth_provider: "or sign up using" - auth_source_login: Please login as %{login} to activate your account. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Please login to activate your account. actionview_instancetag_blank_option: "Please select" activemodel: @@ -1636,6 +1767,11 @@ rw: consented_at: "Consented at" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1644,8 +1780,6 @@ rw: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Accessibility mode" auto_hide_popups: "Automatically hide success banners" @@ -1666,6 +1800,28 @@ rw: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Finish date" sharing: "Sharing" @@ -1720,6 +1876,8 @@ rw: before: "must be before %{date}." before_or_equal_to: "must be before or equal to %{date}." blank: "can't be blank." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1756,8 +1914,9 @@ rw: less_than_or_equal_to: "must be less than or equal to %{count}." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is not the current user." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "is not a valid date." not_a_datetime: "is not a valid date time." @@ -1788,6 +1947,10 @@ rw: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "is the wrong length (should be %{count} characters)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1898,6 +2061,9 @@ rw: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "still in use by work packages: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2103,6 +2269,10 @@ rw: description: "'Password confirmation' should match the input in the 'New password' field." status: invalid_on_create: "is not a valid status for new users." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Please choose at least one user or group." role_blank: "need to be assigned." @@ -2369,7 +2539,7 @@ rw: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: create @@ -2809,7 +2979,7 @@ rw: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2826,10 +2996,8 @@ rw: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2917,8 +3085,8 @@ rw: work_package_edit: "Work Package edited" work_package_note: "Work Package note added" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Export" @@ -3169,6 +3337,7 @@ rw: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3176,9 +3345,9 @@ rw: links: configuration_guide: "Configuration guide" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "You can sign in as soon as your account has been activated by clicking %{signin}." - instructions_after_logout: "You can sign in again by clicking %{signin}." - instructions_after_error: "You can try to sign in again by clicking %{signin}. If the error persists, ask your admin for help." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3370,6 +3539,8 @@ rw: label_calendar_show: "Show Calendar" label_category: "Category" label_completed: Completed + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "User Consent" label_wiki_menu_item: Wiki menu item label_select_main_menu_item: Select new main menu item @@ -3536,6 +3707,7 @@ rw: label_subject_or_id: "Subject or ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Identifier" + label_project_identifier: "Project identifier" label_in: "in" label_in_less_than: "in less than" label_in_more_than: "in more than" @@ -3669,11 +3841,13 @@ rw: label_news_view_all: "View all news" label_next: "Next" label_next_week: "Next week" + label_next_year: "Next year" label_no_change_option: "(No change)" label_no_data: "No data to display" label_no_due_date: "no finish date" label_no_start_date: "no start date" label_no_parent_page: "No parent page" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Nothing to display" label_nobody: "nobody" @@ -3702,6 +3876,8 @@ rw: label_overall_activity: "Overall activity" label_overview: "Overview" label_page_title: "Page title" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "part of" label_password_lost: "Forgot your password?" label_password_rule_lowercase: "Lowercase" @@ -3728,6 +3904,7 @@ rw: label_preview_not_available: "Preview not available" label_previous: "Previous" label_previous_week: "Previous week" + label_previous_year: "Previous year" label_principal_invite_via_email: " or invite new users via email" label_principal_search: "Add existing users or groups" label_privacy_policy: "Data privacy and security policy" @@ -3839,6 +4016,7 @@ rw: label_start_to_start: "start to start" label_statistics: "Statistics" label_status: "Status" + label_status_plural: "Statuses" label_storage_free_space: "Remaining disk space" label_storage_used_space: "Used disk space" label_storage_group: "Storage filesystem %{identifier}" @@ -3867,6 +4045,7 @@ rw: label_title: "Title" label_projects_menu: "Projects" label_today: "today" + label_today_capitalized: "Today" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3887,7 +4066,7 @@ rw: label_user: "User" label_user_and_permission: "Users and permissions" label_user_named: "User %{name}" - label_user_activity: "%{value}'s activity" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonymous" label_user_menu: "User menu" label_user_new: "New user" @@ -3974,6 +4153,15 @@ rw: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "yesterday" label_zen_mode: "Zen mode" label_role_type: "Type" @@ -3982,6 +4170,22 @@ rw: label_not_changeable: "(not changeable)" label_global: "Global" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Error executing the macro %{macro_name}" macro_unavailable: "Macro %{macro_name} cannot be displayed." macros: @@ -4016,7 +4220,7 @@ rw: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4046,7 +4250,7 @@ rw: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4145,7 +4349,7 @@ rw: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: User activation limit reached - message: | + message_html: | A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). The user cannot activate their account since the user limit has been reached. steps: @@ -4331,6 +4535,12 @@ rw: permission_manage_versions: "Manage versions" permission_manage_wiki: "Manage wiki" permission_manage_wiki_menu: "Manage wiki menu" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Move work packages" permission_protect_wiki_pages: "Protect wiki pages" permission_rename_wiki_pages: "Rename wiki pages" @@ -4476,10 +4686,10 @@ rw: info: "Deleting the repository is an irreversible action." info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." managed_path_note: "The following directory will be erased: %{path}" - repository_verification: "Enter the project's identifier %{identifier} to verify the deletion of its repository." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Do you really want to delete the %{repository_type} of the project %{project_name}?" - subtitle_not_managed: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" - title: "Delete the %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Remove the linked %{repository_type}?" errors: build_failed: "Unable to create the repository with the selected configuration. %{reason}" @@ -4529,7 +4739,7 @@ rw: storage: not_available: "Disk storage consumption is not available for this repository." update_timeout: "Keep the last required disk space information for a repository for N minutes.\nAs counting the required disk space of a repository may be costly, increase this value to reduce performance impact." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4574,15 +4784,15 @@ rw: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4679,7 +4889,7 @@ rw: setting_work_package_properties: "Work package properties" setting_work_package_startdate_is_adddate: "Use current date as start date for new work packages" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Log user login, name, and mail address for all requests" setting_login_required: "Authentication required" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4760,6 +4970,12 @@ rw: setting_welcome_text: "Welcome block text" setting_welcome_title: "Welcome block title" setting_welcome_on_homescreen: "Display welcome block on homescreen" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Working days" @@ -4926,10 +5142,12 @@ rw: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Plain text" @@ -5051,6 +5269,10 @@ rw: text_plugin_assets_writable: "Plugin assets directory writable" text_powered_by: "Powered by %{link}" text_project_identifier_info: "Only lower case letters (a-z), numbers, dashes and underscores are allowed, must start with a lower case letter." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassign to work package:" text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' text_repository_usernames_mapping: "Select or update the OpenProject user mapped to each username found in the repository log.\nUsers with the same OpenProject and repository username or email are automatically mapped." @@ -5158,18 +5380,18 @@ rw: version_status_locked: "locked" version_status_open: "open" note: Note - note_password_login_disabled: "Password login has been disabled by %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Warning warning_attachments_not_saved: "%{count} file(s) could not be saved." - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5229,7 +5451,7 @@ rw: reminders: label_remind_at: "Date" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5260,8 +5482,8 @@ rw: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5381,6 +5603,7 @@ rw: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/si.yml b/config/locales/crowdin/si.yml index 4c888d8305a..60c4634a21a 100644 --- a/config/locales/crowdin/si.yml +++ b/config/locales/crowdin/si.yml @@ -108,7 +108,7 @@ si: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ si: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -607,6 +667,14 @@ si: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -767,6 +835,11 @@ si: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -999,9 +1072,9 @@ si: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: මෙම පරිශීලකයා දැනට ව්යාපෘතියක සාමාජිකයෙකු නොවේ. open_profile: "Open profile" @@ -1056,6 +1129,64 @@ si: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "පෙළ" placeholder_users: @@ -1063,11 +1194,11 @@ si: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1099,8 +1230,8 @@ si: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1365,7 +1496,7 @@ si: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "හෝ ඔබගේ පවතින ගිණුම සමඟ පුරනය වන්න" signup_with_auth_provider: "හෝ භාවිතා කර ලියාපදිංචි වන්න" - auth_source_login: කරුණාකර ඔබගේ ගිණුම සක්රිය කිරීමට %{login} ලෙස ලොගින් වන්න. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: කරුණාකර ඔබගේ ගිණුම සක්රිය කිරීමට පුරනය වන්න. actionview_instancetag_blank_option: "කරුණාකර තෝරන්න" activemodel: @@ -1636,6 +1767,11 @@ si: consented_at: "එකඟ විය" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1644,8 +1780,6 @@ si: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "ප්රවේශ්යතා ප්රකාරය" auto_hide_popups: "Automatically hide success banners" @@ -1666,6 +1800,28 @@ si: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "අවසන් දිනය" sharing: "බෙදාගැනීම" @@ -1720,6 +1876,8 @@ si: before: "must be before %{date}." before_or_equal_to: "%{date}ට පෙර හෝ සමාන විය යුතුය." blank: "හිස් විය නොහැක." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1756,8 +1914,9 @@ si: less_than_or_equal_to: "%{count}ට වඩා අඩු හෝ සමාන විය යුතුය." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is not the current user." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "වලංගු දිනයක් නොවේ." not_a_datetime: "වලංගු දිනය කාලය නොවේ." @@ -1788,6 +1947,10 @@ si: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "වැරදි දිග (අක්ෂර %{count} විය යුතුය)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1898,6 +2061,9 @@ si: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "වැඩ පැකේජ මගින් තවමත් භාවිතා වේ: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2103,6 +2269,10 @@ si: description: "'මුරපදය තහවුරු කිරීම' 'නව මුරපදය' ක්ෂේත්රයේ ආදානයට ගැලපේ." status: invalid_on_create: "නව පරිශීලකයින් සඳහා වලංගු තත්වයක් නොවේ." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "කරුණාකර අවම වශයෙන් එක් පරිශීලකයෙකු හෝ කණ්ඩායමක් තෝරන්න." role_blank: "පැවරිය යුතුය." @@ -2369,7 +2539,7 @@ si: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: create @@ -2809,7 +2979,7 @@ si: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2826,10 +2996,8 @@ si: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2917,8 +3085,8 @@ si: work_package_edit: "සංස්කරණය කරන ලද වැඩ පැකේජය" work_package_note: "වැඩ පැකේජ සටහන එකතු" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "අපනයන" @@ -3169,6 +3337,7 @@ si: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3176,9 +3345,9 @@ si: links: configuration_guide: "වින්යාස මාර්ගෝපදේශය" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "%{signin}ක්ලික් කිරීමෙන් ඔබගේ ගිණුම සක්රිය කර ඇති වහාම ඔබට පුරනය විය හැකිය." - instructions_after_logout: "%{signin}ක්ලික් කිරීමෙන් ඔබට නැවත පුරනය විය හැකිය." - instructions_after_error: "%{signin}ක්ලික් කිරීමෙන් ඔබට නැවත පුරනය වීමට උත්සාහ කළ හැකිය. දෝෂය නොනැසී පවතී නම්, ඔබේ පරිපාලක උදව් ඉල්ලා සිටින්න." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3370,6 +3539,8 @@ si: label_calendar_show: "දින දර්ශනය පෙන්වන්න" label_category: "ප්රවර්ගය" label_completed: Completed + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "පරිශීලක කැමැත්ත" label_wiki_menu_item: විකි මෙනු අයිතමය label_select_main_menu_item: නව ප්රධාන මෙනු අයිතමය තෝරන්න @@ -3536,6 +3707,7 @@ si: label_subject_or_id: "විෂය හෝ හැඳුනුම්පත" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "හඳුනාගැනීමේ" + label_project_identifier: "Project identifier" label_in: "තුළ" label_in_less_than: "වඩා අඩු" label_in_more_than: "වඩා වැඩි" @@ -3669,11 +3841,13 @@ si: label_news_view_all: "සියලු පුවත් බලන්න" label_next: "ඊළඟ" label_next_week: "ලබන සතියේ" + label_next_year: "Next year" label_no_change_option: "(වෙනසක් නැත)" label_no_data: "ප්රදර්ශනය කිරීමට දත්ත නොමැත" label_no_due_date: "no finish date" label_no_start_date: "ආරම්භක දිනයක් නැත" label_no_parent_page: "මව් පිටුවක් නැත" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "ප්රදර්ශනය කිරීමට කිසිවක් නැත" label_nobody: "කිසිවෙක් නැත" @@ -3702,6 +3876,8 @@ si: label_overall_activity: "සමස්ත ක්රියාකාරකම්" label_overview: "දළ විශ්ලේෂණය" label_page_title: "පිටු මාතෘකාව" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "කොටසක්" label_password_lost: "ඔබගේ මුරපදය අමතකද?" label_password_rule_lowercase: "සිම්පල්" @@ -3728,6 +3904,7 @@ si: label_preview_not_available: "Preview not available" label_previous: "පසුගිය" label_previous_week: "පසුගිය සතියේ" + label_previous_year: "Previous year" label_principal_invite_via_email: " හෝ විද්යුත් තැපෑල හරහා නව පරිශීලකයින්ට ආරාධනා කරන්න" label_principal_search: "දැනට පවතින පරිශීලකයින් හෝ කණ්ඩායම් එකතු කරන්න" label_privacy_policy: "දත්ත රහස්යතාවය සහ ආරක්ෂක ප්රතිපත්තිය" @@ -3839,6 +4016,7 @@ si: label_start_to_start: "ආරම්භ කිරීමට පටන් ගන්න" label_statistics: "සංඛ්යා ලේඛන" label_status: "තත්වය" + label_status_plural: "Statuses" label_storage_free_space: "ඉතිරි තැටි අවකාශය" label_storage_used_space: "භාවිතා තැටි අවකාශය" label_storage_group: "ගබඩා ගොනු පද්ධතිය %{identifier}" @@ -3867,6 +4045,7 @@ si: label_title: "මාතෘකාව" label_projects_menu: "ව්‍යාපෘති" label_today: "අද" + label_today_capitalized: "Today" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3887,7 +4066,7 @@ si: label_user: "පරිශීලක" label_user_and_permission: "Users and permissions" label_user_named: "පරිශීලක %{name}" - label_user_activity: "%{value}ගේ ක්රියාකාරකම්" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "නිර්නාමික" label_user_menu: "User menu" label_user_new: "නව පරිශීලක" @@ -3974,6 +4153,15 @@ si: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "ඊයේ" label_zen_mode: "Zen mode" label_role_type: "වර්ගය" @@ -3982,6 +4170,22 @@ si: label_not_changeable: "(not changeable)" label_global: "Global" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "සාර්ව ක්රියාත්මක කිරීමේ දෝෂය %{macro_name}" macro_unavailable: "සාර්ව %{macro_name} පෙන්විය නොහැක." macros: @@ -4016,7 +4220,7 @@ si: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4046,7 +4250,7 @@ si: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4145,9 +4349,9 @@ si: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: පරිශීලක සක්රීය කිරීමේ සීමාව ළඟා විය - message: | - නව පරිශීලකයෙකු (%{email}) ඔබ කළමනාකරණය කරන OpenProject පරිසරයක් මත ගිණුමක් නිර්මාණය කිරීමට උත්සාහ කළේය (%{host}). - පරිශීලක සීමාව ළඟා වී ඇති බැවින් පරිශීලකයාට ඔවුන්ගේ ගිණුම සක්රිය කළ නොහැක. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "පරිශීලකයාට පුරනය වීමට ඉඩ දීම සඳහා ඔබට හැකිය: " a: "ඔබගේ ගෙවීම් සැලැස්ම වැඩි දියුණු කරන්න ([here](upgrade_url))" #here turned into a link @@ -4331,6 +4535,12 @@ si: permission_manage_versions: "අනුවාද කළමනාකරණය කරන්න" permission_manage_wiki: "විකි කළමනාකරණය කරන්න" permission_manage_wiki_menu: "විකි මෙනුව කළමනාකරණය කරන්න" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "වැඩ පැකේජ ගෙනයාම" permission_protect_wiki_pages: "විකි පිටු ආරක්ෂා කරන්න" permission_rename_wiki_pages: "විකි පිටු නැවත නම් කරන්න" @@ -4476,10 +4686,10 @@ si: info: "ගබඩාව මකා දැමීම ආපසු හැරවිය නොහැකි ක්රියාවකි." info_not_managed: "සටහන: මෙය OpenProject විසින් කළමනාකරණය නොකරන බැවින් මෙම ගබඩාවේ අන්තර්ගතය මකා නොදමනු ඇත." managed_path_note: "පහත සඳහන් බහලුම මකා දමනු ඇත: %{path}" - repository_verification: "ව්යාපෘතියේ හඳුනාගැනීමේ %{identifier} ඇතුල් කරන්න එහි ගබඩාව මකාදැමීම සත්යාපනය කිරීමට." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "%{project_name}ව්යාපෘතියේ %{repository_type} මකා දැමීමට ඔබට ඇත්තටම අවශ්යද?" - subtitle_not_managed: "%{project_name}ව්යාපෘතියෙන් සම්බන්ධිත %{repository_type} %{url} ඉවත් කිරීමට ඔබට සැබවින්ම අවශ්යද?" - title: "%{repository_type}මකන්න" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "සම්බන්ධිත %{repository_type}ඉවත් කරන්න?" errors: build_failed: "තෝරාගත් වින්යාසය සමඟ ගබඩාව නිර්මාණය කිරීමට නොහැකි විය. %{reason}" @@ -4529,7 +4739,7 @@ si: storage: not_available: "තැටි ගබඩා පරිභෝජනය මෙම ගබඩාව සඳහා ලබා ගත නොහැක." update_timeout: "එන් විනාඩි සඳහා ගබඩාවක් සඳහා අවසන් අවශ්ය තැටි ඉඩ තොරතුරු තබා ගන්න.\nගබඩාවේ අවශ්ය තැටි අවකාශය ගණන් කිරීම මිල අධික විය හැකි බැවින්, කාර්ය සාධන බලපෑම අඩු කිරීම සඳහා මෙම අගය වැඩි කරන්න." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4574,15 +4784,15 @@ si: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4679,7 +4889,7 @@ si: setting_work_package_properties: "වැඩ පැකේජය ගුණ" setting_work_package_startdate_is_adddate: "නව වැඩ පැකේජ සඳහා ආරම්භක දිනය ලෙස වත්මන් දිනය භාවිතා කරන්න" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "සියලුම ඉල්ලීම් සඳහා පරිශීලක පිවිසුම, නම සහ තැපැල් ලිපිනය ලොග් වන්න" setting_login_required: "සත්යාපන අවශ්ය" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4760,6 +4970,12 @@ si: setting_welcome_text: "බ්ලොක් පෙළ සාදරයෙන් පිළිගනිමු" setting_welcome_title: "වාරණ මාතෘකාව සාදරයෙන් පිළිගනිමු" setting_welcome_on_homescreen: "homescreen මත ප්රදර්ශනය පිළිගැනීමේ වාරණ" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "පෙරනිමි ඉස්මතු මාදිලිය" setting_work_package_list_default_highlighted_attributes: "පෙරනිමි පේළිගත උද්දීපිත ගුණාංග" setting_working_days: "Working days" @@ -4926,10 +5142,12 @@ si: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "මාර්ක්ඩවුන්" plain: "සරල පෙළ" @@ -5051,6 +5269,10 @@ si: text_plugin_assets_writable: "ප්ලගිනය වත්කම් නාමාවලිය ලිවිය හැකි" text_powered_by: "%{link}විසින් තල්ලු" text_project_identifier_info: "අඩු සිද්ධි අකුරු (a-z), අංක, ඩෂ් සහ යටි ඉරි වලට පමණක් අවසර ඇත, අඩු සිද්ධි අකුරකින් ආරම්භ කළ යුතුය." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "වැඩ පැකේජයට නැවත පැවරීම:" text_regexp_multiline: 'රීජෙක්ස් බහු රේඛා මාදිලියක යොදනු ලැබේ. උදා: ^ —\ s+' text_repository_usernames_mapping: "ගබඩාවේ ඇති එක් එක් පරිශීලක නාමයට සිතියම් ගත කර ඇති OpenProject පරිශීලකයා තෝරන්න හෝ යාවත්කාලීන කරන්න.\nඑකම OpenProject සහ ගබඩාව පරිශීලක නාමය හෝ විද්යුත් තැපෑල සහිත පරිශීලකයින් ස්වයංක්රීයව සිතියම් ගත කරනු ලැබේ." @@ -5158,18 +5380,18 @@ si: version_status_locked: "අගුළු දමා ඇත" version_status_open: "විවෘත" note: සටහන - note_password_login_disabled: "මුරපද පිවිසුම අක්රීය කර ඇත %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: අවවාදය warning_attachments_not_saved: "%{count} ගොනුව (ය) සුරැකිය නොහැකි විය." - warning_imminent_user_limit: > - ඔබගේ වර්තමාන සැලැස්මට සහය දක්වන වඩා ඔබට වැඩි පරිශීලකයින්ට ආරාධනා කළේය. ආරාධනා කළ පරිශීලකයින්ට ඔබේ OpenProject පරිසරයට සම්බන්ධ වීමට නොහැකි විය හැකිය. කරුණාකර ඔබගේ සැලැස්ම උත්ශ්රේණි කිරීම හෝ ආරාධනා කරන ලද සහ ලියාපදිංචි පරිශීලකයින්ට සම්බන්ධ වීමට ඉඩ දීම සඳහා දැනට පවතින පරිශීලකයින් අවහිර කරන්න. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | සක්රිය කිරීමේ විද්යුත් තැපෑල කල් ඉකුත් වී ඇත. අපි ඔබට අලුත් එකක් %{email}වෙත යැව්වා. කරුණාකර ඔබගේ ගිණුම සක්රිය කිරීම සඳහා එහි ඇතුළත සබැඳිය ක්ලික් කරන්න. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5229,7 +5451,7 @@ si: reminders: label_remind_at: "දිනය" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5260,8 +5482,8 @@ si: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5381,6 +5603,7 @@ si: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "පූර්ව අවසරය" diff --git a/config/locales/crowdin/sk.yml b/config/locales/crowdin/sk.yml index a31637cb0c3..3252351231b 100644 --- a/config/locales/crowdin/sk.yml +++ b/config/locales/crowdin/sk.yml @@ -108,7 +108,7 @@ sk: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -391,11 +391,75 @@ sk: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + few: "... %{count} more projects" + many: "... %{count} more projects" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + few: "Remove %{count} statuses?" + many: "Remove %{count} statuses?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -619,6 +683,14 @@ sk: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -781,6 +853,11 @@ sk: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -1025,9 +1102,9 @@ sk: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Tento používateľ nie je v súčasnosti členom projektu. open_profile: "Open profile" @@ -1082,6 +1159,66 @@ sk: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + few: "%{count} working days" + many: "%{count} working days" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Text" placeholder_users: @@ -1089,11 +1226,11 @@ sk: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1127,8 +1264,8 @@ sk: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1395,7 +1532,7 @@ sk: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "alebo sa prihláste so svojím existujúcim účtom" signup_with_auth_provider: "alebo sa zaregistrujte pomocou" - auth_source_login: Prihláste sa ako %{login} pre aktiváciu účtu. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Prihláste sa aby ste aktivovali svoj účet. actionview_instancetag_blank_option: "Prosím, vyberte" activemodel: @@ -1666,6 +1803,11 @@ sk: consented_at: "Povolené na" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1674,8 +1816,6 @@ sk: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Režim zjednodušeného ovládania" auto_hide_popups: "Automatically hide success banners" @@ -1696,6 +1836,28 @@ sk: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Dátum dokončenia" sharing: "Zdieľanie" @@ -1750,6 +1912,8 @@ sk: before: "musí byť pred termínom %{date}." before_or_equal_to: "musí byť pred alebo rovné termínu %{date}." blank: "nemôže byť prázdne." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1786,8 +1950,9 @@ sk: less_than_or_equal_to: "musí byť menšie alebo rovné ako %{count}." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is not the current user." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "nie je platný dátum." not_a_datetime: "nie je platný dátum a čas." @@ -1818,6 +1983,10 @@ sk: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "má chybnú dĺžku (správne má byť %{count} znakov)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1930,6 +2099,9 @@ sk: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "stále používané týmito pracovnými balíkmi: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2137,6 +2309,10 @@ sk: description: "\"Potvrdenie hesla\" musí byť rovnaké ako v poli \"Nové heslo\"." status: invalid_on_create: "nie je platný stav pre nových používateľov." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Vyberte aspoň jedného používateľa alebo skupinu." role_blank: "musí byť pridelené." @@ -2439,7 +2615,7 @@ sk: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: create @@ -2921,7 +3097,7 @@ sk: few: "%{count} days left of %{trial_plan} trial token" many: "%{count} days left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2938,10 +3114,8 @@ sk: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -3029,8 +3203,8 @@ sk: work_package_edit: "Pracovný balíček upravený" work_package_note: "Poznámka pracovného balíčka pridaná" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Exportovať" @@ -3281,6 +3455,7 @@ sk: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3288,9 +3463,9 @@ sk: links: configuration_guide: "Sprievodca konfiguráciou" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "Môžete prihlásiť ihneď potom, ako váš účet bude aktivovaný. Akciu iniciujete kliknutí na %{signin}." - instructions_after_logout: "Môžete znovu prihlásiť kliknutím na tlačidlo %{signin}." - instructions_after_error: "Skúste sa znova prihlásiť kliknutím na %{signin}. Ak chyba pretrváva, požiadajte správcu o pomoc." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3482,6 +3657,8 @@ sk: label_calendar_show: "Zobraziť kalendár" label_category: "Kategória" label_completed: Completed + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Súhlas užívateľa" label_wiki_menu_item: Položka menu wiki label_select_main_menu_item: Vyberte novú položku hlavného menu @@ -3648,6 +3825,7 @@ sk: label_subject_or_id: "Predmet alebo ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Identifikátor" + label_project_identifier: "Project identifier" label_in: "v" label_in_less_than: "v menej ako" label_in_more_than: "vo viac ako" @@ -3781,11 +3959,13 @@ sk: label_news_view_all: "Zobraziť všetky novinky" label_next: "Ďalšie" label_next_week: "Budúci týždeň" + label_next_year: "Next year" label_no_change_option: "(Bez zmeny)" label_no_data: "Žiadne dáta na zobrazenie" label_no_due_date: "no finish date" label_no_start_date: "žiadny dátum začatia" label_no_parent_page: "Žiadna nadradená stránka" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Nič na zobrazenie" label_nobody: "nikto" @@ -3814,6 +3994,8 @@ sk: label_overall_activity: "Celková aktivita" label_overview: "Prehľad" label_page_title: "Názov stránky" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "súčasťou" label_password_lost: "Zabudli ste heslo?" label_password_rule_lowercase: "Malé písmená" @@ -3840,6 +4022,7 @@ sk: label_preview_not_available: "Preview not available" label_previous: "Predošlý" label_previous_week: "Predchádzajúci týždeň" + label_previous_year: "Previous year" label_principal_invite_via_email: " alebo pozvať nových užívateľov prostredníctvom e-mailu" label_principal_search: "Pridanie existujúcich užívateľov alebo skupín" label_privacy_policy: "Ochrana osobných údajov a bezpečnostná politika" @@ -3951,6 +4134,7 @@ sk: label_start_to_start: "od začiatku do začiatku" label_statistics: "Štatistiky" label_status: "Stav" + label_status_plural: "Statuses" label_storage_free_space: "Zostávajúce miesto na disku" label_storage_used_space: "Použité miesto na disku" label_storage_group: "Súborový systém úložiska %{identifier}" @@ -3979,6 +4163,7 @@ sk: label_title: "Nadpis" label_projects_menu: "Projekty" label_today: "dnes" + label_today_capitalized: "Dnes" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3999,7 +4184,7 @@ sk: label_user: "Užívateľ" label_user_and_permission: "Users and permissions" label_user_named: "Užívateľ %{name}" - label_user_activity: "Aktivita používateľa %{value}" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonymný" label_user_menu: "User menu" label_user_new: "Nový uživateľ" @@ -4086,6 +4271,21 @@ sk: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + few: "%{count} days" + many: "%{count} days" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + few: "%{count} working days" + many: "%{count} working days" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + few: "Time off: %{count} working days" + many: "Time off: %{count} working days" + other: "Time off: %{count} working days" label_yesterday: "včera" label_zen_mode: "Zen mode" label_role_type: "Typ" @@ -4094,6 +4294,22 @@ sk: label_not_changeable: "(nemodifikovateľná)" label_global: "Globálna" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Pri spúšťaní makra sa vyskytla chyba %{macro_name}" macro_unavailable: "Makro %{macro_name} sa nedá zobraziť." macros: @@ -4128,7 +4344,7 @@ sk: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4160,7 +4376,7 @@ sk: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4259,8 +4475,9 @@ sk: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: Bol dosiahnutý limit počtu užívateľov - message: | - Nový užívateľ (%{email}) se pokúsil vytvoriť účet v prostredí OpenProject spravovanom Vami (%{host}). Užívateľ nemôže aktivovať svoj účet, pretože bol dosiahnutý limit počtu užívateľov. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "Môžete vykonať nasledujúce kroky, aby ste mohli používateľa prihlásiť: " a: "Upgrade plánu platieb ([here](upgrade_url))" #here turned into a link @@ -4446,6 +4663,12 @@ sk: permission_manage_versions: "Spravovať verzie" permission_manage_wiki: "Spravovať Wiki" permission_manage_wiki_menu: "Správa wiki menu" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Presunúť pracovné balíčky" permission_protect_wiki_pages: "Ochrana wikistránok" permission_rename_wiki_pages: "Premenovanie wikistránok" @@ -4591,10 +4814,10 @@ sk: info: "Vymazanie úložiska je nezvratná akcia." info_not_managed: "Poznámka: Obsah úložiska sa neodstráni, pretože ide o externé úložisko." managed_path_note: "Nasledujúci adresár bude vymazaný: %{path}" - repository_verification: "Zadajte identifikátor projektu %{identifier} na overenie vymazania jeho úložiska." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Naozaj chcete odstrániť %{repository_type} projektu %{project_name}?" - subtitle_not_managed: "Naozaj chcete odstrániť odkaz %{repository_type} %{url} z projektu %{project_name}?" - title: "Zmazať %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Zmazať prepojenie %{repository_type}?" errors: build_failed: "Nepodarilo sa vytvoriť úložisko s vybranou konfiguráciou. %{reason}" @@ -4644,7 +4867,7 @@ sk: storage: not_available: "Spotreba úložného priestoru pre toto úložisko nie je k dispozícii." update_timeout: "Uchovávajte posledné požadované informácie o diskovom priestore pre úložisko po dobu minúty N.\nKeď je potrebné počítať požadovaný priestor na disku úložiska, môžete túto hodnotu zvýšiť, aby sa znížil vplyv na výkon." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4689,15 +4912,15 @@ sk: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4794,7 +5017,7 @@ sk: setting_work_package_properties: "Vlastnosti pracovného balíčka" setting_work_package_startdate_is_adddate: "Použiť aktuálny dátum ako počiatočný dátum pre nové pracovné balíčky" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Zaznamenať prihlasovacie meno používateľa, meno a e-mailovú adresu pre všetky požiadavky" setting_login_required: "Vyžaduje sa overenie" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4875,6 +5098,12 @@ sk: setting_welcome_text: "Text pre uvítací blok" setting_welcome_title: "Názov uvítacieho bloku" setting_welcome_on_homescreen: "Zobraziť uvítací blok na úvodnej obrazovke" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Predvolený režim zvýraznenia" setting_work_package_list_default_highlighted_attributes: "Predvolené inline zvýraznené atribúty" setting_working_days: "Working days" @@ -5041,10 +5270,12 @@ sk: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Obyčajný text" @@ -5166,6 +5397,10 @@ sk: text_plugin_assets_writable: "Povolený zápis do priečinka pre pluginy" text_powered_by: "Powered by %{link}" text_project_identifier_info: "Sú povolené len malé písmená (a-z), čísla, pomlčky a podčiarkovníky, hodnota musí začínať malým písmenom." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Zaradenie do pracovného balíčka:" text_regexp_multiline: 'Regex je aplikovaný v režime s viacerými riadkami. napríklad ^---\s+' text_repository_usernames_mapping: "Vyberte alebo aktualizujte priradenie používateľov systému OpenProject k menám používateľov nájdených v zázname repozitára.\nPoužívatelia s rovnakým prihlasovacím menom alebo emailom v systéme OpenProject a repozitári sú priradení automaticky." @@ -5275,18 +5510,18 @@ sk: version_status_locked: "zamknuté" version_status_open: "otvorené" note: Pozor - note_password_login_disabled: "Prihlasovacie heslo bolo zakázané %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Upozornenie warning_attachments_not_saved: "%{count} súbor (súborov) nebolo možné uložiť." - warning_imminent_user_limit: > - Pozvali ste viac užívateľov, než je podporované vašim aktuálnym predplateným plánom. Pozvaný užívatelia nemusia byť schopný pripojiť sa do OpenProject prostredia. Prosím upgradujte váš plán alebo zablokujte aktuálnych užívateľov, aby se pozvaný a registrovaný užívatelia mohli pripojiť. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | Platnosť aktivačného emailu vypršala. Poslali sme vám nový %{email}. Kliknite prosím na odkaz vnútri pre aktiváciu vášho účtu. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5346,7 +5581,7 @@ sk: reminders: label_remind_at: "Dátum" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5377,8 +5612,8 @@ sk: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5498,6 +5733,7 @@ sk: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-Autorizácia" diff --git a/config/locales/crowdin/sl.yml b/config/locales/crowdin/sl.yml index 4b044911670..59bf5de845c 100644 --- a/config/locales/crowdin/sl.yml +++ b/config/locales/crowdin/sl.yml @@ -108,7 +108,7 @@ sl: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -391,11 +391,75 @@ sl: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + two: "... %{count} more projects" + few: "... %{count} more projects" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + two: "Remove %{count} statuses?" + few: "Remove %{count} statuses?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -618,6 +682,14 @@ sl: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -780,6 +852,11 @@ sl: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Zamenjaj identifikator + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -1024,9 +1101,9 @@ sl: groups: member_in_these_groups: "Ta uporabnik je trenutno član naslednjih skupin:" no_results_title_text: Ta uporabnik trenutno ni član v nobeni skupini. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Ta uporabnik trenutno ni član projekta. open_profile: "Open profile" @@ -1081,6 +1158,66 @@ sl: user: "Uporabnik se lahko zdaj prijavi za dostop do %{project}. Medtem lahko planirate s tem uporabnikom in mu dodelite delovne naloge." placeholder_user: "Rezervirano mesto se zdaj lahko uporabi v %{project}. Medtem lahko planirate s tem uporabnikom in mu dodelite delovne naloge." group: "Skupina je zdaj del %{project}. Medtem lahko planirate s to skupino in ji dodelite delovne naloge." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + two: "%{count} working days" + few: "%{count} working days" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Besedilo" placeholder_users: @@ -1088,11 +1225,11 @@ sl: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Izbriši nadomestnega uporabnika %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > Vsi pojavi nadomestnega uporabnika (npr., kot nosilec naloge, odgovorni ali druge vrednosti) bodo preneseni na račun imenovan "Izbrisan uporabnik". Podatki iz vsakega izbrisanega računa so preneseni na ta račun, zato ne bo možno razlikovati med podatki, ki jih je uporabnik ustvaril in podatki iz drugega izbirsanega računa. irreversible: "To dejanje je nepreklicno" - confirmation: "Vnesite nadomestno uporabniško ime %{name} za potrditev izbrisa." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1126,8 +1263,8 @@ sl: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1394,7 +1531,7 @@ sl: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "ali se pa prijavite z obstoječim računom." signup_with_auth_provider: "ali se prijavite s/z" - auth_source_login: Prosim prijavite se kot %{login} , da aktivirate svoj račun. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Prosim aktivirajte svoj račun actionview_instancetag_blank_option: "Prosimo izberite" activemodel: @@ -1665,6 +1802,11 @@ sl: consented_at: "Soglasje ob" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1673,8 +1815,6 @@ sl: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Dostopnost" auto_hide_popups: "Automatically hide success banners" @@ -1695,6 +1835,28 @@ sl: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Ime ali e-mail naslov" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Končni datum" sharing: "Delitev" @@ -1749,6 +1911,8 @@ sl: before: "mora biti pred %{date}." before_or_equal_to: "mora biti pred ali enako %{date}." blank: "ne sme biti prazno." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "mora imeti nastavljeno lastnost '%{property}'." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1785,8 +1949,9 @@ sl: less_than_or_equal_to: "mora biti manjše ali enako %{count}. " not_available: "is not available due to a system configuration." not_deletable: "se ne da izbrisati." + not_editable: "cannot be edited because it is already in effect." not_current_user: "ni trenutni uporabnik." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "ni veljaven datum" not_a_datetime: "ni veljaven datum." @@ -1817,6 +1982,10 @@ sl: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "je napačna dolžina (mora biti %{count} znakov). " models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1929,6 +2098,9 @@ sl: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "delovni paketi še vedno uporabljajo: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2136,6 +2308,10 @@ sl: description: "'Potrditev gesla' se mora ujemati z vnosom v polju 'Novo geslo'." status: invalid_on_create: "za nove uporabnike ni veljaven status." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Prosimo izberite vsaj eno osebo ali kategorijo." role_blank: "treba dodeliti" @@ -2438,8 +2614,8 @@ sl: Aktiviranje varnostnih kopij bo kateremu koli uporabniku z zahtevanimi dovoljenji in tem žetonom omogočilo prenos var. kopije, ki vsebuje vse podatke te OpenProject instalacije. To vključuje tudi podatke vseh drugih uporabnikov info: > Za kreiranje varnostne kopije morate najprej ustvariti žeton za varnostno kopiranje. Vsakič, ko želite kreirati var. kopijo, morate podati ta žeton. Žeton lahko izbrišete, če želite onemogočiti kreiranje var. kopij za tega uporabnika. - verification: > - Vnesite %{word} za potrditev %{action} žetona za varnostno kopiranje. + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: ponastavi verification_word_create: ustvari warning: > @@ -2920,7 +3096,7 @@ sl: two: "%{count} days left of %{trial_plan} trial token" few: "%{count} days left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2937,10 +3113,8 @@ sl: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -3028,8 +3202,8 @@ sl: work_package_edit: "Delovni paket je bil urejen" work_package_note: "Dodana opomba o delovnem paketu" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Izvozi" @@ -3280,6 +3454,7 @@ sl: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3287,9 +3462,9 @@ sl: links: configuration_guide: "Vodnik za konfiguracijo" get_in_touch: "Imate vprašanja? Stopite v stik z nami.\n" - instructions_after_registration: "Prijavite se lahko takoj, ko je račun aktiviran, tako da kliknete %{signin}." - instructions_after_logout: "Ponovno se lahko prijavite s klikom na %{signin}." - instructions_after_error: "Lahko se poskusite znova prijaviti s klikom na %{signin}. Če napaka še vedno traja, za pomoč prosite svojega skrbnika." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3481,6 +3656,8 @@ sl: label_calendar_show: "Prikaži koleddar" label_category: "Kategorija" label_completed: Zaključeno + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Soglasje uporabnika" label_wiki_menu_item: Element menija Wiki label_select_main_menu_item: Izberite nov element v glavnem meniju @@ -3647,6 +3824,7 @@ sl: label_subject_or_id: "Predmet ali ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Identifikator " + label_project_identifier: "Project identifier" label_in: "v" label_in_less_than: "v manj kot" label_in_more_than: "v več kot" @@ -3780,11 +3958,13 @@ sl: label_news_view_all: "Poglej vse novice" label_next: "Naprej" label_next_week: "Naslednji teden" + label_next_year: "Next year" label_no_change_option: "(Ni spremembe)" label_no_data: "Ni podatkov za prikaz" label_no_due_date: "brez končnega datuma" label_no_start_date: "Brez začetnega datuma" label_no_parent_page: "Brez matične strani" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Ni podatkov za prikaz" label_nobody: "nihče" @@ -3813,6 +3993,8 @@ sl: label_overall_activity: "Celotna aktivnost" label_overview: "Pregled" label_page_title: "Naslov strani" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "Je del" label_password_lost: "Ste pozabili svoje geslo?" label_password_rule_lowercase: "Male črke" @@ -3839,6 +4021,7 @@ sl: label_preview_not_available: "Preview not available" label_previous: "Predhodnji" label_previous_week: "Prejšnji teden" + label_previous_year: "Previous year" label_principal_invite_via_email: "ali povabite nove uporabnike po e-pošti" label_principal_search: "Dodajte obstoječe uporabnike ali skupine" label_privacy_policy: "Politika zasebnosti in varnosti podatkov" @@ -3950,6 +4133,7 @@ sl: label_start_to_start: "od začetka do začetka" label_statistics: "Statistika" label_status: "Stanje" + label_status_plural: "Statuses" label_storage_free_space: "Preostali prostor na disku" label_storage_used_space: "Zaseden prostor na disku" label_storage_group: "Shranjevanje datotečnega sistema %{identifier}" @@ -3978,6 +4162,7 @@ sl: label_title: "Naslov" label_projects_menu: "Projekti" label_today: "Danes" + label_today_capitalized: "Danes" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3998,7 +4183,7 @@ sl: label_user: "Uporabnik" label_user_and_permission: "Users and permissions" label_user_named: "Uporabnik %{name}" - label_user_activity: "%{value}'s aktivnost" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonimno" label_user_menu: "User menu" label_user_new: "Nov uporabnik" @@ -4085,6 +4270,21 @@ sl: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + two: "%{count} days" + few: "%{count} days" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + two: "%{count} working days" + few: "%{count} working days" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + two: "Time off: %{count} working days" + few: "Time off: %{count} working days" + other: "Time off: %{count} working days" label_yesterday: "včeraj" label_zen_mode: "Zen mode" label_role_type: "Vrsta" @@ -4093,6 +4293,22 @@ sl: label_not_changeable: "(ne spremenljivo)" label_global: "Globalno" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Napaka pri izvajanju makre %{macro_name}" macro_unavailable: "Makra %{macro_name} ne more biti prikazana" macros: @@ -4127,7 +4343,7 @@ sl: center: "V središče za obvestila" see_in_center: "Preglej komentar v središču za obvestila" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4159,7 +4375,7 @@ sl: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4258,9 +4474,9 @@ sl: roles: "Zdaj imate sledeče vloge:" mail_user_activation_limit_reached: subject: Aktivacijski limit uporabnika je bil dosežen - message: | - Nov uporabnik (%{email}) je poizkušal ustvariti račun v OpenProject okolju katerega nadzorujete vi (%{host}). - Uporabnik ne mora aktivirati računa, saj je bil limit uporabnikov dosežen. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "Da uporabniku dovolite, da se prijavi lahko:" a: "Nadgradite svoj naročniški plan ([here](upgrade_url))" #here turned into a link @@ -4446,6 +4662,12 @@ sl: permission_manage_versions: "Uredi različice" permission_manage_wiki: "Uredi wiki" permission_manage_wiki_menu: "Uredi wiki meni" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Premaknite delovne pakete" permission_protect_wiki_pages: "Zaščiti wiki strani" permission_rename_wiki_pages: "Preimenujte wiki strani" @@ -4590,10 +4812,10 @@ sl: info: "Brisanje odlagališča je nepovraten ukrep." info_not_managed: "Opomba: To NE bo izbrisalo vsebine tega odlagališča, saj ni upravljan iz strani OpenProject." managed_path_note: "Sledeči direktorij bo izbrisan: %{path}" - repository_verification: "Vpišite identifikator projekta %{identifier} ,da preverite izbris njegovega odlagališča." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Ali res želite izbrisati %{repository_type} projekta %{project_name}?" - subtitle_not_managed: "Ali res želite prestaviti povezan %{repository_type}%{url} iz projekta %{project_name}?" - title: "Izbrišite %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Odstranite povezan %{repository_type}?" errors: build_failed: "Ni mogoče ustvariti odlagališča z izbrano konfiguracijo. %{reason}" @@ -4643,7 +4865,7 @@ sl: storage: not_available: "Poraba diskovne shrambe za to vrsto shrambo ni na voljo." update_timeout: "Zadnje potrebne podatke o diskovnem prostoru shranite za N minut.\nKer je lahko štetje potrebnega diskovnega prostora v skladišču drago, povečajte to vrednost, da zmanjšate njegov učinek na zmogljivost." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4688,15 +4910,15 @@ sl: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Omogoči CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) dovoljen izvir" - setting_apiv3_cors_origins_text_html: > - To so izviri, ki jim je dovoljeno dostopati do OpenProject API, če je CORS omogočen.
Preverite dokumentacijo o glavi izvira kako navesti pričakovane vrednosti. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4793,7 +5015,7 @@ sl: setting_work_package_properties: "Lastnosti delovnega paketa" setting_work_package_startdate_is_adddate: "52/5000\nUporabite trenutni datum kot datum začetka za nove delovne pakete" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Prijavite uporabniško ime, ime in e-poštni naslov za vse zahteve" setting_login_required: "Zahtevano overovljanje" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4874,6 +5096,12 @@ sl: setting_welcome_text: "Dobrodošli blok besedila" setting_welcome_title: "Dobrodošli blok naslov" setting_welcome_on_homescreen: "Prikažite blok dobrodošlice na osnovnem zaslonu" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Privzeti način osvetlitve" setting_work_package_list_default_highlighted_attributes: "Privzeti atributi, označeni s črto" setting_working_days: "Working days" @@ -5040,10 +5268,12 @@ sl: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Označba" plain: "Golo besedilo" @@ -5165,6 +5395,10 @@ sl: text_plugin_assets_writable: "Imenik vtičnikov se lahko zapiše" text_powered_by: "Powered by %{link}" text_project_identifier_info: "Dovoljene so samo male črke (a-z), številke, črtice in podčrtaji, ki se začnejo z malo začetnico." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Ponovno dodelitev delovnemu paketu:" text_regexp_multiline: 'Označba se uporablja v večvrstičnem načinu. npr. ^ --- \ s +' text_repository_usernames_mapping: "Izberite ali posodobite uporabnika OpenProject, vezanega na vsako uporabniško ime, ki ga najdete v dnevniku repozitorija.\nUporabniki z istim uporabniškim imenom ali e-poštnim imenom skladišča OpenProject se samodejno povežejo." @@ -5274,18 +5508,18 @@ sl: version_status_locked: "zaklenjeno" version_status_open: "odpri" note: Opomba - note_password_login_disabled: "Prijava z geslom je bila onemogočena zaradi %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Opozorilo warning_attachments_not_saved: "%{count} datotek(e) ni bilo mogoče shraniti." - warning_imminent_user_limit: > - Povabili ste več uporabnikov, kot jih podpira vaš trenutni načrt. Povabljeni uporabniki se ne bodo mogli pridružiti vašemu okolju OpenProject. nadgradite svoj načrt ali blokirajte obstoječe uporabnike, če želite povabljenim in registriranim uporabnikom omogočiti pridružitev. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5345,7 +5579,7 @@ sl: reminders: label_remind_at: "Datum" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5376,8 +5610,8 @@ sl: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5497,6 +5731,7 @@ sl: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pred odobritvijo" diff --git a/config/locales/crowdin/sr.yml b/config/locales/crowdin/sr.yml index ee64e4390f2..3f4c68f5dd4 100644 --- a/config/locales/crowdin/sr.yml +++ b/config/locales/crowdin/sr.yml @@ -108,7 +108,7 @@ sr: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -385,11 +385,73 @@ sr: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + few: "... %{count} more projects" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + few: "Remove %{count} statuses?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -613,6 +675,14 @@ sr: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -774,6 +844,11 @@ sr: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -1012,9 +1087,9 @@ sr: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: This user is currently not a member of a project. open_profile: "Open profile" @@ -1069,6 +1144,65 @@ sr: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + few: "%{count} working days" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Text" placeholder_users: @@ -1076,11 +1210,11 @@ sr: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1113,8 +1247,8 @@ sr: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1380,7 +1514,7 @@ sr: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "or sign in with your existing account" signup_with_auth_provider: "or sign up using" - auth_source_login: Please login as %{login} to activate your account. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Please login to activate your account. actionview_instancetag_blank_option: "Please select" activemodel: @@ -1651,6 +1785,11 @@ sr: consented_at: "Consented at" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1659,8 +1798,6 @@ sr: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Accessibility mode" auto_hide_popups: "Automatically hide success banners" @@ -1681,6 +1818,28 @@ sr: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Finish date" sharing: "Sharing" @@ -1735,6 +1894,8 @@ sr: before: "must be before %{date}." before_or_equal_to: "must be before or equal to %{date}." blank: "can't be blank." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1771,8 +1932,9 @@ sr: less_than_or_equal_to: "must be less than or equal to %{count}." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is not the current user." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "is not a valid date." not_a_datetime: "is not a valid date time." @@ -1803,6 +1965,10 @@ sr: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "is the wrong length (should be %{count} characters)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1914,6 +2080,9 @@ sr: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "still in use by work packages: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2120,6 +2289,10 @@ sr: description: "'Password confirmation' should match the input in the 'New password' field." status: invalid_on_create: "is not a valid status for new users." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Please choose at least one user or group." role_blank: "need to be assigned." @@ -2404,7 +2577,7 @@ sr: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: create @@ -2865,7 +3038,7 @@ sr: one: "One day left of %{trial_plan} trial token" few: "%{count} days left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2882,10 +3055,8 @@ sr: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2973,8 +3144,8 @@ sr: work_package_edit: "Work Package edited" work_package_note: "Work Package note added" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Export" @@ -3225,6 +3396,7 @@ sr: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3232,9 +3404,9 @@ sr: links: configuration_guide: "Configuration guide" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "You can sign in as soon as your account has been activated by clicking %{signin}." - instructions_after_logout: "You can sign in again by clicking %{signin}." - instructions_after_error: "You can try to sign in again by clicking %{signin}. If the error persists, ask your admin for help." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3426,6 +3598,8 @@ sr: label_calendar_show: "Show Calendar" label_category: "Category" label_completed: Completed + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "User Consent" label_wiki_menu_item: Wiki menu item label_select_main_menu_item: Select new main menu item @@ -3592,6 +3766,7 @@ sr: label_subject_or_id: "Subject or ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Identifier" + label_project_identifier: "Project identifier" label_in: "in" label_in_less_than: "in less than" label_in_more_than: "in more than" @@ -3725,11 +3900,13 @@ sr: label_news_view_all: "View all news" label_next: "Next" label_next_week: "Next week" + label_next_year: "Next year" label_no_change_option: "(No change)" label_no_data: "No data to display" label_no_due_date: "no finish date" label_no_start_date: "no start date" label_no_parent_page: "No parent page" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Nothing to display" label_nobody: "nobody" @@ -3758,6 +3935,8 @@ sr: label_overall_activity: "Overall activity" label_overview: "Overview" label_page_title: "Page title" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "part of" label_password_lost: "Forgot your password?" label_password_rule_lowercase: "Lowercase" @@ -3784,6 +3963,7 @@ sr: label_preview_not_available: "Preview not available" label_previous: "Previous" label_previous_week: "Previous week" + label_previous_year: "Previous year" label_principal_invite_via_email: " or invite new users via email" label_principal_search: "Add existing users or groups" label_privacy_policy: "Data privacy and security policy" @@ -3895,6 +4075,7 @@ sr: label_start_to_start: "start to start" label_statistics: "Statistics" label_status: "Status" + label_status_plural: "Statuses" label_storage_free_space: "Remaining disk space" label_storage_used_space: "Used disk space" label_storage_group: "Storage filesystem %{identifier}" @@ -3923,6 +4104,7 @@ sr: label_title: "Title" label_projects_menu: "Projects" label_today: "today" + label_today_capitalized: "Today" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3943,7 +4125,7 @@ sr: label_user: "User" label_user_and_permission: "Users and permissions" label_user_named: "User %{name}" - label_user_activity: "%{value}'s activity" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonymous" label_user_menu: "User menu" label_user_new: "New user" @@ -4030,6 +4212,18 @@ sr: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + few: "%{count} days" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + few: "%{count} working days" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + few: "Time off: %{count} working days" + other: "Time off: %{count} working days" label_yesterday: "yesterday" label_zen_mode: "Zen mode" label_role_type: "Type" @@ -4038,6 +4232,22 @@ sr: label_not_changeable: "(not changeable)" label_global: "Global" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Error executing the macro %{macro_name}" macro_unavailable: "Macro %{macro_name} cannot be displayed." macros: @@ -4072,7 +4282,7 @@ sr: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4103,7 +4313,7 @@ sr: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4202,7 +4412,7 @@ sr: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: User activation limit reached - message: | + message_html: | A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). The user cannot activate their account since the user limit has been reached. steps: @@ -4389,6 +4599,12 @@ sr: permission_manage_versions: "Manage versions" permission_manage_wiki: "Manage wiki" permission_manage_wiki_menu: "Manage wiki menu" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Move work packages" permission_protect_wiki_pages: "Protect wiki pages" permission_rename_wiki_pages: "Rename wiki pages" @@ -4534,10 +4750,10 @@ sr: info: "Deleting the repository is an irreversible action." info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." managed_path_note: "The following directory will be erased: %{path}" - repository_verification: "Enter the project's identifier %{identifier} to verify the deletion of its repository." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Do you really want to delete the %{repository_type} of the project %{project_name}?" - subtitle_not_managed: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" - title: "Delete the %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Remove the linked %{repository_type}?" errors: build_failed: "Unable to create the repository with the selected configuration. %{reason}" @@ -4587,7 +4803,7 @@ sr: storage: not_available: "Disk storage consumption is not available for this repository." update_timeout: "Keep the last required disk space information for a repository for N minutes.\nAs counting the required disk space of a repository may be costly, increase this value to reduce performance impact." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4632,15 +4848,15 @@ sr: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4737,7 +4953,7 @@ sr: setting_work_package_properties: "Work package properties" setting_work_package_startdate_is_adddate: "Use current date as start date for new work packages" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Log user login, name, and mail address for all requests" setting_login_required: "Authentication required" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4818,6 +5034,12 @@ sr: setting_welcome_text: "Welcome block text" setting_welcome_title: "Welcome block title" setting_welcome_on_homescreen: "Display welcome block on homescreen" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Working days" @@ -4984,10 +5206,12 @@ sr: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Plain text" @@ -5109,6 +5333,10 @@ sr: text_plugin_assets_writable: "Plugin assets directory writable" text_powered_by: "Powered by %{link}" text_project_identifier_info: "Only lower case letters (a-z), numbers, dashes and underscores are allowed, must start with a lower case letter." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassign to work package:" text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' text_repository_usernames_mapping: "Select or update the OpenProject user mapped to each username found in the repository log.\nUsers with the same OpenProject and repository username or email are automatically mapped." @@ -5217,18 +5445,18 @@ sr: version_status_locked: "locked" version_status_open: "open" note: Note - note_password_login_disabled: "Password login has been disabled by %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Warning warning_attachments_not_saved: "%{count} file(s) could not be saved." - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5288,7 +5516,7 @@ sr: reminders: label_remind_at: "Date" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5319,8 +5547,8 @@ sr: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5440,6 +5668,7 @@ sr: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/sv.yml b/config/locales/crowdin/sv.yml index fe6b260b1ce..2245db2ec2f 100644 --- a/config/locales/crowdin/sv.yml +++ b/config/locales/crowdin/sv.yml @@ -108,7 +108,7 @@ sv: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ sv: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -607,6 +667,14 @@ sv: danger_dialog: confirmation_live_message_checked: "Knappen för att fortsätta är nu aktiv." confirmation_live_message_unchecked: "Knappen för att fortsätta är nu inaktiv. Du måste markera kryssrutan för att fortsätta." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -767,6 +835,11 @@ sv: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -999,9 +1072,9 @@ sv: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} fler" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Denna användare är för närvarande inte medlem i något projekt. open_profile: "Öppna profil" @@ -1056,6 +1129,64 @@ sv: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Text" placeholder_users: @@ -1063,11 +1194,11 @@ sv: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1099,8 +1230,8 @@ sv: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1365,7 +1496,7 @@ sv: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "eller logga in med ditt befintliga konto" signup_with_auth_provider: "eller registrera dig via" - auth_source_login: Vänligen logga in som %{login} för att aktivera ditt konto. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Vänligen logga in för att aktivera ditt konto. actionview_instancetag_blank_option: "Välj" activemodel: @@ -1636,6 +1767,11 @@ sv: consented_at: "Samtyckte den" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1644,8 +1780,6 @@ sv: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Tillgänglighetsläge" auto_hide_popups: "Dölj automatiskt framgångsbanners" @@ -1666,6 +1800,28 @@ sv: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Namn eller e-postadress" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Slutdatum" sharing: "Delas" @@ -1720,6 +1876,8 @@ sv: before: "måste vara innan %{date}." before_or_equal_to: "måste vara före eller lika med %{date}." blank: "kan inte vara tomt." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1756,8 +1914,9 @@ sv: less_than_or_equal_to: "måste vara mindre än eller lika med %{count}." not_available: "is not available due to a system configuration." not_deletable: "kan inte raderas." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is not the current user." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "hittades inte." not_a_date: "är inte är ett giltigt datum." not_a_datetime: "är inte en giltig datumtid." @@ -1788,6 +1947,10 @@ sv: tillhandahåller inte en "Secure Context". Använd antingen HTTPS eller en loopback-adress, som localhost. wrong_length: "har fel längd (måste vara %{count} tecken)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1898,6 +2061,9 @@ sv: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "används fortfarande av arbetspaket: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2103,6 +2269,10 @@ sv: description: "Lösenorden som anges i de två fälten måste matcha varandra." status: invalid_on_create: "är inte en giltig status för nya användare." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Välj minst en användare eller grupp." role_blank: "måste tilldelas." @@ -2369,7 +2539,7 @@ sv: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > Du behöver generera en backup-kod för att kunna göra en backup. Varje gång du vill be om en backup så behöver du skriva in den här koden. Du kan ta bort backup-koden för att stänga av backups för den här användaren. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: återställ verification_word_create: skapa @@ -2809,7 +2979,7 @@ sv: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2826,10 +2996,8 @@ sv: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2917,8 +3085,8 @@ sv: work_package_edit: "Arbetspaket redigerades" work_package_note: "Anteckning lades till arbetspaketet" title: - project: "Projekt: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Exportera" @@ -3169,6 +3337,7 @@ sv: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3176,9 +3345,9 @@ sv: links: configuration_guide: "Konfigurationsguide" get_in_touch: "Har du frågor? Ta kontakt med oss." - instructions_after_registration: "Du kan logga in så snart ditt konto har aktiverats genom att klicka på %{signin}." - instructions_after_logout: "Du kan logga in igen genom att klicka på %{signin}." - instructions_after_error: "Du kan försöka logga in igen genom att klicka på %{signin}. Om felet kvarstår, be din systemadministratör om hjälp." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3370,6 +3539,8 @@ sv: label_calendar_show: "Visa kalendern" label_category: "Kategori" label_completed: Slutförd + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Användarsamtycken" label_wiki_menu_item: Wiki menyalternativ label_select_main_menu_item: Välj ny huvudmenypost @@ -3536,6 +3707,7 @@ sv: label_subject_or_id: "Ämne eller ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Identifierare" + label_project_identifier: "Project identifier" label_in: "i" label_in_less_than: "i mindre än" label_in_more_than: "i mer än" @@ -3669,11 +3841,13 @@ sv: label_news_view_all: "Visa alla nyheter" label_next: "Nästa" label_next_week: "Nästa vecka" + label_next_year: "Next year" label_no_change_option: "(Ingen ändring)" label_no_data: "Ingen data att visa" label_no_due_date: "no finish date" label_no_start_date: "inget startdatum" label_no_parent_page: "Ingen överordnad sida" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Inget att visa" label_nobody: "ingen" @@ -3702,6 +3876,8 @@ sv: label_overall_activity: "Total aktivitet" label_overview: "Översikt" label_page_title: "Sidtitel" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "del av" label_password_lost: "Glömt ditt lösenord?" label_password_rule_lowercase: "Gemener" @@ -3728,6 +3904,7 @@ sv: label_preview_not_available: "Preview not available" label_previous: "Föregående" label_previous_week: "Föregående vecka" + label_previous_year: "Previous year" label_principal_invite_via_email: " eller bjud in nya användare via e-post" label_principal_search: "Lägga till befintliga användare eller grupper" label_privacy_policy: "Integritets- och säkerhetspolicy" @@ -3839,6 +4016,7 @@ sv: label_start_to_start: "början till början" label_statistics: "Statistik" label_status: "Status" + label_status_plural: "Statuses" label_storage_free_space: "Återstående diskutrymme" label_storage_used_space: "Använt diskutrymme" label_storage_group: "Filsystem %{identifier} för lagring" @@ -3867,6 +4045,7 @@ sv: label_title: "Titel" label_projects_menu: "Projekt" label_today: "idag" + label_today_capitalized: "Idag" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3887,7 +4066,7 @@ sv: label_user: "Användare" label_user_and_permission: "Users and permissions" label_user_named: "Användare %{name}" - label_user_activity: "%{value}s aktivitet" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonym" label_user_menu: "Användarmeny" label_user_new: "Ny användare" @@ -3974,6 +4153,15 @@ sv: one: "1 fil" other: "%{count} filer" zero: "inga filer" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "igår" label_zen_mode: "Zen-läge" label_role_type: "Typ" @@ -3982,6 +4170,22 @@ sv: label_not_changeable: "(kan inte ändras)" label_global: "Global" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Fel under körning av makrot %{macro_name}" macro_unavailable: "Makrot %{macro_name} kan inte visas." macros: @@ -4016,7 +4220,7 @@ sv: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hej %{user}" + salutation: "Hello %{user}," salutation_full_name: "Fullständigt namn" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4046,7 +4250,7 @@ sv: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4145,9 +4349,9 @@ sv: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: Gräns för användaraktiveringar uppnådd - message: | - En ny användare (%{email}) försökte skapa ett konto på en OpenProjekt miljö som du administrerar (%{host}). - Användaren kan inte aktivera sitt konto eftersom gränsen för antalet användare uppnåtts. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "För att tillåta användaren att logga in kan du antingen: " a: "Utöka din betalplan ([here](upgrade_url))" #here turned into a link @@ -4331,6 +4535,12 @@ sv: permission_manage_versions: "Hantera versioner" permission_manage_wiki: "Hantera wiki" permission_manage_wiki_menu: "Hantera wiki-menyn" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Flytta arbetspaket" permission_protect_wiki_pages: "Skydda wiki-sidor" permission_rename_wiki_pages: "Byt namn på wiki-sidor" @@ -4474,10 +4684,10 @@ sv: info: "Att radera databasen går inte att ångra." info_not_managed: "Observera: Detta kommer INTE att radera innehållet i den här databasen eftersom den inte hanteras av OpenProject." managed_path_note: "Följande katalog kommer raderas: %{path}" - repository_verification: "Ange projektets identifierare %{identifier} för att verifiera raderingen av dess databas." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Vill du verkligen radera %{repository_type} för projektet %{project_name}?" - subtitle_not_managed: "Vill du verkligen ta bort det länkade %{repository_type} %{url} från projektet %{project_name}?" - title: "Radera %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Radera det länkade %{repository_type}?" errors: build_failed: "Det gick inte att skapa versionsarkivet med den valda konfigurationen. %{reason}" @@ -4527,7 +4737,7 @@ sv: storage: not_available: "Hårddiskanvändning är inte tillgängligt för den här databasen." update_timeout: "Behåll den senaste informationen om hårddiskanvändning för den här databasen i N minuter.\nEftersom beräkningen av detta är resurskrävande kan prestandan förbättras genom att öka det här värdet." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4572,15 +4782,15 @@ sv: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Aktivera CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4677,7 +4887,7 @@ sv: setting_work_package_properties: "Egenskaper för arbetspaket" setting_work_package_startdate_is_adddate: "Använda aktuellt datum som startdatum för nya arbetspaket" setting_work_packages_projects_export_limit: "Exportgräns för arbetspaket/projekt" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Logga användarnamn, namn och E-postadress för alla anrop" setting_login_required: "Autentisering krävs" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4758,6 +4968,12 @@ sv: setting_welcome_text: "Textblock för välkomstmeddelande" setting_welcome_title: "Textblock för välkomsttitel" setting_welcome_on_homescreen: "Visa välkomstblocket på hemsidan" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Standardläge för markering" setting_work_package_list_default_highlighted_attributes: "Standardattribut för inline-markering" setting_working_days: "Arbetsdagar" @@ -4924,10 +5140,12 @@ sv: section_work_week: "Arbetsvecka" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Oformaterad text" @@ -5049,6 +5267,10 @@ sv: text_plugin_assets_writable: "Katalogen \"Plugin assets\" skrivbar" text_powered_by: "Drivs av %{link}" text_project_identifier_info: "Bara gemena bokstäver (a-z), siffror, bindestreck och understreck tillåts och måste dessutom börja med en gemen bokstav." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Tilldela till arbetspaket:" text_regexp_multiline: 'Regex appliceras i flerradsläge. t.ex. ^---\s+' text_repository_usernames_mapping: "Välj eller uppdatera OpenProject användaren koppling till varje användarnamn i versionsarkivloggen. Användare med samma användarnamn eller E-post i OpenProject och versionsarkivet kopplas automatiskt." @@ -5156,17 +5378,17 @@ sv: version_status_locked: "låst" version_status_open: "öppna" note: Observera - note_password_login_disabled: "Inloggning med lösenord har inaktiverats av %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Varning warning_attachments_not_saved: "%{count} fil(er) kunde inte sparas." - warning_imminent_user_limit: > - Du bjöd in fler användare än vad som stöds av din nuvarande plan. Inbjudna användare kanske inte kan gå med i din OpenProject-miljö. Vänligen uppgradera ditt abonnemang eller blockera befintliga användare för att tillåta inbjudna och registrerade användare att gå med. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | Aktiveringsmailet har löpt ut. Vi skickade ett nytt till %{email}. Klicka på länken inne i mailet för att aktivera ditt konto. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > Du har nått din användargräns (%{current}/%{max} aktiva användare). Kontakta sales@openproject.com för att uppgradera din plan för Enterprise utgåvan och lägga till ytterligare användare. warning_protocol_mismatch_html: > @@ -5226,7 +5448,7 @@ sv: reminders: label_remind_at: "Datum" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5257,8 +5479,8 @@ sv: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5378,6 +5600,7 @@ sv: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Förauktorisering" diff --git a/config/locales/crowdin/th.yml b/config/locales/crowdin/th.yml index ba4d2d5c081..d1fe0d0e3ac 100644 --- a/config/locales/crowdin/th.yml +++ b/config/locales/crowdin/th.yml @@ -108,7 +108,7 @@ th: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -373,11 +373,69 @@ th: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -601,6 +659,14 @@ th: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -760,6 +826,11 @@ th: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: เปลี่ยน ตัวระบุ + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -986,9 +1057,9 @@ th: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: This user is currently not a member of a project. open_profile: "Open profile" @@ -1043,6 +1114,63 @@ th: user: "ขณะนี้ผู้ใช้สามารถเข้าสู่ระบบเพื่อเข้าถึง %{project}, คุณสามารถวางแผนกับผู้ใช้รายนั้นและกำหนดแพ็คเกจงานได้" placeholder_user: "ขณะนี้ Placeholder สามารถใช้งานใน %{project} ได้แล้ว, คุณสามารถวางแผนกับผู้ใช้รายนั้นและกำหนดแพ็คเกจงานได้" group: "ตอนนี้กลุ่มนี้เป็นส่วนหนึ่งของ %{project}, คุณสามารถวางแผนกับกลุ่มนั้นและกำหนดแพ็คเกจงานได้" + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "ข้อความ" placeholder_users: @@ -1050,11 +1178,11 @@ th: คุณไม่ได้รับอนุญาตให้ลบผู้ใช้ตัวยึดตำแหน่ง คุณไม่มีสิทธิ์จัดการสมาชิกสำหรับโครงการทั้งหมดที่ผู้ใช้ตัวแทนเป็นสมาชิกอยู่ delete_tooltip: "ลบผู้ใช้ ตัวยึดตำแหน่ง" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1085,8 +1213,8 @@ th: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1350,7 +1478,7 @@ th: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "หรือเข้าสู่ระบบ ด้วยบัญชีผู้ใช้ที่คุณมีอยู่แล้ว" signup_with_auth_provider: "or sign up using" - auth_source_login: Please login as %{login} to activate your account. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Please login to activate your account. actionview_instancetag_blank_option: "โปรดเลือก" activemodel: @@ -1621,6 +1749,11 @@ th: consented_at: "Consented at" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1629,8 +1762,6 @@ th: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "โหมดสำหรับผู้พิการ" auto_hide_popups: "Automatically hide success banners" @@ -1651,6 +1782,28 @@ th: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "ชื่อหรือที่อยู่อีเมล" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Finish date" sharing: "แบ่งปัน" @@ -1705,6 +1858,8 @@ th: before: "must be before %{date}." before_or_equal_to: "must be before or equal to %{date}." blank: "can't be blank." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1741,8 +1896,9 @@ th: less_than_or_equal_to: "must be less than or equal to %{count}." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is not the current user." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "is not a valid date." not_a_datetime: "is not a valid date time." @@ -1773,6 +1929,10 @@ th: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "is the wrong length (should be %{count} characters)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1882,6 +2042,9 @@ th: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "still in use by work packages: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "ต้องเปิดใช้งานโมดูล '%{dependency}' ด้วย เนื่องจากโมดูล '%{module}' ขึ้นอยู่กับโมดูลนั้น" format: "%{message}" @@ -2086,6 +2249,10 @@ th: description: "'รหัสผ่าน' ควรตรงกับข้อมูลใน 'รหัสผ่านใหม่' ฟิลด์" status: invalid_on_create: "ไม่ใช่สถานะที่ถูกต้องสำหรับผู้ใช้ใหม่" + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "โปรดเลือกอย่างน้อยหนึ่งผู้ใช้หรือหนึ่งกลุ่ม" role_blank: "need to be assigned." @@ -2334,8 +2501,8 @@ th: การเปิดใช้งานการสำรองข้อมูลจะอนุญาตให้ผู้ใช้ที่มีสิทธิ์ที่จำเป็นและโทเค็นสำรองนี้สามารถดาวน์โหลดข้อมูลสำรองที่มีข้อมูลทั้งหมดของการติดตั้ง OpenProject นี้ได้ ซึ่งรวมถึงข้อมูลของผู้ใช้รายอื่นทั้งหมด info: > คุณจะต้องสร้างโทเค็นสำรอง จึงจะสามารถสร้างข้อมูลสำรองได้ แต่ละครั้งที่คุณต้องการขอข้อมูลสำรอง คุณจะต้องจัดเตรียมโทเค็นนี้ คุณสามารถลบโทเค็นสำรองเพื่อปิดใช้งานการสำรองข้อมูลสำหรับผู้ใช้รายนี้ - verification: > - ป้อน %{word} เพื่อยืนยัน การดำเนินการ %{action} โทเค็น (token) สำรอง. + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: รีเซ็ต verification_word_create: สร้าง warning: > @@ -2753,7 +2920,7 @@ th: teaser: title: other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2770,10 +2937,8 @@ th: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2861,8 +3026,8 @@ th: work_package_edit: "แก้ไขชุดภารกิจแล้ว" work_package_note: "เพิ่มหมายเหตุชุดภารกิจ" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Export" @@ -3113,6 +3278,7 @@ th: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3120,9 +3286,9 @@ th: links: configuration_guide: "Configuration guide" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "คุณสามารถเข้าสู่ระบบได้ทันทีมีการเปิดใช้งานบัญชีผู้ใช้ของคุณ โดยคลิก %{signin}." - instructions_after_logout: "คุณสามารถเข้าสู่ระบบอีกครั้งโดยคลิก %{signin}" - instructions_after_error: "คุณสามารถลองเข้าสู่ระบบอีกครั้งโดยคลิก %{signin} หากยังพบข้อผิดพลาด โปรดสอบถามผู้ดูแลระบบเพื่อขอความช่วยเหลือ" + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3314,6 +3480,8 @@ th: label_calendar_show: "แสดงปฏิทิน" label_category: "ประเภท" label_completed: Completed + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "User Consent" label_wiki_menu_item: รายการเมนูวิกิ label_select_main_menu_item: เลือกรายการเมนูหลักใหม่ @@ -3480,6 +3648,7 @@ th: label_subject_or_id: "Subject or ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "รหัส" + label_project_identifier: "Project identifier" label_in: "ใน" label_in_less_than: "ในไม่เกิน" label_in_more_than: "ในมากกว่า" @@ -3613,11 +3782,13 @@ th: label_news_view_all: "ดูข่าวทั้งหมด" label_next: "ถัดไป" label_next_week: "อาทิตย์ถัดไป" + label_next_year: "Next year" label_no_change_option: "(ไม่เปลี่ยนแปลง)" label_no_data: "ไม่มีข้อมูลให้แสดง" label_no_due_date: "no finish date" label_no_start_date: "ไม่มีวันเริ่มต้น" label_no_parent_page: "No parent page" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Nothing to display" label_nobody: "ไม่มีใคร" @@ -3646,6 +3817,8 @@ th: label_overall_activity: "กิจกรรมในภาพรวม" label_overview: "ภาพรวม" label_page_title: "Page title" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "part of" label_password_lost: "Forgot your password?" label_password_rule_lowercase: "ตัวพิมพ์เล็ก" @@ -3672,6 +3845,7 @@ th: label_preview_not_available: "Preview not available" label_previous: "ก่อนหน้านี้" label_previous_week: "สัปดาห์ก่อนหน้านี้" + label_previous_year: "Previous year" label_principal_invite_via_email: " or invite new users via email" label_principal_search: "Add existing users or groups" label_privacy_policy: "Data privacy and security policy" @@ -3783,6 +3957,7 @@ th: label_start_to_start: "จุดเริ่มต้นไปยังจุดเริ่มต้น" label_statistics: "สถิติ" label_status: "สถานะ" + label_status_plural: "Statuses" label_storage_free_space: "Remaining disk space" label_storage_used_space: "Used disk space" label_storage_group: "Storage filesystem %{identifier}" @@ -3811,6 +3986,7 @@ th: label_title: "ชื่อเรื่อง" label_projects_menu: "โครงการ" label_today: "วันนี้" + label_today_capitalized: "Today" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3831,7 +4007,7 @@ th: label_user: "ผู้ใช้" label_user_and_permission: "Users and permissions" label_user_named: "User %{name}" - label_user_activity: "กิจกรรมของ %{value}" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "ไม่ระบุชื่อ" label_user_menu: "User menu" label_user_new: "ผู้ใช้ใหม่" @@ -3918,6 +4094,12 @@ th: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + other: "%{count} days" + label_x_working_days: + other: "%{count} working days" + label_x_working_days_time_off: + other: "Time off: %{count} working days" label_yesterday: "เมื่อวานนี้" label_zen_mode: "Zen mode" label_role_type: "ประเภท" @@ -3926,6 +4108,22 @@ th: label_not_changeable: "(not changeable)" label_global: "Global" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "ข้อผิดพลาดในการรันมาโคร %{macro_name}" macro_unavailable: "Macro %{macro_name} cannot be displayed." macros: @@ -3960,7 +4158,7 @@ th: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -3989,7 +4187,7 @@ th: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4088,7 +4286,7 @@ th: roles: "ตอนนี้คุณมีบทบาทดังต่อไปนี้:" mail_user_activation_limit_reached: subject: User activation limit reached - message: | + message_html: | A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). The user cannot activate their account since the user limit has been reached. steps: @@ -4273,6 +4471,12 @@ th: permission_manage_versions: "จัดการเวอร์ชั่น" permission_manage_wiki: "จัดการวิกิ" permission_manage_wiki_menu: "จัดการเมนูวิกิ" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "ย้ายชุดภารกิจ" permission_protect_wiki_pages: "ป้องกันหน้าวิกิ" permission_rename_wiki_pages: "เปลี่ยนชื่อหน้าวิกิ" @@ -4418,10 +4622,10 @@ th: info: "Deleting the repository is an irreversible action." info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." managed_path_note: "The following directory will be erased: %{path}" - repository_verification: "Enter the project's identifier %{identifier} to verify the deletion of its repository." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Do you really want to delete the %{repository_type} of the project %{project_name}?" - subtitle_not_managed: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" - title: "Delete the %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Remove the linked %{repository_type}?" errors: build_failed: "Unable to create the repository with the selected configuration. %{reason}" @@ -4471,7 +4675,7 @@ th: storage: not_available: "Disk storage consumption is not available for this repository." update_timeout: "Keep the last required disk space information for a repository for N minutes.\nAs counting the required disk space of a repository may be costly, increase this value to reduce performance impact." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4516,15 +4720,15 @@ th: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4621,7 +4825,7 @@ th: setting_work_package_properties: "คุณสมบัติของชุดภารกิจ" setting_work_package_startdate_is_adddate: "ใช้วันปัจจุบันเป็นวันเริ่มต้นสำหรับชุดภารกิจใหม่" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "เก็บข้อมูลการล็อกอิน ชื่อ และอีเมล์ของผู้ใช้สำหรับทุกคำขอ" setting_login_required: "จำเป็นต้องระบุตัวตนผู้ใช้" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4702,6 +4906,12 @@ th: setting_welcome_text: "Welcome block text" setting_welcome_title: "Welcome block title" setting_welcome_on_homescreen: "Display welcome block on homescreen" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Working days" @@ -4868,10 +5078,12 @@ th: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Plain text" @@ -4993,6 +5205,10 @@ th: text_plugin_assets_writable: "สามารถบันทึก ไดเรคทอรี่ของ Plugin asset ได้" text_powered_by: "ดำเนินการโดย %{link}" text_project_identifier_info: "ใช้ได้เฉพาะตัวพิมพ์เล็ก (a-z), ตัวเลข เส้นประ และขีดใต้ โดย ต้องเริ่มต้น ด้วยตัวอักษรพิมพ์เล็กเท่านั้น" + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassign to work package:" text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' text_repository_usernames_mapping: "Select or update the OpenProject user mapped to each username found in the repository log.\nUsers with the same OpenProject and repository username or email are automatically mapped." @@ -5099,18 +5315,18 @@ th: version_status_locked: "ล็อก" version_status_open: "เปิด" note: Note - note_password_login_disabled: "Password login has been disabled by %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Warning warning_attachments_not_saved: "มี %{count} ไฟล์ที่ไม่สามารถบันทึกได้" - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5170,7 +5386,7 @@ th: reminders: label_remind_at: "วันที่" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5201,8 +5417,8 @@ th: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5322,6 +5538,7 @@ th: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/tr.yml b/config/locales/crowdin/tr.yml index 77e7ecaff7b..51e3d91aab0 100644 --- a/config/locales/crowdin/tr.yml +++ b/config/locales/crowdin/tr.yml @@ -108,7 +108,7 @@ tr: jemalloc_allocator: Jemalloc bellek ayırıcı journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ tr: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Giriş ve kayıt" announcements: @@ -608,6 +668,14 @@ tr: danger_dialog: confirmation_live_message_checked: "Devam etmek için düğme artık aktif." confirmation_live_message_unchecked: "Devam etmek için düğme artık aktif değil. Devam etmek için işratlemeniz gerekli." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -768,6 +836,11 @@ tr: description: > Proje, rollerine ve ilişkili izinlerine bağlı olarak yalnızca proje üyeleri tarafından görülebilir. Alt projeler etkilenmez ve kendi ayarlarına sahiptir. change_identifier: Tanımlayıcıyı değiştir + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Yeni alt öğeler oluştururken kullanılacak şablonları seçin. @@ -1000,9 +1073,9 @@ tr: groups: member_in_these_groups: "Bu kullanıcı şu anda aşağıdaki grupların bir üyesidir:" no_results_title_text: Bu kullanıcı şu anda hiçbir gruba üye değil. - summary_with_more: '%{names} ve %{count_link} üyesi.' + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} tane daha" - summary: '%{names} üyesi.' + summary_html: Member of %{names}. memberships: no_results_title_text: Bu kullanıcı şuan için bir proje üyesi değil. open_profile: "Profili aç" @@ -1057,6 +1130,64 @@ tr: user: "Kullanıcı artık %{project} 'e erişmek için oturum açabilir. Bu arada, o kullanıcıyla zaten plan yapabilir ve örneğin iş paketleri atayabilirsiniz." placeholder_user: "Kullanıcı artık %{project} 'e erişmek için oturum açabilir. Bu arada, o kullanıcıyla zaten plan yapabilir ve örneğin iş paketleri atayabilirsiniz." group: "Grup artık %{project} 'nin bir parçası. Bu arada, bu grupla zaten plan yapabilir ve örneğin iş paketleri atayabilirsiniz." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Metin" placeholder_users: @@ -1064,11 +1195,11 @@ tr: Yer tutucu kullanıcıyı silme izniniz yok. Yer tutucu kullanıcının üyesi olduğu tüm projeler için üyeleri yönetme hakkınız yoktur. delete_tooltip: "Yer tutucu kullanıcısını silin." deletion_info: - heading: "%{name} yer tutucu kullanıcısını sil." + heading_html: "Delete placeholder user %{name}" data_consequences: > Yer tutucu kullanıcının adının geçtiği her şey (örn. devralan, sorumlu veya diğer kullanıcı değerleri) "Silinmiş Kullanıcı" olarak anılan bir hesaba atanacaktır. Silinmiş tüm hesapların bilgileri bu hesaba atandığından bu kullanıcının oluşturduğu veriler başka bir silinmiş hesap tarafından oluşturulmuş verilerden ayrılamaz. irreversible: "Bu işlem geri alınamaz" - confirmation: "Silme işlemini onaylamak için yer tutucu %{name} ismini girin." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1100,9 +1231,10 @@ tr: status_excluded_from_totals_text: |- Bir hiyerarşide bu duruma sahip iş paketlerini İş, Kalan iş ve tamamlanma yüzdesi toplamlarından hariç tutmak için bu seçeneği işaretleyin. - status_percent_complete_text: |- - Durum bazlı ilerleme hesaplama modunda, bu durum seçildiğinde bir işin tamamlanma yüzdesi durumu otomatik olarak bu değere ayarlanır. - İş bazlı modda yok sayılır. + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work + package is automatically set to this value when this status is selected. + Ignored in work-based mode. status_readonly_html: | Check this option to mark work packages with this status as read-only. No attributes can be changed with the exception of the status. @@ -1365,7 +1497,7 @@ tr: Tek noktadan oturum açma sağlayıcısı '%{name}' için kullanıcı kaydı sınırlıdır. Lütfen yöneticiden hesabınızı sizin için etkinleştirmesini veya bu sağlayıcı için kendi kendine kayıt sınırını değiştirmesini isteyin. login_with_auth_provider: "veya varolan hesabınızı kullanarak oturum açın" signup_with_auth_provider: "veya kullanarak kaydolun" - auth_source_login: Hesabınızı aktifleştirmek için lütfen %{login} olarak giriş yapın. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Hesabınızı aktifleştirmek için lütfen giriş yapın. actionview_instancetag_blank_option: "Lütfen seçin" activemodel: @@ -1636,6 +1768,11 @@ tr: consented_at: "Rızanın alınması" group: identity_url: "Kimlik URL'si" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Görünüm ve his" header_alerts: "Uyarılar" @@ -1644,8 +1781,6 @@ tr: button_update_user_information: "Profili güncelle" comments_sorting: "İş paketi faaliyetini aşağıdakilere göre sıralanmış olarak görüntüle" disable_keyboard_shortcuts: "Klavye kısayollarını devre dışı bırak" - disable_keyboard_shortcuts_caption_html: |- - Ekran okuyucu kullanıyorsanız veya bir eylemi yanlışlıkla bir kısayolla tetiklemekten kaçınmak istiyorsanız varsayılan klavye kısayollarını devre dışı bırakmayı seçebilirsiniz. dismissed_enterprise_banners: "Gizli kurumsal afişler" impaired: "Erişilebilirlik modu" auto_hide_popups: "Başarı uyarılarını otomatik olarak gizle" @@ -1666,6 +1801,28 @@ tr: users/invitation/form_model: principal_type: "Davet Türü" id_or_email: "İsim veya e-posta adresi" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Bitiş tarihi" sharing: "Paylaşım" @@ -1720,6 +1877,8 @@ tr: before: "%{date}'dan daha önce olması gerekir." before_or_equal_to: "%{date}} tarihinden önce veya ona eşit olmalıdır." blank: "boş bırakılamaz." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "'%{property}' özelliğinin ayarlanmış olması gerekir." cannot_delete_mapping: "zorunlu. Silinemez." is_for_all_cannot_modify: "tüm projeler içindir ve bu nedenle değiştirilemez." @@ -1756,8 +1915,9 @@ tr: less_than_or_equal_to: "%{count} 'ten küçük veya bu değere eşit olmalıdır." not_available: "Sistem yapılandırması nedeniyle kullanılamaz.\n" not_deletable: "kaldırılamadı." + not_editable: "cannot be edited because it is already in effect." not_current_user: "mevcut kullanıcı değil." - only_one_active_sprint_allowed: "proje başına yalnızca bir aktif sprint'e izin verilir." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "bulunamadı." not_a_date: "geçerli bir tarih değil." not_a_datetime: "geçerli bir zaman değil." @@ -1788,6 +1948,10 @@ tr: bir "Güvenli Bağlam" sağlamıyor. HTTPS veya localhost gibi bir geri döngü adresi kullanın. wrong_length: "uzunluğu yanlıştır (%{count} karakter olmalıdır)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1898,6 +2062,9 @@ tr: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "hala iş paketleri tarafından kullanılmaktadır:%{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "'%{module}' modülü buna bağlı olduğundan, '%{dependency}' modülünün de etkinleştirilmesi gerekiyor." format: "%{message}" @@ -2103,6 +2270,10 @@ tr: description: "\"Parola onayı\" 'yeni parola' alanı girişi aynı olmalıdır." status: invalid_on_create: "yeni kullanıcılar için geçerli bir durum değil." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Lütfen en az bir kullanıcı veya grup seçin." role_blank: "atanması gerek." @@ -2369,8 +2540,8 @@ tr: Yedeklemeleri etkinleştirmek, gerekli izinlere ve bu yedekleme jetonuna sahip herhangi bir kullanıcının bu OpenProject kurulumunun tüm verilerini içeren bir yedeği indirmesine izin verecektir. Bu, diğer tüm kullanıcıların verilerini içerir. info: > Yedek oluşturabilmek için bir yedekleme belirteci oluşturmanız gerekecektir. Her yedekleme talebinde bulunduğunuzda, bu belirteci sağlamanız gerekecektir. Bu kullanıcı için yedeklemeleri devre dışı bırakmak için yedekleme jetonunu silebilirsiniz. - verification: > - Yedek jetonu %{action} istediğinizi onaylamak için %{word} girin. + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: Sıfırla verification_word_create: oluşturuldu warning: > @@ -2809,7 +2980,7 @@ tr: title: one: "%{trial_plan} deneme anahtarının son bir günü kaldı" other: "%{trial_plan} deneme anahtarının son %{count} günü kaldı" - description: "Tüm %{trial_plan} özelliklerine erişebilirsiniz." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "Bir deneme anahtarı talep ettiniz, ancak bu talep artık mevcut değil. Lütfen tekrar deneyin." wait_for_confirmation: "Deneme anahtarını alabilmeniz için adresinizi onaylamanız amacıyla size bir e-posta gönderdik." @@ -2826,10 +2997,8 @@ tr: confirmation_subline: > Lütfen gelen kutunuzu kontrol edin ve 14 günlük ücretsiz denemenizi başlatmak için adımları izleyin. domain_caption: Anahtar, şu anda yapılandırılmış ana bilgisayar adınız için geçerli olacaktır. - receive_newsletter_html: > - OpenProject haber bültenini almak istiyorum. - consent_html: > - Hizmet şartlarını ve gizlilik politikasını kabul ediyorum. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Devre dışı." @@ -2917,8 +3086,8 @@ tr: work_package_edit: "İş Paketi düzenlendi" work_package_note: "İk Paketi notu eklendi" title: - project: "Proje: %{name}" - subproject: "Alt-proje: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Dışarı aktar" @@ -3169,6 +3338,7 @@ tr: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3176,9 +3346,9 @@ tr: links: configuration_guide: "Yapılandırma rehberi" get_in_touch: "Senin soruların var? Bizimle temasa geçin." - instructions_after_registration: "%{signin} düğmesini tıklayarak hesabınız etkinleştirildiğinde hemen oturum açabilirsiniz." - instructions_after_logout: "%{signin} düğmesini tıklayarak tekrar oturum açabilirsiniz." - instructions_after_error: "%{signin} düğmesini tıklayarak tekrar oturum açmayı deneyebilirsiniz. Hata devam ederse, yöneticinizden yardım isteyin." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Yapay Zeka (AI)" @@ -3370,6 +3540,8 @@ tr: label_calendar_show: "Takvimi Göster" label_category: "Kategori" label_completed: Tamamlandı + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Kullanıcı Rızası" label_wiki_menu_item: Viki menü öğesi label_select_main_menu_item: Yeni ana menü öğesi seç @@ -3536,6 +3708,7 @@ tr: label_subject_or_id: "Konu ya da ID" label_calendar_subscriptions: "Takvim abonelikleri" label_identifier: "Tanımlayıcı" + label_project_identifier: "Project identifier" label_in: "şurada" label_in_less_than: "daha azdır" label_in_more_than: "daha fazla" @@ -3669,11 +3842,13 @@ tr: label_news_view_all: "Tüm haberleri gör" label_next: "Sonraki" label_next_week: "Gelecek hafta" + label_next_year: "Next year" label_no_change_option: "(Değişiklik yok)" label_no_data: "Görüntülenecek veri yok" label_no_due_date: "bitiş tarihi yok" label_no_start_date: "başlangıç tarihi yok" label_no_parent_page: "Üst sayfa yok" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Bildirimler" label_nothing_display: "Görüntülenecek bir şey yok" label_nobody: "hiçkimse" @@ -3702,6 +3877,8 @@ tr: label_overall_activity: "Genel etkinlik" label_overview: "Genel Bakış" label_page_title: "Sayfa başlığı" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "bölümü" label_password_lost: "Parolanızı mı unuttunuz?" label_password_rule_lowercase: "Küçük harf" @@ -3728,6 +3905,7 @@ tr: label_preview_not_available: "Önizleme mevcut değil" label_previous: "Önceki" label_previous_week: "Geçen Hafta" + label_previous_year: "Previous year" label_principal_invite_via_email: " veya yeni kullanıcılar e-posta ile davet et" label_principal_search: "Mevcut kullanıcıları veya grupları ekle" label_privacy_policy: "Veri gizliliği ve güvenlik politikası" @@ -3839,6 +4017,7 @@ tr: label_start_to_start: "baştan başa" label_statistics: "İstatistikler" label_status: "Durum" + label_status_plural: "Statuses" label_storage_free_space: "Kalan disk alanı" label_storage_used_space: "Kullanışmış disk alanı" label_storage_group: "Depolama sistemi %{identifier}" @@ -3867,6 +4046,7 @@ tr: label_title: "Başlık" label_projects_menu: "Projeler" label_today: "bugün" + label_today_capitalized: "Bugün" label_token_version: "Anahtar Sürümü" label_today_as_start_date: "Başlangıç tarihi olarak bugünü seçin." label_today_as_due_date: "Bitiş tarihi olarak bugünü seçin." @@ -3887,7 +4067,7 @@ tr: label_user: "Kullanıcı" label_user_and_permission: "Kullanıcılar ve izinler" label_user_named: "%{name} kullanıcısı" - label_user_activity: "%{value}'ın faaliyet" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonim" label_user_menu: "Kullanıcı menüsü" label_user_new: "Yeni kullanıcı" @@ -3974,6 +4154,15 @@ tr: one: "1 dosya" other: "%{count} dosya" zero: "dosya yok" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "dün" label_zen_mode: "Zen modu" label_role_type: "Tür" @@ -3982,6 +4171,22 @@ tr: label_not_changeable: "(değiştirilemez)" label_global: "Küresel" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Makroyu çalıştırırken hata oluştu %{macro_name}" macro_unavailable: "Makro %{macro_name} görüntülenemiyor." macros: @@ -4016,7 +4221,7 @@ tr: center: "Bildirim Merkezi" see_in_center: "Bildirim merkezinde yorumu görün" settings: "E-posta ayarlarını değiştir" - salutation: "Merhaba %{user}" + salutation: "Hello %{user}," salutation_full_name: "Ad Soyad" work_packages: created_at: "%{timestamp} tarihinde %{user} tarafından oluşturuldu" @@ -4046,7 +4251,7 @@ tr: note: "Not: \"%{note}\"" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "İş paketini aç" subject: "İş paketi #%{id} sizinle paylaşıldı" @@ -4144,9 +4349,9 @@ tr: roles: "Aşağıdaki rollere sahipsiniz:" mail_user_activation_limit_reached: subject: Kullanıcı etkinleştirme sınırına ulaşıldı - message: | - Yeni bir kullanıcı (%{email}) yönettiğiniz bir OpenProject ortamında bir hesap oluşturmaya çalıştı (%{host}). - Kullanıcı sınırına ulaşıldığından beri kullanıcı hesaplarını etkinleştiremiyor. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "Kullanıcının oturum açmasına izin vermek için şunlardan birini yapabilirsiniz:" a: "Ödeme planınızı yükseltin ([here](upgrade_url))" #here turned into a link @@ -4329,6 +4534,12 @@ tr: permission_manage_versions: "Sürümleri yönetmek" permission_manage_wiki: "Wiki'yi yönet" permission_manage_wiki_menu: "Wiki menüsünü yönet" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "İş paketini taşı" permission_protect_wiki_pages: "Wiki sayfalarını koruma" permission_rename_wiki_pages: "Wiki sayfalarını yeniden adlandır" @@ -4474,10 +4685,10 @@ tr: info: "Deponun silinmesi geri döndürülemez bir işlemdir." info_not_managed: "Not: Bu, OpenProject tarafından yönetilmediğinden, bu deponun içeriğini Silmeyecektir." managed_path_note: "Aşağıdaki dizin silinir:% {path} %{path}" - repository_verification: "Deponun silinmesini doğrulamak için projenin tanımlayıcı% {identifier} 'yi girin. %{identifier}" + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "% {Project_name} projesinin% {repository_type} dosyasını gerçekten silmek istiyor musunuz? %{repository_type} %{project_name}" - subtitle_not_managed: "% {Repository_type}% {url} bağlantılı projeyi% {project_name} projesinden gerçekten kaldırmak istiyor musunuz? %{repository_type} %{url} %{project_name}" - title: "% {Repository_type} öğesini sil %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Bağlantılı% {repository_type} 'yi kaldırın? %{repository_type}?" errors: build_failed: "Seçili yapılandırmayla havuz oluşturulamadı. %{reason}" @@ -4527,7 +4738,7 @@ tr: storage: not_available: "Bu depo için disk depolama tüketimi yok." update_timeout: "Bir depo için N dakika boyunca gereken son disk alanı bilgilerini saklayın.\nDeponun gerekli disk alanını saymak maliyetli olabileceğinden performans etkisini azaltmak için bu değeri yükseltin." - oauth_application_details: "Bu pencereyi kapattıktan sonra istemci gizli anahtarı değerine tekrar erişilemez. Lütfen bu değerleri Nextcloud OpenProject Entegrasyon ayarlarına kopyalayın:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Ayarlar sayfasına git" setup_documentation_details: "Yeni bir dosya deposunu yapılandırmak için yardıma ihtiyacınız varsa, lütfen belgelere bakın:" setup_documentation_details_link_text: "Dosya depoları kurulumu" @@ -4572,15 +4783,15 @@ tr: setting_apiv3_cors_title: "Çapraz Kaynak Paylaşımı (CORS)" setting_apiv3_cors_enabled: "CORS'u etkinleştir" setting_apiv3_cors_origins: "API V3 Kaynaklar Arası Kaynak Paylaşımı (CORS) izin verilen kaynaklar" - setting_apiv3_cors_origins_text_html: > - CORS etkinleştirilirse, bunlar OpenProject API'ye erişmesine izin verilen kaynaklardır.
Beklenen değerlerin nasıl belirtileceğini öğrenmek için lütfen Kaynak başlığındaki Belgeleri kontrol edin. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Salt okunur özniteliklere yazma erişimi" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "En büyük API sayfası boyutu" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4677,7 +4888,7 @@ tr: setting_work_package_properties: "İş paketi özellikleri" setting_work_package_startdate_is_adddate: "Yeni iş paketlerinde şu anki tarihi başlangıç tarihi olarak kullan" setting_work_packages_projects_export_limit: "İş paketleri / Projeler dışa aktarım limiti" - setting_journal_aggregation_time_minutes: "İçinde biriken kullanıcı işlemleri" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Tüm istekler için kullanıcı oturum açma, ad ve posta adresini girme" setting_login_required: "Kimlik doğrulaması gerekli" setting_login_required_caption: "İşaretlendiğinde, uygulamaya gelen tüm isteklerin kimliği doğrulanmalıdır." @@ -4758,6 +4969,12 @@ tr: setting_welcome_text: "Hoş geldiniz blok metini" setting_welcome_title: "Hoş geldiniz blok başlığı" setting_welcome_on_homescreen: "Hoşgeldiniz bloğunu ana ekranda göster" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Varsayılan vurgulama modu" setting_work_package_list_default_highlighted_attributes: "Varsayılan satır içi vurgulanan özellikler" setting_working_days: "İş günleri" @@ -4924,10 +5141,12 @@ tr: section_work_week: "Çalışma haftası" section_holidays_and_closures: "Tatiller ve kapanışlar" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "Bu sayfayı görüntülemek için gerekli izinlere sahip değilsiniz." activities: enable_internal_comments: "Dahili yorumları etkinleştirin" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Düz yazı" @@ -5049,6 +5268,10 @@ tr: text_plugin_assets_writable: "Plugin assets dizini yazılabilir" text_powered_by: "%{link} tarafından destekleniyor" text_project_identifier_info: "Yalnızca küçük harfler (a-z), sayılar, tire ve alt tire kullanılabilir ve mutlaka küçük harfle başlamalıdır." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "İş paketine yeniden atama:" text_regexp_multiline: 'Regex (düzenli ifade) birden çok satırlı modda uygulanır. Örneğin, ^---\s+' text_repository_usernames_mapping: "Depo günlüklerinde bulunan her kullanıcı adına eşlenen OpenProject kullanıcısını seçin veya güncelleyin. Aynı OpenProject ve depo kullanıcı adına veya e-postasına sahip kullanıcılar otomatik olarak eşleştirilir." @@ -5156,17 +5379,17 @@ tr: version_status_locked: "kilitli" version_status_open: "açık" note: Not - note_password_login_disabled: "Parola girişi %{configuration} tarafından devre dışı bırakıldı." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Uyarı warning_attachments_not_saved: "%{count} dosya (lar) kaydedilemedi." - warning_imminent_user_limit: > - Mevcut planınız tarafından desteklenenden daha fazla kullanıcı davet ettiniz. Davet edilen kullanıcılar OpenProject ortamınıza katılamayabilir. Lütfen davet edilen ve kayıtlı kullanıcıların katılmasına izin vermek için planınızı yükseltin veya mevcut kullanıcıları engelleyin. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | Etkinleştirme e-postası süresi doldu. Sana yeni bir %{email} gönderdik. Hesabınızı etkinleştirmek için linki tıklayınız. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Ek kullanıcı eklenmesi mevcut sınırı aşacaktır. Harici kullanıcıların bu kuruluma erişebilmesinden emin olmak için planınızı yükseltin. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > Kullanıcı sınırınıza ulaştınız (%{current}/%{max} aktif kullanıcılar). Enterprise sürüm planınızı yükseltmek ve ek kullanıcılar eklemek için lütfen sales@openproject.com adresine başvurun. warning_protocol_mismatch_html: > @@ -5226,7 +5449,7 @@ tr: reminders: label_remind_at: "Tarih" note_placeholder: "Bu hatırlatmayı neden yapıyorsunuz?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Hatırlatma başarıyla güncellendi." success_deletion_message: "Hatırlatma başarıyla silindi." sharing: @@ -5257,8 +5480,8 @@ tr: text_user_limit_reached_admins: 'Ek kullanıcı eklemek mevcut sınırı aşacaktır. Daha fazla kullanıcı ekleyebilmek için lütfen planınızı yükseltin.' warning_user_limit_reached: > Ek kullanıcı eklenmesi mevcut sınırı aşacaktır. Harici kullanıcıların %{entity} adresine erişebilmesini sağlamak amacıyla kullanıcı limitini artırmak için lütfen bir yöneticiyle iletişime geçin. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "%{user} kullanıcısı kilitli ve paylaşılamaz" user_details: @@ -5378,6 +5601,7 @@ tr: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Gizlendi - Seçilen en üst öge, eksik izinler nedeniyle görünmez. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Ön yetkilendirme" diff --git a/config/locales/crowdin/uk.yml b/config/locales/crowdin/uk.yml index a3868bf6259..7c365230223 100644 --- a/config/locales/crowdin/uk.yml +++ b/config/locales/crowdin/uk.yml @@ -108,7 +108,7 @@ uk: jemalloc_allocator: Розподіл пам'яті Jemalloc journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Iмпорт" jira: @@ -391,11 +391,75 @@ uk: project_creation: "Створення проєкту" notification_text_default: >

Вітаємо,

Новий проєкт створено: projectValue:name

Дякуємо

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + few: "... %{count} more projects" + many: "... %{count} more projects" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Стандартні переходи" user_author: "Користувач є автором" user_assignee: "Користувач є призначеною особою" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + few: "Remove %{count} statuses?" + many: "Remove %{count} statuses?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Вхід і реєстрація" announcements: @@ -616,6 +680,14 @@ uk: danger_dialog: confirmation_live_message_checked: "Кнопка для продовження активна." confirmation_live_message_unchecked: "Кнопка для продовження зараз неактивна. Щоб продовжити, поставте прапорець." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "URL-адреса для доступу до сервера MCP OpenProject. Потрібна для налаштування клієнтів MCP." @@ -778,6 +850,11 @@ uk: description: > Цей проєкт бачитимуть лише учасники проєкту відповідно до своїх ролей і пов’язаних дозволів. Вкладені проєкти мають власні налаштування, тому це не вплине на них. change_identifier: Ідентифікатор змін + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Виберіть шаблони, які використовуватимуться при створенні нових піделементів. @@ -1022,9 +1099,9 @@ uk: groups: member_in_these_groups: "Зараз цей користувач — учасник таких груп:" no_results_title_text: Цей користувач зараз не належить до жодної групи. - summary_with_more: Учасник %{names} і ще %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "Ще %{count}" - summary: Учасник %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Цей користувач наразі не є учасником проекту. open_profile: "Відкрити профіль" @@ -1079,6 +1156,66 @@ uk: user: "Користувач тепер може ввійти, щоб отримати доступ до проєкту %{project}. Тим часом ви вже можете включати цього користувача в план і призначати йому пакети робіт." placeholder_user: "Прототип тепер може ввійти, щоб отримати доступ до проєкту «%{project}». Тим часом ви вже можете включати цього користувача в план і призначати йому пакети робіт." group: "Ця група тепер входить у проєкт «%{project}». Тим часом ви вже можете включати її в план і призначати їй пакети робіт." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + few: "%{count} working days" + many: "%{count} working days" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Текст" placeholder_users: @@ -1086,11 +1223,11 @@ uk: Ви не можете видалити прототип користувача. У вас немає права керувати учасниками для всіх проєктів, до яких належить прототип користувача. delete_tooltip: "Видалити прототип користувача" deletion_info: - heading: "Видалити прототип користувача %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > Усі екземпляри прототипу користувача (наприклад, виконавець, відповідальний тощо) буде перепризначено обліковому запису з назвою «Видалений користувач». Оскільки дані кожного видаленого облікового запису перепризначаються цьому обліковому запису, відрізнити дані, створені користувачем, від даних іншого видаленого облікового запису, може бути важко. irreversible: "Цю дію не можна скасувати" - confirmation: "Введіть ім’я прототипу користувача %{name}, щоб підтвердити видалення." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1123,9 +1260,10 @@ uk: Цей тип за замовчуванням мають нові пакети робіт. Вони не можуть бути доступні лише для читання. status_excluded_from_totals_text: |- Поставте цей прапорець, щоб виключити пакети робіт із цим статусом із підсумків атрибутів «Робота», «Залишок роботи» й «% завершення» в ієрархії. - status_percent_complete_text: |- - У режимі обчислення прогресу на основі статусу для атрибута «% завершення» пакета робіт автоматично встановлюється це значення, коли вибрано цей статус. - Ігнорується в режимі на основі роботи. + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work + package is automatically set to this value when this status is selected. + Ignored in work-based mode. status_readonly_html: | Установіть цей прапорець, щоб позначити пакети робіт із цим статусом як доступні лише для читання. Крім статусу, ви не зможете змінювати жодні атрибути. @@ -1389,7 +1527,7 @@ uk: Реєстрація користувачів через постачальника єдиного входу %{name} обмежена. Зверніться до адміністратора, щоб активувати обліковий запис або змінити ліміт самостійних реєстрацій для цього постачальника. login_with_auth_provider: "або ввійдіть у свій існуючий обліковий запис" signup_with_auth_provider: "або зареєструйтесь, використовуючи" - auth_source_login: Увійдіть, як %{login} для активації облікового запису. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Увійдіть, щоб активувати свій обліковий запис. actionview_instancetag_blank_option: "Будь ласка, виберіть" activemodel: @@ -1660,6 +1798,11 @@ uk: consented_at: "Згоден на" group: identity_url: "URL-адреса ідентичності" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Оформлення" header_alerts: "Сповіщення" @@ -1668,8 +1811,6 @@ uk: button_update_user_information: "Оновити профіль" comments_sorting: "Відображати дії з пакетів робіт, відсортовані за" disable_keyboard_shortcuts: "Вимкнути комбінації клавіш" - disable_keyboard_shortcuts_caption_html: |- - Ви можете вимкнути стандартні комбінації клавіш, якщо використовуєте невізуальний екран або хочете, щоб відповідні дії не запускалися, коли ви натискаєте ці комбінації клавіш випадково. dismissed_enterprise_banners: "Приховані банери Enterprise" impaired: "Режим спеціальних можливостей" auto_hide_popups: "Автоматично приховувати банери про успішне виконання" @@ -1690,6 +1831,28 @@ uk: users/invitation/form_model: principal_type: "Тип запрошення" id_or_email: "Ім‘я або електронна адреса" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Дата закінчення" sharing: "Поширення" @@ -1744,6 +1907,8 @@ uk: before: "має бути раніше %{date}" before_or_equal_to: "має бути до або %{date}" blank: "не може бути порожнім." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "– потрібно встановити властивість «%{property}»." cannot_delete_mapping: "– обов’язкове. Неможливо видалити." is_for_all_cannot_modify: "призначений для всіх проєктів, тому його не можна бути змінити." @@ -1780,8 +1945,9 @@ uk: less_than_or_equal_to: "має бути меншим або рівним %{count}" not_available: "– недоступно через налаштування системи." not_deletable: "не можна видалити." + not_editable: "cannot be edited because it is already in effect." not_current_user: "не поточний користувач." - only_one_active_sprint_allowed: "дозволяється лише один активний спринт для кожного проєкту." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "не знайдено." not_a_date: "не є дійсною датою." not_a_datetime: "не є дійсним датою." @@ -1812,6 +1978,10 @@ uk: не надає контекст безпеки. Використовуйте HTTPS або адресу loopback, наприклад localhost. wrong_length: "неправильна довжина (повинна бути %{count} символів)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1924,6 +2094,9 @@ uk: project_initiation_request_disabled: "Запит на ініціювання проєкту вимкнено. Щоб створити пакет робіт артефакту, його потрібно ввімкнути." types: in_use_by_work_packages: "як і раніше використовуються робочі пакети: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "Модуль «%{dependency}» потрібно також увімкнути, оскільки від нього залежить модуль «%{module}»." format: "%{message}" @@ -2131,6 +2304,10 @@ uk: description: "\"Підтвердження пароля\" має відповідати введеному в полі \"Новий пароль\"." status: invalid_on_create: "не є дійсним статусом для нових користувачів." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Виберіть принаймні одного користувача або групу." role_blank: "повинні бути призначені." @@ -2433,8 +2610,8 @@ uk: Увімкнення резервних копій дасть змогу всім користувачам з обов’язковими дозволами та цим маркером резервного копіювання завантажувати резервні копії з усіма даними цього встановлення OpenProject. Це включає дані всіх інших користувачів. info: > Щоб створити резервну копію, потрібно згенерувати маркер резервного копіювання. Щоразу, коли ви хочете надіслати запит на резервне копіювання, знадобиться надати цей маркер. Щоб вимкнути резервне копіювання для цього користувача, видаліть цей маркер резервного копіювання. - verification: > - Введіть «%{word}», щоб підтвердити %{action} маркера резервного копіювання. + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: скидання verification_word_create: створення warning: > @@ -2915,7 +3092,7 @@ uk: few: "%{count} дні до завершення строку дії пробного маркера %{trial_plan}" many: "%{count} днів до завершення строку дії пробного маркера %{trial_plan}" other: "%{count} дня до завершення строку дії пробного маркера %{trial_plan}" - description: "У вас є доступ до всіх функцій %{trial_plan}." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "Ви запитали пробний маркер, але цей запит більше не доступний. Спробуйте ще раз." wait_for_confirmation: "Ми надіслали вам електронного листа, щоб ви підтвердили свою адресу й могли отримати пробний маркер." @@ -2932,10 +3109,8 @@ uk: confirmation_subline: > Перевірте свою пошту й виконайте вказівки, щоб розпочати безплатний 14-денний пробний період. domain_caption: Маркер буде дійсним для вашого поточного імені хосту. - receive_newsletter_html: > - Я хочу отримувати інформаційний бюлетень OpenProject. - consent_html: > - Я погоджуюся з умовами надання послуг і політикою конфіденційності. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Вимкнено." @@ -3023,8 +3198,8 @@ uk: work_package_edit: "Робочий пакет оновлений" work_package_note: "Робочий пакет не доданий" title: - project: "Проєкт: %{name}" - subproject: "Підпроєкт: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Експорт" @@ -3275,6 +3450,7 @@ uk: Режим планування автоматично змінюється з оновленням версії. totals_removed_from_childless_work_packages: >- Результати обчислення обсягу й прогресу виконання роботи автоматично вилучено з небатьківських пакетів робіт з оновленням версії. Це завдання з технічного обслуговування, і його можна ігнорувати. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Дочірні пакети робіт без атрибута «Робота» ігноруються. total_percent_complete_mode_changed_to_simple_average: >- @@ -3282,9 +3458,9 @@ uk: links: configuration_guide: "Посібник з налаштування" get_in_touch: "У вас виникли запитання? Зв'яжіться з нами." - instructions_after_registration: "Ви можете ввійти, як тільки ваш обліковий запис активується, натиснувши %{signin}." - instructions_after_logout: "Ви можете ввійти знову, натиснувши %{signin}." - instructions_after_error: "Ви можете спробувати ввійти знову, натиснувши %{signin}. Якщо помилка не зникне, зверніться до адміністратора за допомогою." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Штучний інтелект (ШІ)" @@ -3476,6 +3652,8 @@ uk: label_calendar_show: "Показати календар" label_category: "Категорія" label_completed: Завершено + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Згода користувача" label_wiki_menu_item: Пункт меню Wiki label_select_main_menu_item: Виберіть новий пункт головного меню @@ -3642,6 +3820,7 @@ uk: label_subject_or_id: "Тема або ідентифікатор" label_calendar_subscriptions: "Підписки на календарі" label_identifier: "Ідентифікатор" + label_project_identifier: "Project identifier" label_in: "в" label_in_less_than: "менш ніж" label_in_more_than: "більше ніж" @@ -3775,11 +3954,13 @@ uk: label_news_view_all: "Подивитися всі новини" label_next: "Далі" label_next_week: "Наступний тиждень" + label_next_year: "Next year" label_no_change_option: "(Немає змін)" label_no_data: "Немає даних для відображення" label_no_due_date: "немає дати завершення" label_no_start_date: "немає дати початку" label_no_parent_page: "Немає початкової сторінки" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Сповіщення" label_nothing_display: "Нічого не відображається" label_nobody: "жодні" @@ -3808,6 +3989,8 @@ uk: label_overall_activity: "Загальна активність" label_overview: "Огляд" label_page_title: "Заголовок сторінки" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "частина" label_password_lost: "Забули Ваш пароль?" label_password_rule_lowercase: "До нижнього регістру" @@ -3834,6 +4017,7 @@ uk: label_preview_not_available: "Попередній перегляд недоступний" label_previous: "Попередній" label_previous_week: "Попередній тиждень" + label_previous_year: "Previous year" label_principal_invite_via_email: "або запрошувати нових користувачів електронною поштою" label_principal_search: "Додати існуючих користувачів або групи" label_privacy_policy: "Політика конфіденційності та безпеки даних" @@ -3945,6 +4129,7 @@ uk: label_start_to_start: "початок" label_statistics: "Статистика" label_status: "Стан" + label_status_plural: "Statuses" label_storage_free_space: "Залишок на диску" label_storage_used_space: "Використовується дисковий простір" label_storage_group: "Зберігання файлової системи %{identifier}" @@ -3973,6 +4158,7 @@ uk: label_title: "Назва" label_projects_menu: "Проєкти" label_today: "сьогодні" + label_today_capitalized: "Сьогодні" label_token_version: "Версія маркера" label_today_as_start_date: "Виберіть сьогодні як дату початку." label_today_as_due_date: "Виберіть сьогодні як дату завершення." @@ -3993,7 +4179,7 @@ uk: label_user: "Користувач" label_user_and_permission: "Користувачі й дозволи" label_user_named: "User %{name}" - label_user_activity: "Дії користувача %{value}" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Невідомий" label_user_menu: "Меню користувача" label_user_new: "Новий користувач" @@ -4080,6 +4266,21 @@ uk: one: "1 файл" other: "Файлів: %{count}" zero: "немає файлів" + label_x_days: + one: "1 day" + few: "%{count} days" + many: "%{count} days" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + few: "%{count} working days" + many: "%{count} working days" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + few: "Time off: %{count} working days" + many: "Time off: %{count} working days" + other: "Time off: %{count} working days" label_yesterday: "вчора" label_zen_mode: "Режим «Дзен»" label_role_type: "Тип" @@ -4088,6 +4289,22 @@ uk: label_not_changeable: "(не змінюється)" label_global: "Глобальний" label_seeded_from_env_warning: Цей запис створено за допомогою змінної середовища конфігурації. Його не можна змінити в інтерфейсі користувача. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Помилка виконання макросу %{macro_name}" macro_unavailable: "Макрос %{macro_name} не може бути відображений." macros: @@ -4122,7 +4339,7 @@ uk: center: "Центр сповіщень" see_in_center: "Переглянути коментарі у центрі сповіщень" settings: "Змінити налаштування електронної пошти" - salutation: "Добрий день, %{user}!" + salutation: "Hello %{user}," salutation_full_name: "Повне ім’я" work_packages: created_at: "Створено о %{timestamp} користувачем %{user} " @@ -4154,7 +4371,7 @@ uk: note: "Примітка: \"%{note}\"" sharing: work_packages: - allowed_actions: "Ви можете %{allowed_actions} у цьому пакеті робіт, але це залежить від вашої ролі й дозволів у проєкті." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "Щоб отримати доступ до цього пакета робіт, вам знадобиться створити й активувати обліковий запис в %{instance}. " open_work_package: "Відкрити пакет робіт" subject: "Вам надано доступ до пакета робіт #%{id}" @@ -4252,9 +4469,9 @@ uk: roles: "Зараз у вас є такі ролі:" mail_user_activation_limit_reached: subject: Досягнуто ліміту активації користувача - message: | - Новий користувач (%{email}) намагалися створити обліковий запис на середовищі OpenProject, яким ви керуєте (%{host}). - Користувач не може активувати свій обліковий запис після досягнення ліміту користувача. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "To allow the user to sign in you can either: " a: "Оновіть план платежів ([here](upgrade_url))" #here turned into a link @@ -4439,6 +4656,12 @@ uk: permission_manage_versions: "Управління версіями" permission_manage_wiki: "Управління wiki" permission_manage_wiki_menu: "Керування wiki-меню" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Переміщення робочих пакетів" permission_protect_wiki_pages: "Захист wiki-сторінок" permission_rename_wiki_pages: "Перейменування wiki-сторінок" @@ -4584,10 +4807,10 @@ uk: info: "Видалення сховища є незворотною дією." info_not_managed: "Примітка: Зміст цього репозиторію не буде видалено, оскільки він не керується OpenProject." managed_path_note: "Наступний каталог буде видалено: %{path}" - repository_verification: "Введіть ідентифікатор проекту %{identifier}, щоб підтвердити видалення його репозиторію." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Ви дійсно бажаєте видалити %{repository_type} проекту %{project_name}?" - subtitle_not_managed: "Ви дійсно бажаєте видалити пов'язаний %{repository_type} %{url} з проекту %{project_name}?" - title: "Видалити %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Видалити посилання %{repository_type}?" errors: build_failed: "Неможливо створити сховище з вибраною конфігурацією. %{reason}" @@ -4637,7 +4860,7 @@ uk: storage: not_available: "Споживання дискового сховища недоступне для цього сховища." update_timeout: "Зберігайте останню необхідну інформацію про дисковий простір для сховища протягом N хвилин.\nОскільки підрахунок необхідного дискового простору сховища може бути довгим, збільште це значення, щоб зменшити вплив продуктивності." - oauth_application_details: "Секретний ключ клієнта стане недоступним, коли ви закриєте це вікно. Скопіюйте це значення в налаштування інтеграції Nextcloud OpenProject:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Перейти на сторінку налаштувань" setup_documentation_details: "Якщо потрібна допомога з налаштуванням сховища нових файлів, ознайомтеся з документацією: " setup_documentation_details_link_text: "Налаштування файлових сховищ" @@ -4682,15 +4905,15 @@ uk: setting_apiv3_cors_title: "Спільне використання ресурсів із різних джерел (CORS)" setting_apiv3_cors_enabled: "Увімкнути CORS" setting_apiv3_cors_origins: "Дозволені джерела CORS (Cross-Origin Resource Sharing) в API версії 3" - setting_apiv3_cors_origins_text_html: > - Якщо CORS увімкнено, це джерела, які можуть отримувати доступ до OpenProject API.
Щоб дізнатися, як указати очікувані значення, ознайомтеся з Документацією щодо заголовка джерела. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Дозвіл для записування атрибутів лише для читання" setting_apiv3_write_readonly_attributes_instructions: > Якщо ввімкнено, адміністратори зможуть за допомогою API записувати статичні атрибути тільки для читання під час створення, такі як createdAt та author. setting_apiv3_write_readonly_attributes_warning: > Це налаштування використовується, наприклад, для імпорту даних, але дає змогу адміністраторам створювати елементи від імені інших користувачів. Однак усі запити на створення реєструються із зазначенням справжнього автора. - setting_apiv3_write_readonly_attributes_additional: > - Щоб дізнатися більше про атрибути й підтримувані ресурси, відвідайте %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Максимальний розмір сторінки API" setting_apiv3_max_page_size_instructions: > Установіть максимальний розмір сторінки, яку повертатиме API. Виконувати запити до API, які повертають більше значень на одній сторінці, буде неможливо. @@ -4787,7 +5010,7 @@ uk: setting_work_package_properties: "Властивості робочого пакета" setting_work_package_startdate_is_adddate: "Використовувати поточну дату в якості дати початку роботи для нових пакетів" setting_work_packages_projects_export_limit: "Ліміт експорту пакетів робіт / проєктів" - setting_journal_aggregation_time_minutes: "Дії користувача зведено протягом" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Запишіть логін користувача, ім'я та поштову адресу для всіх запитів" setting_login_required: "Необхідна аутентифікація" setting_login_required_caption: "Якщо встановлено, усі запити до додатка мають проходити автентифікацію." @@ -4868,6 +5091,12 @@ uk: setting_welcome_text: "Текст блоку привітання" setting_welcome_title: "Заголовок вітального блоку" setting_welcome_on_homescreen: "Відображати вітальний блок на робочому столі" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Режим виділення за умовчанням" setting_work_package_list_default_highlighted_attributes: "Стандартні вбудовані виділені атрибути" setting_working_days: "Робочі дні" @@ -5034,10 +5263,12 @@ uk: section_work_week: "Робочий тиждень" section_holidays_and_closures: "Свята й вихідні" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "У вас немає дозволів для перегляду цієї сторінки." activities: enable_internal_comments: "Увімкнути внутрішні коментарі" - helper_text: "Завдяки внутрішнім коментарям учасники внутрішньої команди можуть спілкуватися приватно. Ці коментарі доступні лише користувачам із певними ролями й необхідними дозволами й ніколи не відображаються для всіх. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Простий текст" @@ -5159,6 +5390,10 @@ uk: text_plugin_assets_writable: "Каталог ресурсів модулів доступний для запису" text_powered_by: "Працює на %{link}" text_project_identifier_info: "Допускаються тільки рядкові малі букви (a-z), цифри, тире та нижнє підкреслення. Початок має бути з малої літери." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Перепризначити робочому пакету:" text_regexp_multiline: 'Реестр застосовується в багаторядковому режимі. наприклад, --- ---' text_repository_usernames_mapping: "Виберіть або оновіть користувача OpenProject, зіставленого з кожним ім'ям користувача в журналі репозиторію.\nКористувачі з таким самим ім'ям користувача або електронною поштою OpenProject автоматично відображаються." @@ -5268,17 +5503,17 @@ uk: version_status_locked: "Заблоковано" version_status_open: "відкрити" note: Замітка - note_password_login_disabled: "Вхід до пароля вимкнено користувачем %{configuration}" + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Попередження warning_attachments_not_saved: "%{count} Не вдалося зберегти файл (файли)." - warning_imminent_user_limit: > - Ви запросили більше користувачів, ніж підтримується вашим поточним планом. Запрошені користувачі можуть не мати змоги приєднатися до вашого середовища OpenProject. Будь ласка оновіть свій план або заблокувати існуючих користувачів, щоб дозволити запрошені та зареєстровані користувачі приєднатися. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | Термін дії електронної пошти для активації минув. Ми надіслали вам нову %{email} Натисніть посилання в ньому, щоб активувати свій обліковий запис. warning_user_limit_reached: > Додавання користувачів призведе до перевищення поточного ліміту. Зверніться до адміністратора, щоб збільшити ліміт користувачів і таким чином забезпечити доступ до цього екземпляра зовнішнім користувачам. - warning_user_limit_reached_admin: > - Додавання користувачів призведе до перевищення поточного ліміту. Підвищте рівень свого плану, щоб забезпечити доступ до цього екземпляра зовнішнім користувачам. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > Ви досягли обмеження користувача (%{current}/%{max} активних користувачів). Напишіть на адресу sales@openproject.com, щоб перейти на версію Enterprise і додати більше користувачів. warning_protocol_mismatch_html: > @@ -5338,7 +5573,7 @@ uk: reminders: label_remind_at: "Дата" note_placeholder: "Навіщо ви встановлюєте це нагадування?" - create_success_message: "Нагадування встановлено. Ви отримаєте сповіщення про цей пакет робіт у такий час: %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Нагадування оновлено." success_deletion_message: "Нагадування видалено." sharing: @@ -5369,8 +5604,8 @@ uk: text_user_limit_reached_admins: 'Додавання користувачів призведе до перевищення поточного ліміту. Підвищте рівень свого плану, щоб додати користувачів.' warning_user_limit_reached: > Додавання користувачів призведе до перевищення поточного ліміту. Зверніться до адміністратора, щоб збільшити ліміт користувачів і таким чином забезпечити доступ до цього %{entity} зовнішнім користувачам. - warning_user_limit_reached_admin: > - Додавання користувачів призведе до перевищення поточного ліміту. Підвищте рівень свого плану, щоб забезпечити доступ до цього %{entity} зовнішнім користувачам. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Виберіть користувачів, яким потрібно надати спільний доступ до цього %{entity}" warning_locked_user: "Користувача %{user} заблоковано, і йому не можна надати спільний доступ" user_details: @@ -5490,6 +5725,7 @@ uk: project: 'Нерозкритий: проєкт невидимий через відсутність дозволів.' ancestor: Нерозкритий – предок невидимий через відсутність дозволів. definingProject: 'Нерозкритий: проєкт невидимий через відсутність дозволів.' + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Попередня авторизація" diff --git a/config/locales/crowdin/uz.yml b/config/locales/crowdin/uz.yml index b223f6b21ec..9e69a5c9f48 100644 --- a/config/locales/crowdin/uz.yml +++ b/config/locales/crowdin/uz.yml @@ -108,7 +108,7 @@ uz: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -379,11 +379,71 @@ uz: project_creation: "Project creation" notification_text_default: >

Hello,

A new project has been created: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + one: "... 1 more project" + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Default transitions" user_author: "User is author" user_assignee: "User is assignee" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + one: "Remove 1 status?" + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" announcements: @@ -607,6 +667,14 @@ uz: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -767,6 +835,11 @@ uz: description: > The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. change_identifier: Change identifier + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. @@ -999,9 +1072,9 @@ uz: groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. - summary_with_more: Member of %{names} and %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} more" - summary: Member of %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: This user is currently not a member of a project. open_profile: "Open profile" @@ -1056,6 +1129,64 @@ uz: user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + one: "1 working day" + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Text" placeholder_users: @@ -1063,11 +1194,11 @@ uz: You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: - heading: "Delete placeholder user %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1099,8 +1230,8 @@ uz: status_excluded_from_totals_text: |- Check this option to exclude work packages with this status from totals of Work, Remaining work, and % Complete in a hierarchy. - status_percent_complete_text: |- - In status-based progress calculation mode, the % Complete of a work + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | @@ -1365,7 +1496,7 @@ uz: User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. login_with_auth_provider: "or sign in with your existing account" signup_with_auth_provider: "or sign up using" - auth_source_login: Please login as %{login} to activate your account. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Please login to activate your account. actionview_instancetag_blank_option: "Please select" activemodel: @@ -1636,6 +1767,11 @@ uz: consented_at: "Consented at" group: identity_url: "Identity URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Look and feel" header_alerts: "Alerts" @@ -1644,8 +1780,6 @@ uz: button_update_user_information: "Update profile" comments_sorting: "Display work package activity sorted by" disable_keyboard_shortcuts: "Disable keyboard shortcuts" - disable_keyboard_shortcuts_caption_html: |- - You can choose to disable default keyboard shortcuts if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Accessibility mode" auto_hide_popups: "Automatically hide success banners" @@ -1666,6 +1800,28 @@ uz: users/invitation/form_model: principal_type: "Invitation type" id_or_email: "Name or email address" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Finish date" sharing: "Sharing" @@ -1720,6 +1876,8 @@ uz: before: "must be before %{date}." before_or_equal_to: "must be before or equal to %{date}." blank: "can't be blank." + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "needs to have the property '%{property}' set." cannot_delete_mapping: "is required. Cannot be deleted." is_for_all_cannot_modify: "is for all projects and can therefore not be modified." @@ -1756,8 +1914,9 @@ uz: less_than_or_equal_to: "must be less than or equal to %{count}." not_available: "is not available due to a system configuration." not_deletable: "cannot be deleted." + not_editable: "cannot be edited because it is already in effect." not_current_user: "is not the current user." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "not found." not_a_date: "is not a valid date." not_a_datetime: "is not a valid date time." @@ -1788,6 +1947,10 @@ uz: is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "is the wrong length (should be %{count} characters)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1898,6 +2061,9 @@ uz: project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "still in use by work packages: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" @@ -2103,6 +2269,10 @@ uz: description: "'Password confirmation' should match the input in the 'New password' field." status: invalid_on_create: "is not a valid status for new users." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Please choose at least one user or group." role_blank: "need to be assigned." @@ -2369,7 +2539,7 @@ uz: Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. - verification: > + verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: create @@ -2809,7 +2979,7 @@ uz: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description: "You have access to all %{trial_plan} features." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "You have requested a trial token, but that request is no longer available. Please try again." wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." @@ -2826,10 +2996,8 @@ uz: confirmation_subline: > Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. - receive_newsletter_html: > - I want to receive the OpenProject newsletter. - consent_html: > - I agree with the terms of service and the privacy policy. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Disabled." @@ -2917,8 +3085,8 @@ uz: work_package_edit: "Work Package edited" work_package_note: "Work Package note added" title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "Export" @@ -3169,6 +3337,7 @@ uz: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Child work packages without Work are ignored. total_percent_complete_mode_changed_to_simple_average: >- @@ -3176,9 +3345,9 @@ uz: links: configuration_guide: "Configuration guide" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration: "You can sign in as soon as your account has been activated by clicking %{signin}." - instructions_after_logout: "You can sign in again by clicking %{signin}." - instructions_after_error: "You can try to sign in again by clicking %{signin}. If the error persists, ask your admin for help." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Artificial Intelligence (AI)" @@ -3370,6 +3539,8 @@ uz: label_calendar_show: "Show Calendar" label_category: "Category" label_completed: Completed + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "User Consent" label_wiki_menu_item: Wiki menu item label_select_main_menu_item: Select new main menu item @@ -3536,6 +3707,7 @@ uz: label_subject_or_id: "Subject or ID" label_calendar_subscriptions: "Calendar subscriptions" label_identifier: "Identifier" + label_project_identifier: "Project identifier" label_in: "in" label_in_less_than: "in less than" label_in_more_than: "in more than" @@ -3669,11 +3841,13 @@ uz: label_news_view_all: "View all news" label_next: "Next" label_next_week: "Next week" + label_next_year: "Next year" label_no_change_option: "(No change)" label_no_data: "No data to display" label_no_due_date: "no finish date" label_no_start_date: "no start date" label_no_parent_page: "No parent page" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "Notifications" label_nothing_display: "Nothing to display" label_nobody: "nobody" @@ -3702,6 +3876,8 @@ uz: label_overall_activity: "Overall activity" label_overview: "Overview" label_page_title: "Page title" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "part of" label_password_lost: "Forgot your password?" label_password_rule_lowercase: "Lowercase" @@ -3728,6 +3904,7 @@ uz: label_preview_not_available: "Preview not available" label_previous: "Previous" label_previous_week: "Previous week" + label_previous_year: "Previous year" label_principal_invite_via_email: " or invite new users via email" label_principal_search: "Add existing users or groups" label_privacy_policy: "Data privacy and security policy" @@ -3839,6 +4016,7 @@ uz: label_start_to_start: "start to start" label_statistics: "Statistics" label_status: "Status" + label_status_plural: "Statuses" label_storage_free_space: "Remaining disk space" label_storage_used_space: "Used disk space" label_storage_group: "Storage filesystem %{identifier}" @@ -3867,6 +4045,7 @@ uz: label_title: "Title" label_projects_menu: "Projects" label_today: "today" + label_today_capitalized: "Today" label_token_version: "Token Version" label_today_as_start_date: "Select today as start date." label_today_as_due_date: "Select today as finish date." @@ -3887,7 +4066,7 @@ uz: label_user: "User" label_user_and_permission: "Users and permissions" label_user_named: "User %{name}" - label_user_activity: "%{value}'s activity" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "Anonymous" label_user_menu: "User menu" label_user_new: "New user" @@ -3974,6 +4153,15 @@ uz: one: "1 file" other: "%{count} files" zero: "no files" + label_x_days: + one: "1 day" + other: "%{count} days" + label_x_working_days: + one: "1 working day" + other: "%{count} working days" + label_x_working_days_time_off: + one: "Time off: 1 working day" + other: "Time off: %{count} working days" label_yesterday: "yesterday" label_zen_mode: "Zen mode" label_role_type: "Type" @@ -3982,6 +4170,22 @@ uz: label_not_changeable: "(not changeable)" label_global: "Global" label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Error executing the macro %{macro_name}" macro_unavailable: "Macro %{macro_name} cannot be displayed." macros: @@ -4016,7 +4220,7 @@ uz: center: "To notification center" see_in_center: "See comment in notification center" settings: "Change email settings" - salutation: "Hello %{user}" + salutation: "Hello %{user}," salutation_full_name: "Full name" work_packages: created_at: "Created at %{timestamp} by %{user} " @@ -4046,7 +4250,7 @@ uz: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" @@ -4145,7 +4349,7 @@ uz: roles: "You now have the following roles:" mail_user_activation_limit_reached: subject: User activation limit reached - message: | + message_html: | A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). The user cannot activate their account since the user limit has been reached. steps: @@ -4331,6 +4535,12 @@ uz: permission_manage_versions: "Manage versions" permission_manage_wiki: "Manage wiki" permission_manage_wiki_menu: "Manage wiki menu" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Move work packages" permission_protect_wiki_pages: "Protect wiki pages" permission_rename_wiki_pages: "Rename wiki pages" @@ -4476,10 +4686,10 @@ uz: info: "Deleting the repository is an irreversible action." info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." managed_path_note: "The following directory will be erased: %{path}" - repository_verification: "Enter the project's identifier %{identifier} to verify the deletion of its repository." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Do you really want to delete the %{repository_type} of the project %{project_name}?" - subtitle_not_managed: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" - title: "Delete the %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Remove the linked %{repository_type}?" errors: build_failed: "Unable to create the repository with the selected configuration. %{reason}" @@ -4529,7 +4739,7 @@ uz: storage: not_available: "Disk storage consumption is not available for this repository." update_timeout: "Keep the last required disk space information for a repository for N minutes.\nAs counting the required disk space of a repository may be costly, increase this value to reduce performance impact." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" @@ -4574,15 +4784,15 @@ uz: setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" - setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > If enabled, the API will allow administrators to write static read-only attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows administrators to impersonate the creation of items as other users. All creation requests are being logged however with the true author. - setting_apiv3_write_readonly_attributes_additional: > - For more information on attributes and supported resources, please see the %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page. @@ -4679,7 +4889,7 @@ uz: setting_work_package_properties: "Work package properties" setting_work_package_startdate_is_adddate: "Use current date as start date for new work packages" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" - setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Log user login, name, and mail address for all requests" setting_login_required: "Authentication required" setting_login_required_caption: "When checked, all requests to the application have to be authenticated." @@ -4760,6 +4970,12 @@ uz: setting_welcome_text: "Welcome block text" setting_welcome_title: "Welcome block title" setting_welcome_on_homescreen: "Display welcome block on homescreen" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Working days" @@ -4926,10 +5142,12 @@ uz: section_work_week: "Work week" section_holidays_and_closures: "Holidays and closures" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "You do not have the necessary permissions to view this page." activities: enable_internal_comments: "Enable internal comments" - helper_text: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "Plain text" @@ -5051,6 +5269,10 @@ uz: text_plugin_assets_writable: "Plugin assets directory writable" text_powered_by: "Powered by %{link}" text_project_identifier_info: "Only lower case letters (a-z), numbers, dashes and underscores are allowed, must start with a lower case letter." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassign to work package:" text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' text_repository_usernames_mapping: "Select or update the OpenProject user mapped to each username found in the repository log.\nUsers with the same OpenProject and repository username or email are automatically mapped." @@ -5158,18 +5380,18 @@ uz: version_status_locked: "locked" version_status_open: "open" note: Note - note_password_login_disabled: "Password login has been disabled by %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Warning warning_attachments_not_saved: "%{count} file(s) could not be saved." - warning_imminent_user_limit: > - You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > @@ -5229,7 +5451,7 @@ uz: reminders: label_remind_at: "Date" note_placeholder: "Why are you setting this reminder?" - create_success_message: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5260,8 +5482,8 @@ uz: text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. - warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this %{entity}. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -5381,6 +5603,7 @@ uz: project: Undisclosed - The project is invisible because of lacking permissions. ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. definingProject: Undisclosed - The project is invisible because of lacking permissions. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Pre-authorization" diff --git a/config/locales/crowdin/vi.yml b/config/locales/crowdin/vi.yml index a97674e7712..f2ce61b0682 100644 --- a/config/locales/crowdin/vi.yml +++ b/config/locales/crowdin/vi.yml @@ -108,7 +108,7 @@ vi: jemalloc_allocator: Bộ cấp phát bộ nhớ Jemalloc journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -373,11 +373,69 @@ vi: project_creation: "Tạo dự án" notification_text_default: >

Xin chào,

Một dự án mới đã được tạo: projectValue:name

Thank you

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "Chuyển tiếp mặc định" user_author: "Người dùng là tác giả" user_assignee: "Người dùng là người được chuyển nhượng" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Đăng nhập và đăng ký" announcements: @@ -601,6 +659,14 @@ vi: danger_dialog: confirmation_live_message_checked: "Nút để tiếp tục hiện đang hoạt động." confirmation_live_message_unchecked: "Nút để tiếp tục hiện không hoạt động. Bạn cần đánh dấu vào hộp kiểm để tiếp tục." + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -760,6 +826,11 @@ vi: description: > Dự án sẽ chỉ hiển thị với các thành viên dự án tùy thuộc vào vai trò và quyền liên quan của họ. Các tiểu dự án không bị ảnh hưởng và có cài đặt riêng. change_identifier: Thay đổi định danh + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Chọn các mẫu sẽ được sử dụng khi tạo các mục con mới. @@ -986,9 +1057,9 @@ vi: groups: member_in_these_groups: "Người dùng này hiện là thành viên của các nhóm sau:" no_results_title_text: Người dùng này hiện không phải là thành viên trong bất kỳ nhóm nào. - summary_with_more: Thành viên của %{names} và %{count_link}. + summary_with_more_html: Member of %{names} and %{count_link}. more: "%{count} thêm" - summary: Thành viên của %{names}. + summary_html: Member of %{names}. memberships: no_results_title_text: Người dùng này không phải là thành viên của dự án. open_profile: "Mở hồ sơ" @@ -1043,6 +1114,63 @@ vi: user: "Bây giờ người dùng có thể đăng nhập để truy cập %{project}. Trong khi đó, bạn có thể lập kế hoạch với người dùng đó và chỉ định các gói công việc chẳng hạn." placeholder_user: "Trình giữ chỗ hiện có thể được sử dụng trong %{project}. Trong khi đó, bạn có thể lập kế hoạch với người dùng đó và chỉ định các gói công việc chẳng hạn." group: "Nhóm hiện là một phần của %{project}. Trong khi đó, bạn có thể lập kế hoạch với nhóm đó và phân công các gói công việc chẳng hạn." + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "văn bản" placeholder_users: @@ -1050,11 +1178,11 @@ vi: Bạn không được phép xóa người dùng giữ chỗ. Bạn không có quyền quản lý thành viên cho tất cả các dự án mà người dùng giữ chỗ là thành viên. delete_tooltip: "Xóa người dùng giữ chỗ" deletion_info: - heading: "Xóa người dùng giữ chỗ %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > Tất cả các lần xuất hiện của người dùng giữ chỗ (ví dụ: với tư cách là người được chuyển nhượng, người chịu trách nhiệm hoặc giá trị người dùng khác) sẽ được chỉ định lại cho tài khoản có tên "Người dùng đã xóa". Vì dữ liệu của mọi tài khoản đã xóa được gán lại cho tài khoản này nên sẽ không thể phân biệt dữ liệu người dùng đã tạo với dữ liệu của tài khoản đã xóa khác. irreversible: "Hành động này không thể thay đổi được" - confirmation: "Nhập tên người dùng giữ chỗ %{name} để xác nhận việc xóa." + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1085,8 +1213,10 @@ vi: status_excluded_from_totals_text: |- Chọn tùy chọn này để loại trừ các gói công việc có trạng thái này khỏi tổng số Công việc, Công việc còn lại và % Hoàn thành theo thứ bậc. - status_percent_complete_text: |- - Trong chế độ tính toán tiến độ dựa trên trạng thái, phần trăm hoàn thành của gói công việc sẽ được tự động đặt thành giá trị này khi trạng thái này được chọn. Tỷ lệ hoàn thành dựa trên công việc bị bỏ qua trong chế độ dựa trên công việc. + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work + package is automatically set to this value when this status is selected. + Ignored in work-based mode. status_readonly_html: | Chọn tùy chọn này để đánh dấu các gói công việc có trạng thái này là chỉ đọc. Không có thuộc tính nào có thể được thay đổi ngoại trừ trạng thái. @@ -1348,7 +1478,7 @@ vi: Đăng ký người dùng bị giới hạn đối với nhà cung cấp dịch vụ đăng nhập một lần '%{name}'. Vui lòng yêu cầu quản trị viên kích hoạt tài khoản cho bạn hoặc thay đổi giới hạn tự đăng ký cho nhà cung cấp này. login_with_auth_provider: "hoặc đăng nhập bằng tài khoản hiện tại" signup_with_auth_provider: "hoặc sử dụng đăng ký" - auth_source_login: Vui lòng đăng nhập với %{login} để kích hoạt tài khoản của bạn. + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: Vui lòng đăng nhập để kích hoạt tài khoản của bạn. actionview_instancetag_blank_option: "Vui lòng chọn" activemodel: @@ -1619,6 +1749,11 @@ vi: consented_at: "Đồng ý tại" group: identity_url: "URL nhận dạng" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "Nhìn và cảm nhận" header_alerts: "cảnh báo" @@ -1627,8 +1762,6 @@ vi: button_update_user_information: "Cập nhật hồ sơ" comments_sorting: "Hiển thị hoạt động gói công việc được sắp xếp theo" disable_keyboard_shortcuts: "Tắt phím tắt" - disable_keyboard_shortcuts_caption_html: |- - Bạn có thể tắt các phím tắt mặc định nếu bạn sử dụng trình đọc màn hình hoặc muốn tránh vô tình kích hoạt một hành động bằng phím tắt. dismissed_enterprise_banners: "Biểu ngữ doanh nghiệp ẩn" impaired: "Viet nam" auto_hide_popups: "Tự động ẩn biểu ngữ thành công" @@ -1649,6 +1782,28 @@ vi: users/invitation/form_model: principal_type: "Loại lời mời" id_or_email: "Tên hoặc địa chỉ email" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "Ngày hoàn thành" sharing: "Chia sẻ" @@ -1703,6 +1858,8 @@ vi: before: "phải trước khi %{date}" before_or_equal_to: "phải có trước hay tương đương với %{date}" blank: "không được để trống" + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "cần phải đặt thuộc tính '%{property}'." cannot_delete_mapping: "được yêu cầu. Không thể xóa được." is_for_all_cannot_modify: "dành cho tất cả các dự án và do đó không thể sửa đổi được." @@ -1739,8 +1896,9 @@ vi: less_than_or_equal_to: "phải nhỏ hơn hoặc bằng %{count}" not_available: "không khả dụng do cấu hình hệ thống." not_deletable: "không thể xóa được." + not_editable: "cannot be edited because it is already in effect." not_current_user: "không phải là người dùng hiện tại." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "không tìm thấy." not_a_date: "không phải là ngày hợp lệ" not_a_datetime: "không phải là thời gian hợp lệ" @@ -1771,6 +1929,10 @@ vi: không cung cấp "Bối cảnh an toàn". Sử dụng HTTPS hoặc địa chỉ loopback, chẳng hạn như localhost. wrong_length: "độ dài không đúng (phải là %{count} ký tự)." models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1880,6 +2042,9 @@ vi: project_initiation_request_disabled: "Yêu cầu khởi tạo dự án bị vô hiệu hóa. Nó phải được kích hoạt để tạo gói công việc tạo tác." types: in_use_by_work_packages: "gói công việc vẫn được sử dụng: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "Mô-đun '%{dependency}' cũng cần được bật vì mô-đun '%{module}' phụ thuộc vào mô-đun đó." format: "%{message}" @@ -2084,6 +2249,10 @@ vi: description: "'Xác nhận mật khẩu ' phải trùng với dữ liệu trong mục 'Mật khẩu mới'." status: invalid_on_create: "không phải là trạng thái hợp lệ cho người dùng mới." + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "Vui lòng chọn ít nhất một người dùng hoặc nhóm." role_blank: "cần được chỉ định." @@ -2332,8 +2501,8 @@ vi: Kích hoạt sao lưu sẽ cho phép bất kỳ người dùng nào có quyền và token sao lưu đều có thể tải xuống bản sao lưu có chứa tất cả dữ liệu của trang này. Nó cũng bao gồm dữ liệu của tất cả người dùng khác. info: > Bạn sẽ cần phải tạo một token sao lưu để có thể tạo bản sao lưu. Mỗi lần bạn muốn yêu cầu sao lưu, bạn sẽ phải cung cấp mã token này. Bạn có thể xóa mã token sao lưu để vô hiệu hóa các bản sao lưu cho người dùng này. - verification: > - Nhập %{word} để xác nhận bạn muốn %{action} mã token sao lưu. + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: Đặt lại verification_word_create: Tạo warning: > @@ -2751,7 +2920,7 @@ vi: teaser: title: other: "%{count} ngày còn lại của %{trial_plan} mã thông báo dùng thử" - description: "Bạn có quyền truy cập vào tất cả các tính năng %{trial_plan}." + description_html: "You have access to all %{trial_plan} features." trial: not_found: "Bạn đã yêu cầu mã thông báo dùng thử nhưng yêu cầu đó không còn nữa. Vui lòng thử lại." wait_for_confirmation: "Chúng tôi đã gửi cho bạn một email để xác nhận địa chỉ của bạn nhằm lấy mã thông báo dùng thử." @@ -2768,10 +2937,8 @@ vi: confirmation_subline: > Vui lòng kiểm tra hộp thư đến của bạn và làm theo các bước để bắt đầu dùng thử miễn phí 14 ngày. domain_caption: Mã thông báo sẽ hợp lệ cho tên máy chủ hiện được định cấu hình của bạn. - receive_newsletter_html: > - Tôi muốn nhận bản tin OpenProject . - consent_html: > - Tôi đồng ý với điều khoản dịch vụchính sách quyền riêng tư. + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "Tàn tật." @@ -2859,8 +3026,8 @@ vi: work_package_edit: "Đã chỉnh sửa work package" work_package_note: "Đã thêm ghi chú của work package" title: - project: "Dự án: %{name}" - subproject: "Tiểu dự án: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "xuất khẩu" @@ -3111,6 +3278,7 @@ vi: Chế độ lập lịch tự động điều chỉnh khi cập nhật phiên bản. totals_removed_from_childless_work_packages: >- Tổng số công việc và tiến độ tự động bị xóa cho các gói công việc không có cha với cập nhật phiên bản. Đây là một nhiệm vụ bảo trì và có thể được bỏ qua một cách an toàn. + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- Các gói công việc con không có Công việc sẽ bị bỏ qua. total_percent_complete_mode_changed_to_simple_average: >- @@ -3118,9 +3286,9 @@ vi: links: configuration_guide: "Hướng dẫn cấu hình" get_in_touch: "Nếu bạn còn những câu hỏi khác ? Hãy liên lạc với chúng tôi" - instructions_after_registration: "Bạn có thể đăng nhập ngay sau khi tài khoản của bạn đã được kích hoạt bằng cách nhấn vào %{signin}." - instructions_after_logout: "Bạn có thể đăng nhập một lần nữa bằng cách nhấp vào %{signin}." - instructions_after_error: "Bạn có thể thử đăng nhập lại bằng cách nhấn vào %{signin}. Nếu lỗi vẫn còn, yêu cầu quản trị của bạn để được giúp đỡ." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "Trí tuệ nhân tạo (AI)" @@ -3312,6 +3480,8 @@ vi: label_calendar_show: "Hiển thị Lịch" label_category: "thể loại" label_completed: Đã hoàn thành + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "Sự đồng ý của người dùng" label_wiki_menu_item: Khoản mục menu wiki label_select_main_menu_item: Chọn mục trình đơn chính mới @@ -3478,6 +3648,7 @@ vi: label_subject_or_id: "Chủ đề hoặc Mã" label_calendar_subscriptions: "Đăng ký lịch" label_identifier: "định danh" + label_project_identifier: "Project identifier" label_in: "trong" label_in_less_than: "ít hơn" label_in_more_than: "nhiều hơn" @@ -3611,11 +3782,13 @@ vi: label_news_view_all: "Xem tất cả tin" label_next: "Tiếp" label_next_week: "Tuần tới" + label_next_year: "Next year" label_no_change_option: "(không đổi)" label_no_data: "Không có dữ liệu để hiển thị" label_no_due_date: "không có ngày kết thúc" label_no_start_date: "không có ngày bắt đầu" label_no_parent_page: "Không có trang quan hệ" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "thông báo" label_nothing_display: "Không có gì để hiển thị" label_nobody: "không ai" @@ -3644,6 +3817,8 @@ vi: label_overall_activity: "Tổng thể hoạt động" label_overview: "Tổng quan" label_page_title: "Tiêu đề trang" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "một phần của" label_password_lost: "Quên Mật Khẩu?" label_password_rule_lowercase: "Chữ thường" @@ -3670,6 +3845,7 @@ vi: label_preview_not_available: "Xem trước không có sẵn" label_previous: "Trước đó" label_previous_week: "Tuần trước" + label_previous_year: "Previous year" label_principal_invite_via_email: "hoặc mời người dùng mới qua email" label_principal_search: "Thêm người dùng hoặc nhóm hiện có" label_privacy_policy: "Chính sách bảo mật và quyền riêng tư dữ liệu" @@ -3781,6 +3957,7 @@ vi: label_start_to_start: "bắt đầu đến bắt đầu" label_statistics: "Số liệu thống kê" label_status: "trạng thái" + label_status_plural: "Statuses" label_storage_free_space: "Dung lượng đĩa còn lại" label_storage_used_space: "Dung lượng đĩa đã sử dụng" label_storage_group: "Hệ thống tập tin lưu trữ %{identifier}" @@ -3809,6 +3986,7 @@ vi: label_title: "tiêu đề" label_projects_menu: "dự án" label_today: "hôm nay" + label_today_capitalized: "hôm nay" label_token_version: "Phiên bản mã thông báo" label_today_as_start_date: "Chọn hôm nay làm ngày bắt đầu." label_today_as_due_date: "Chọn hôm nay làm ngày kết thúc." @@ -3829,7 +4007,7 @@ vi: label_user: "Người dùng" label_user_and_permission: "Người dùng và quyền" label_user_named: "Người dùng %{name}" - label_user_activity: "%{value} hoạt động" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "vô danh" label_user_menu: "Trình đơn người dùng" label_user_new: "Người dùng mới" @@ -3916,6 +4094,12 @@ vi: one: "1 tập tin" other: "%{count} tệp" zero: "không có tập tin" + label_x_days: + other: "%{count} days" + label_x_working_days: + other: "%{count} working days" + label_x_working_days_time_off: + other: "Time off: %{count} working days" label_yesterday: "ngày hôm qua" label_zen_mode: "Chế độ Zen" label_role_type: "loại" @@ -3924,6 +4108,22 @@ vi: label_not_changeable: "(không thể thay đổi)" label_global: "toàn cầu" label_seeded_from_env_warning: Bản ghi này đã được tạo thông qua một biến môi trường cài đặt. Nó không thể chỉnh sửa thông qua giao diện người dùng. + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "Lỗi khi thực thi macro %{macro_name}" macro_unavailable: "Macro %{macro_name} không thể hiển thị." macros: @@ -3958,7 +4158,7 @@ vi: center: "Đến trung tâm thông báo" see_in_center: "Xem bình luận trong trung tâm thông báo" settings: "Thay đổi cài đặt email" - salutation: "Xin chào %{user}" + salutation: "Hello %{user}," salutation_full_name: "Tên đầy đủ" work_packages: created_at: "Được tạo tại %{timestamp} bởi %{user}" @@ -3987,7 +4187,7 @@ vi: note: "Lưu ý: “%{note}”" sharing: work_packages: - allowed_actions: "Bạn có thể %{allowed_actions} gói công việc này. Điều này có thể thay đổi tùy thuộc vào vai trò và quyền dự án của bạn." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "Để truy cập gói công việc này, bạn cần tạo và kích hoạt tài khoản trên %{instance}." open_work_package: "Mở gói công việc" subject: "Gói công việc #%{id} đã được chia sẻ với bạn" @@ -4086,9 +4286,9 @@ vi: roles: "Bây giờ bạn có các vai trò sau:" mail_user_activation_limit_reached: subject: Đã đạt đến giới hạn kích hoạt người dùng - message: | - Một người dùng mới (%{email}) đã cố gắng tạo tài khoản trên môi trường OpenProject mà bạn quản lý (%{host}). - Người dùng không thể kích hoạt tài khoản của họ vì đã đạt đến giới hạn người dùng. + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "Để cho phép người dùng đăng nhập, bạn có thể:" a: "Nâng cấp gói thanh toán của bạn ([here](upgrade_url))" #here turned into a link @@ -4271,6 +4471,12 @@ vi: permission_manage_versions: "Quản lý phiên bản" permission_manage_wiki: "Quản lý wiki" permission_manage_wiki_menu: "Quản lý menu wiki" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Di chuyển gói công việc" permission_protect_wiki_pages: "Bảo vệ các trang wiki" permission_rename_wiki_pages: "Đổi tên các trang wiki" @@ -4416,10 +4622,10 @@ vi: info: "Xóa kho lưu trữ là một hành động không thể đảo ngược." info_not_managed: "Lưu ý: Thao tác này sẽ KHÔNG xóa nội dung của kho lưu trữ này vì nó không được OpenProject quản lý." managed_path_note: "Thư mục sau sẽ bị xóa: %{path}" - repository_verification: "Nhập mã định danh của dự án %{identifier} để xác minh việc xóa kho lưu trữ của dự án." + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "Bạn có thực sự muốn xóa %{repository_type} của dự án %{project_name} không?" - subtitle_not_managed: "Bạn có thực sự muốn xóa %{repository_type} %{url} được liên kết khỏi dự án %{project_name} không?" - title: "Xóa %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "Xóa %{repository_type} được liên kết?" errors: build_failed: "Không thể tạo kho lưu trữ với cấu hình đã chọn. %{reason}" @@ -4469,7 +4675,7 @@ vi: storage: not_available: "Mức tiêu thụ dung lượng ổ đĩa không có sẵn cho kho lưu trữ này." update_timeout: "Giữ thông tin dung lượng ổ đĩa cần thiết cuối cùng cho kho lưu trữ trong N phút.\nVì việc tính dung lượng đĩa cần thiết của kho lưu trữ có thể tốn kém nên hãy tăng giá trị này để giảm tác động đến hiệu suất." - oauth_application_details: "Giá trị bí mật của máy khách sẽ không thể truy cập lại được sau khi bạn đóng cửa sổ này. Vui lòng sao chép các giá trị này vào cài đặt Tích hợp Nextcloud OpenProject:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Đi tới trang cài đặt" setup_documentation_details: "Nếu bạn cần trợ giúp định cấu hình bộ lưu trữ tệp mới, vui lòng kiểm tra tài liệu:" setup_documentation_details_link_text: "Thiết lập kho lưu trữ tập tin" @@ -4514,15 +4720,15 @@ vi: setting_apiv3_cors_title: "Chia sẻ tài nguyên chéo nguồn gốc (CORS)" setting_apiv3_cors_enabled: "Kích hoạt CORS" setting_apiv3_cors_origins: "Nguồn gốc được phép chia sẻ tài nguyên chéo nguồn gốc (CORS) của API V3" - setting_apiv3_cors_origins_text_html: > - Nếu CORS được kích hoạt, đây là các nguồn gốc được phép truy cập API của OpenProject.
Vui lòng kiểm tra Tài liệu về Header Origin để biết cách chỉ định các giá trị mong đợi. + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Viết quyền truy cập vào các thuộc tính chỉ đọc" setting_apiv3_write_readonly_attributes_instructions: > Nếu được bật, API sẽ cho phép quản trị viên ghi các thuộc tính tĩnh chỉ đọc trong quá trình tạo, chẳng hạn như createAt và tác giả. setting_apiv3_write_readonly_attributes_warning: > Cài đặt này có một trường hợp sử dụng chẳng hạn như nhập dữ liệu nhưng cho phép quản trị viên mạo danh việc tạo các mục như những người dùng khác. Tuy nhiên, tất cả các yêu cầu tạo đang được ghi lại với tác giả thực sự. - setting_apiv3_write_readonly_attributes_additional: > - Để biết thêm thông tin về các thuộc tính và tài nguyên được hỗ trợ, vui lòng xem %{api_documentation_link}. + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Kích thước trang API tối đa" setting_apiv3_max_page_size_instructions: > Đặt kích thước trang tối đa mà API sẽ phản hồi. Sẽ không thể thực hiện các yêu cầu API trả về nhiều giá trị hơn trên một trang. @@ -4619,7 +4825,7 @@ vi: setting_work_package_properties: "Thuộc tính gói công việc" setting_work_package_startdate_is_adddate: "Sử dụng ngày hiện tại làm ngày bắt đầu cho các gói công việc mới" setting_work_packages_projects_export_limit: "Gói công việc / Giới hạn xuất dự án" - setting_journal_aggregation_time_minutes: "Hành động của người dùng được tổng hợp trong" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "Ghi nhật ký thông tin đăng nhập, tên và địa chỉ thư của người dùng cho tất cả các yêu cầu" setting_login_required: "Yêu cầu xác thực" setting_login_required_caption: "Khi được chọn, tất cả các yêu cầu tới ứng dụng phải được xác thực." @@ -4700,6 +4906,12 @@ vi: setting_welcome_text: "Văn bản chặn chào mừng" setting_welcome_title: "Tiêu đề khối chào mừng" setting_welcome_on_homescreen: "Hiển thị khối chào mừng trên màn hình chính" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Chế độ đánh dấu mặc định" setting_work_package_list_default_highlighted_attributes: "Thuộc tính được đánh dấu nội tuyến mặc định" setting_working_days: "Ngày làm việc" @@ -4866,10 +5078,12 @@ vi: section_work_week: "tuần làm việc" section_holidays_and_closures: "Ngày lễ và đóng cửa" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "Bạn không có quyền cần thiết để xem trang này." activities: enable_internal_comments: "Bật nhận xét nội bộ" - helper_text: "Nhận xét nội bộ cho phép một nhóm nội bộ liên lạc riêng tư với nhau. Những quyền này chỉ hiển thị với những vai trò được chọn có các quyền cần thiết và sẽ không hiển thị công khai. %{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Gạch dưới" plain: "Văn bản thuần" @@ -4991,6 +5205,10 @@ vi: text_plugin_assets_writable: "Thư mục nội dung plugin có thể ghi" text_powered_by: "Được cung cấp bởi %{link}" text_project_identifier_info: "Chỉ cho phép chữ cái viết thường (a-z), số, dấu gạch ngang và dấu gạch dưới, phải bắt đầu bằng chữ cái viết thường." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Phân công lại cho gói công việc:" text_regexp_multiline: 'Biểu thức được áp dụng ở chế độ đa dòng. Ví dụ: ^---\s+' text_repository_usernames_mapping: "Chọn hoặc cập nhật người dùng OpenProject được ánh xạ tới từng tên người dùng được tìm thấy trong nhật ký kho lưu trữ.\nNgười dùng có cùng tên người dùng hoặc email của OpenProject và kho lưu trữ sẽ được tự động ánh xạ." @@ -5097,17 +5315,17 @@ vi: version_status_locked: "bị khóa" version_status_open: "mở" note: Lưu ý - note_password_login_disabled: "Đăng nhập bằng mật khẩu đã bị vô hiệu hóa bởi %{configuration}." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Cảnh báo warning_attachments_not_saved: "%{count} tệp không thể lưu được." - warning_imminent_user_limit: > - Bạn đã mời nhiều người dùng hơn số lượng được hỗ trợ bởi gói hiện tại của bạn. Những người dùng được mời có thể không thể tham gia vào môi trường OpenProject của bạn. Vui lòng nâng cấp gói của bạn hoặc khóa người dùng hiện tại để cho phép người dùng được mời và đã đăng ký tham gia. + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | Mail kích hoạt đã hết hạn. Sẽ gửi mail mới tới %{email}. warning_user_limit_reached: > Việc thêm người dùng bổ sung sẽ vượt quá giới hạn hiện tại. Vui lòng liên hệ với quản trị viên để tăng giới hạn người dùng nhằm đảm bảo người dùng bên ngoài có thể truy cập phiên bản này. - warning_user_limit_reached_admin: > - Thêm người dùng bổ sung sẽ vượt quá giới hạn hiện tại. Vui lòng nâng cấp gói của bạn để đảm bảo người dùng bên ngoài có thể truy cập vào phiên bản này. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > Bạn đã đạt đến giới hạn người dùng của mình (%{current}/%{max} người dùng đang hoạt động). Vui lòng liên hệ sales@openproject.com để nâng cấp gói phiên bản Enterprise của bạn và thêm người dùng bổ sung. warning_protocol_mismatch_html: > @@ -5167,7 +5385,7 @@ vi: reminders: label_remind_at: "ngày" note_placeholder: "Tại sao bạn đặt lời nhắc này?" - create_success_message: "Đã đặt lời nhắc thành công. Bạn sẽ nhận được thông báo về gói công việc này %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Đã cập nhật lời nhắc thành công." success_deletion_message: "Đã xóa lời nhắc thành công." sharing: @@ -5198,8 +5416,8 @@ vi: text_user_limit_reached_admins: 'Thêm người dùng bổ sung sẽ vượt quá giới hạn hiện tại. Vui lòng nâng cấp gói của bạn để có thể thêm nhiều người dùng hơn.' warning_user_limit_reached: > Việc thêm người dùng bổ sung sẽ vượt quá giới hạn hiện tại. Vui lòng liên hệ với quản trị viên để tăng giới hạn người dùng nhằm đảm bảo người dùng bên ngoài có thể truy cập %{entity} này. - warning_user_limit_reached_admin: > - Thêm người dùng bổ sung sẽ vượt quá giới hạn hiện tại. Vui lòng nâng cấp gói của bạn để đảm bảo người dùng bên ngoài có thể truy cập vào %{entity} này. + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Vui lòng chọn người dùng để chia sẻ %{entity} này với" warning_locked_user: "Người dùng %{user} đã bị khóa và không thể chia sẻ với" user_details: @@ -5319,6 +5537,7 @@ vi: project: Không được tiết lộ - Dự án vô hình vì thiếu quyền. ancestor: Không được tiết lộ - Tổ tiên là vô hình vì thiếu quyền. definingProject: Không được tiết lộ - Dự án vô hình vì thiếu quyền. + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "Xác thực" diff --git a/config/locales/crowdin/zh-CN.yml b/config/locales/crowdin/zh-CN.yml index 99ffac2256a..5d16f8a7ebd 100644 --- a/config/locales/crowdin/zh-CN.yml +++ b/config/locales/crowdin/zh-CN.yml @@ -108,7 +108,7 @@ zh-CN: jemalloc_allocator: 使用 jemalloc 内存分配器 journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "导入" jira: @@ -373,11 +373,69 @@ zh-CN: project_creation: "项目创建" notification_text_default: >

您好!

已创建一个新项目:projectValue:name

谢谢

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "默认转换" user_author: "用户是作者" user_assignee: "用户是指派人" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "登录和注册" announcements: @@ -598,6 +656,14 @@ zh-CN: danger_dialog: confirmation_live_message_checked: "继续按钮现已激活。" confirmation_live_message_unchecked: "继续按钮现已失效。您需要勾选复选框才能继续。" + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "可以访问 OpenProject MCP 服务器的 URL。设置 MCP 客户端时需要使用。" @@ -757,6 +823,11 @@ zh-CN: description: > 根据项目成员的角色和相关权限,项目只对他们可见。子项目不会受到影响并且有自己的设置。 change_identifier: 更改标识符 + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > 选择创建新的子条目时使用的模板。 @@ -983,9 +1054,9 @@ zh-CN: groups: member_in_these_groups: "此用户当前是以下组的成员:" no_results_title_text: 此用户当前不是任何组的成员。 - summary_with_more: '%{names} 和 %{count_link} 成员。' + summary_with_more_html: Member of %{names} and %{count_link}. more: "还有 %{count} 个" - summary: '%{names} 的成员。' + summary_html: Member of %{names}. memberships: no_results_title_text: 该用户当前非项目成员。 open_profile: "人员详情" @@ -1040,6 +1111,63 @@ zh-CN: user: "该用户现在可以登录以访问 %{project}。同时,您已经可以与该用户一起制定计划并分配工作包等。" placeholder_user: "现在可以在 %{project} 中使用占位符。同时,您已经可以与该用户一起制定计划并分配工作包等。" group: "该组现已加入 %{project}。同时,您已经可以与该组一起制定计划并分配工作包等。" + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "文本" placeholder_users: @@ -1047,11 +1175,11 @@ zh-CN: 不允许删除占位符用户。您无权管理任何成员包含占位符用户的项目中的成员。 delete_tooltip: "删除占位符用户" deletion_info: - heading: "删除占位符用户 %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > 出现的所有占位符用户(例如,作为受理人、负责人或其他用户值)将被重新分配给一个名为“已删除用户”的帐户。 由于每个已删除帐户的数据都会被重新分配给此帐户,因此无法将用户创建的数据与另一个已删除帐户的数据区分。 irreversible: "此操作不可逆" - confirmation: "输入占位符用户名 %{name} 以确认删除。" + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1082,9 +1210,10 @@ zh-CN: status_excluded_from_totals_text: |- 选中此选项可将具有此状态的工作包排除在层次结构中的 "工时"、 "剩余工时 "和 "完成百分比 "总数之外。 - status_percent_complete_text: |- - 在基于状态的进度计算模式下,当选择该状态时,工作包的 完成% 会自动设置为该值。 - 在基于工作的模式下忽略。 + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work + package is automatically set to this value when this status is selected. + Ignored in work-based mode. status_readonly_html: | 选中此选项将此状态的工作包标记为只读。 除了状态外,不能更改其他属性。 @@ -1346,7 +1475,7 @@ zh-CN: 用户注册在'%{name}'单点登录提供商上受限。请向管理员请求激活您的账户,或者更改该提供商的自主注册限制。 login_with_auth_provider: "或使用您的现有帐户登录" signup_with_auth_provider: "或注册使用" - auth_source_login: 请使用 %{login} 登录来激活您的帐户, + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: 请登录以激活您的帐户。 actionview_instancetag_blank_option: "请选择" activemodel: @@ -1617,6 +1746,11 @@ zh-CN: consented_at: "同意在" group: identity_url: "身份 URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "外观和风格" header_alerts: "提醒" @@ -1625,8 +1759,6 @@ zh-CN: button_update_user_information: "更新配置文件" comments_sorting: "显示工作包活动排序方式" disable_keyboard_shortcuts: "禁用键盘快捷键" - disable_keyboard_shortcuts_caption_html: |- - 如果您使用屏幕阅读器或希望避免意外触发快捷键,您可以选择禁用默认键盘快捷键。 dismissed_enterprise_banners: "隐藏企业横幅" impaired: "辅助功能模式" auto_hide_popups: "自动隐藏成功横幅" @@ -1647,6 +1779,28 @@ zh-CN: users/invitation/form_model: principal_type: "邀请类型" id_or_email: "用户名或电子邮件地址" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "完成日期" sharing: "共享" @@ -1701,6 +1855,8 @@ zh-CN: before: "必须在 %{date} 之前。" before_or_equal_to: "必须在早于或等于 %{date}" blank: "不能为空。" + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "需要设置属性“%{property}”。" cannot_delete_mapping: "必需项,不能删除" is_for_all_cannot_modify: "适用于所有项目,因此不能修改。" @@ -1737,8 +1893,9 @@ zh-CN: less_than_or_equal_to: "必须小于或等于 %{count}。" not_available: "因系统配置而不可用。" not_deletable: "无法删除。" + not_editable: "cannot be edited because it is already in effect." not_current_user: "不是当前用户。" - only_one_active_sprint_allowed: "每个项目只允许有一个有效冲刺。" + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "未找到" not_a_date: "不是有效的日期。" not_a_datetime: "不是有效的日期时间。" @@ -1769,6 +1926,10 @@ zh-CN: 未提供“安全上下文”。使用 HTTPS 或环回地址,例如 localhost。 wrong_length: "长度不正确 (应该是 %{count} 个字符)。" models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1878,6 +2039,9 @@ zh-CN: project_initiation_request_disabled: "项目启动请求已禁用。必须启用才能创建工件工作包。" types: in_use_by_work_packages: "仍在使用的工作包: %{types}" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "还需要启用模块“%{dependency}”,因为模块“%{module}”依赖于该模块。" format: "%{message}" @@ -2082,6 +2246,10 @@ zh-CN: description: "“确认密码”应该与“新密码”相同。" status: invalid_on_create: "不是新用户的有效状态" + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "请选择至少一个用户或组。" role_blank: "需要进行分配。" @@ -2330,8 +2498,8 @@ zh-CN: 启用备份将允许具有所需权限和此备份令牌的任何用户下载包含此 OpenProject 安装的所有数据的备份。这包括所有其他用户的数据。 info: > 您需要生成备份令牌才能创建备份。每次您要请求备份时,都必须提供此令牌。您可以删除备份令牌以禁用此用户的备份。 - verification: > - 输入 %{word} 以确认您要%{action}备份令牌。 + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: 重置 verification_word_create: 创建 warning: > @@ -2749,7 +2917,7 @@ zh-CN: teaser: title: other: "%{trial_plan} 试用令牌剩余 %{count} 天" - description: "您可以访问 %{trial_plan} 的所有功能。" + description_html: "You have access to all %{trial_plan} features." trial: not_found: "您已申请试用令牌,但该申请已不再可用。请重试。" wait_for_confirmation: "我们向您发送了一封电子邮件来确认地址,以便检索试用令牌。" @@ -2766,10 +2934,8 @@ zh-CN: confirmation_subline: > 请检查您的收件箱,并按照步骤开始 14 天免费试用。 domain_caption: 该令牌将对您当前配置的主机名有效。 - receive_newsletter_html: > - 我希望接收 OpenProject 简报。 - consent_html: > - 我同意服务条款隐私政策。 + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "已禁用。" @@ -2857,8 +3023,8 @@ zh-CN: work_package_edit: "编辑工作包" work_package_note: "添加工作包注释" title: - project: "项目: %{name}" - subproject: "子项目:%{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "导出" @@ -3109,6 +3275,7 @@ zh-CN: 随版本更新自动适配调度模式。 totals_removed_from_childless_work_packages: >- 使用 版本更新的非父工作包的工作和进度总计自动移除。 这是一个维护任务,可以安全地被忽略。 + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- 无工时的子工作包被忽略。 total_percent_complete_mode_changed_to_simple_average: >- @@ -3116,9 +3283,9 @@ zh-CN: links: configuration_guide: "配置指南" get_in_touch: "遇到问题了?与我们联系。" - instructions_after_registration: "只要您的帐户已被激活您可以点击 %{signin} 登录。" - instructions_after_logout: "你可以点击 %{signin} 重新登录。" - instructions_after_error: "你可以尝试点击 %{signin} 重新登录。如果错误仍然存在,请向您的管理员寻求帮助。" + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "人工智能 (AI)" @@ -3310,6 +3477,8 @@ zh-CN: label_calendar_show: "显示日历" label_category: "类别" label_completed: 已完成 + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "用户同意" label_wiki_menu_item: 维基菜单项 label_select_main_menu_item: 选择新的主菜单项 @@ -3476,6 +3645,7 @@ zh-CN: label_subject_or_id: "主题或ID" label_calendar_subscriptions: "日历订阅" label_identifier: "标识符" + label_project_identifier: "Project identifier" label_in: "在" label_in_less_than: "在小于" label_in_more_than: "在多于" @@ -3609,11 +3779,13 @@ zh-CN: label_news_view_all: "查看所有新闻" label_next: "下一个" label_next_week: "下周" + label_next_year: "Next year" label_no_change_option: "(不变)" label_no_data: "没有要显示的数据" label_no_due_date: "没有完成日期" label_no_start_date: "没有开始日期" label_no_parent_page: "无父级页面" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "通知" label_nothing_display: "不显示" label_nobody: "没人" @@ -3642,6 +3814,8 @@ zh-CN: label_overall_activity: "总体活动" label_overview: "概述" label_page_title: "页面标题" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "一部分" label_password_lost: "忘记密码?" label_password_rule_lowercase: "小写字母" @@ -3668,6 +3842,7 @@ zh-CN: label_preview_not_available: "预览不可用" label_previous: "上一个" label_previous_week: "前一周" + label_previous_year: "Previous year" label_principal_invite_via_email: " 或通过电子邮件邀请新用户" label_principal_search: "添加现有用户或组" label_privacy_policy: "数据隐私和安全政策" @@ -3779,6 +3954,7 @@ zh-CN: label_start_to_start: "开始开始" label_statistics: "统计数据" label_status: "状态" + label_status_plural: "Statuses" label_storage_free_space: "剩余磁盘空间" label_storage_used_space: "已用磁盘空间" label_storage_group: "存储文件系统 %{identifier}" @@ -3807,6 +3983,7 @@ zh-CN: label_title: "标题" label_projects_menu: "项目" label_today: "今天" + label_today_capitalized: "今天" label_token_version: "令牌版本" label_today_as_start_date: "选择今天为开始日期。" label_today_as_due_date: "选择今天为结束日期。" @@ -3827,7 +4004,7 @@ zh-CN: label_user: "用户" label_user_and_permission: "用户和权限" label_user_named: "用户 %{name}" - label_user_activity: "%{value} 的活动" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "匿名" label_user_menu: "用户菜单" label_user_new: "新用户" @@ -3914,6 +4091,12 @@ zh-CN: one: "1 个文件" other: "%{count} 个文件" zero: "无文件" + label_x_days: + other: "%{count} days" + label_x_working_days: + other: "%{count} working days" + label_x_working_days_time_off: + other: "Time off: %{count} working days" label_yesterday: "昨天" label_zen_mode: "极简模式" label_role_type: "类型" @@ -3922,6 +4105,22 @@ zh-CN: label_not_changeable: "(不变)" label_global: "全局" label_seeded_from_env_warning: 此记录是通过设置环境变量创建的,无法通过 UI 编辑。 + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "执行宏 %{macro_name} 出错" macro_unavailable: "无法显示宏 %{macro_name} 。" macros: @@ -3956,7 +4155,7 @@ zh-CN: center: "前往通知中心" see_in_center: "在通知中心查看评论" settings: "更改电子邮件设置" - salutation: "%{user},您好!" + salutation: "Hello %{user}," salutation_full_name: "全名" work_packages: created_at: "由 %{user} 于 %{timestamp} 创建" @@ -3985,7 +4184,7 @@ zh-CN: note: "注:\"%{note}\"" sharing: work_packages: - allowed_actions: "你可以 %{allowed_actions} 这个工作包。这可以基于你的项目角色和权限而变化。" + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "要访问此工作包,您需要创建一个 %{instance} 帐户。" open_work_package: "打开工作包" subject: "工作包 #%{id} 已被分享给你" @@ -4083,8 +4282,9 @@ zh-CN: roles: "您现在具有以下角色:" mail_user_activation_limit_reached: subject: 已达到用户激活限制 - message: | - 新用户 (%{email}) 试图在您管理的 OpenProject 环境 (%{host}) 上创建帐户。用户无法激活其帐户, 因为已达到用户限制。 + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "要允许用户登录, 您可以: " a: "([在这里](upgrade_url)) 升级付款计划" #here turned into a link @@ -4266,6 +4466,12 @@ zh-CN: permission_manage_versions: "管理版本" permission_manage_wiki: "管理维基" permission_manage_wiki_menu: "管理维基菜单" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "移动工作包" permission_protect_wiki_pages: "保护维基页面" permission_rename_wiki_pages: "重命名维基页面" @@ -4409,10 +4615,10 @@ zh-CN: info: "删除存储库是一个不可逆转的操作。" info_not_managed: "注意: 这不会删除该存储库的内容,它不由 OpenProject 托管。" managed_path_note: "以下目录将被删除: %{path}" - repository_verification: "输入项目的标识符 %{identifier},以确认其存储库中的删除。" + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "你确定要删除项目 %{project_name} 的 %{repository_type} 吗?" - subtitle_not_managed: "你真的想要从项目 %{project_name} 删除链接的 %{repository_type} %{url}?" - title: "删除 %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "删除链接的 %{repository_type} 吗?" errors: build_failed: "在所选的配置下无法创建存储库。%{reason}" @@ -4462,7 +4668,7 @@ zh-CN: storage: not_available: "磁盘存储开销不可用于此存储库。" update_timeout: "在 N 分钟内保留存储库最后所需磁盘空间的信息。由于计算存储库所需的磁盘空间可能增加系统开销,增加该值可以减少性能影响。" - oauth_application_details: "关闭此窗口后,将无法再次访问客户端密钥值。请将这些值复制到 Nextcloud OpenProject 集成设置中:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "转到设置页面" setup_documentation_details: "如果您在配置新文件存储方面需要帮助,请查看文档:" setup_documentation_details_link_text: "文件存储设置" @@ -4507,15 +4713,15 @@ zh-CN: setting_apiv3_cors_title: "跨源资源共享 (CORS)" setting_apiv3_cors_enabled: "启用 CORS" setting_apiv3_cors_origins: "API v3 跨域资源共享 (CORS) 允许的域" - setting_apiv3_cors_origins_text_html: > - 如果启用了 CORS ,这些是允许访问 OpenProject API 的源。
请查看有关“源”标题的文档,了解如何指定预期值。 + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "对只读属性的写访问权限" setting_apiv3_write_readonly_attributes_instructions: > 启用后,API 将允许管理员在创建过程中写入静态只读属性,如 createdAt 和 author。 setting_apiv3_write_readonly_attributes_warning: > 此设置可用于数据导入等用例,但允许管理员以其他用户身份模拟项目创建。不过,所有创建请求都会记录真实作者信息。 - setting_apiv3_write_readonly_attributes_additional: > - 有关特性和受支持资源的详细信息,请参阅%{api_documentation_link}。 + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "最大 API 页面大小" setting_apiv3_max_page_size_instructions: > 设置 API 将响应的最大页面大小。将无法执行在单个页面上返回更多值的 API 请求。 @@ -4612,7 +4818,7 @@ zh-CN: setting_work_package_properties: "工作包属性" setting_work_package_startdate_is_adddate: "使用当前日期作为新工作包的开始日期" setting_work_packages_projects_export_limit: "工作包/项目导出限制" - setting_journal_aggregation_time_minutes: "聚合该时间内的用户操作" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "记录所有请求的用户帐户,名称和邮件地址" setting_login_required: "需要身份验证" setting_login_required_caption: "如果选中,应用程序的所有请求都必须经过验证。" @@ -4693,6 +4899,12 @@ zh-CN: setting_welcome_text: "欢迎块文本" setting_welcome_title: "欢迎块标题" setting_welcome_on_homescreen: "在主屏幕上显示欢迎信息" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "默认突出显示模式" setting_work_package_list_default_highlighted_attributes: "默认内联突出显示属性" setting_working_days: "工作日" @@ -4859,10 +5071,12 @@ zh-CN: section_work_week: "工作周" section_holidays_and_closures: "节假日与停业" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "您没有查看此页面的权限。" activities: enable_internal_comments: "启用内部评论" - helper_text: "内部评论允许内部团队私下里互相沟通。这些评论仅对拥有相应权限的选定角色可见,并且不会公开显示。%{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "纯文本" @@ -4984,6 +5198,10 @@ zh-CN: text_plugin_assets_writable: "插件资产目录可写" text_powered_by: "Powered by %{link}" text_project_identifier_info: "只有小写字母 (a-z)、 数字、 短划线和下划线被允许,必须以小写字母开头。" + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "重新分配工作包:" text_regexp_multiline: '以多行模式应用正则表达式,如 ^---\s+' text_repository_usernames_mapping: "选择或更新每个在存储库日志中发现的用户名所映射到的 OpenProject 用户。\n使用相同 OpenProject 和存储库用户名或电子邮件的用户已被自动映射。" @@ -5090,17 +5308,17 @@ zh-CN: version_status_locked: "锁定" version_status_open: "打开" note: 请注意 - note_password_login_disabled: "密码登录已被 %{configuration} 禁用。" + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: 警告 warning_attachments_not_saved: "%{count} 文件不能被保存。" - warning_imminent_user_limit: > - 您邀请的用户数超过了当前计划支持的用户数。 受邀用户可能无法加入您的OpenProject环境。 请升级您的计划或阻止现有用户,以允许受邀和注册用户加入。 + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | 激活邮件已过期,我们给您发送了一封新邮件到%{email}。请单击内部的链接以激活您的帐户。 warning_user_limit_reached: > 添加额外的用户将超出当前限制。请联系管理员以增加用户限制,以确保外部用户能够访问此实例。 - warning_user_limit_reached_admin: > - 添加额外的用户将超出当前限制。请升级您的计划,以确保外部用户能够访问此实例。 + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > 您达到了用户限制(%{current}/%{max}活跃用户)。 请联系sales@openproject.com以升级您的Enterprise edition计划并添加其他用户。 warning_protocol_mismatch_html: > @@ -5160,7 +5378,7 @@ zh-CN: reminders: label_remind_at: "日期" note_placeholder: "您为什么要设置此提醒?" - create_success_message: "提醒设置成功。您将在%{reminder_time}收到此工作包的通知。" + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "提醒更新成功。" success_deletion_message: "提醒已成功删除。" sharing: @@ -5191,8 +5409,8 @@ zh-CN: text_user_limit_reached_admins: '添加更多用户将超出当前限制。请升级您的计划,以便添加更多用户。' warning_user_limit_reached: > 添加其他用户将超出当前限制。请联系管理员增加用户限制,以确保外部用户能够访问 %{entity}。 - warning_user_limit_reached_admin: > - 添加其他用户将超出当前限制。请升级您的计划,以确保外部用户能够访问 %{entity}。 + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "请选择要与之共享此 %{entity} 的用户" warning_locked_user: "用户 %{user} 已锁定,不能与他人共享。" user_details: @@ -5312,6 +5530,7 @@ zh-CN: project: 未公开 - 由于缺少权限,项目不可见。 ancestor: 未公开 - 由于缺少权限,上级不可见。 definingProject: 未公开 - 由于缺少权限,项目不可见。 + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "预授权" diff --git a/config/locales/crowdin/zh-TW.yml b/config/locales/crowdin/zh-TW.yml index f3e4e36d2c0..63562a0aecf 100644 --- a/config/locales/crowdin/zh-TW.yml +++ b/config/locales/crowdin/zh-TW.yml @@ -108,7 +108,7 @@ zh-TW: jemalloc_allocator: Jemalloc 記憶體分配器 journal_aggregation: caption: > - Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect the [webhook](webhook_link) delay. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: @@ -373,11 +373,69 @@ zh-TW: project_creation: "專案建立" notification_text_default: >

您好,

已建立新專案: projectValue:name

謝謝

+ work_packages_identifier: + page_header: + description: Choose between basic numerical work packages IDs or project-specific ones that prepend the project identifier to the work package ID. + banner: + existing_identifiers_notice: > + Existing identifiers for %{project_count} projects don't meet requirements for project-based alphanumerical identifiers. OpenProject can automatically update these so that they are valid as in the examples below. Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based alphanumerical identifiers. + box_header: + label_project: Project + label_previous_identifier: Previous identifier + label_autofixed_suggestion: Future identifier + label_example_work_package_id: Example work package ID + autofix_preview: + error_too_long: Has to be fewer than 5 characters + error_special_characters: Special characters not allowed + error_in_use: Already in use as another project's active handle + error_reserved: Reserved by another project's handle history + remaining_projects: + other: "... %{count} more projects" + button_autofix: Autofix and save + dialog: + title: Change work package identifiers + heading: Enable project-based work package IDs? + description: > + This will change IDs for all work packages in all projects in this instance. Previous identifiers and URLs will continue to redirect properly. This change will take some time to complete. + confirm_button: Change identifiers + checkbox_label: I understand that this will permanently change all work package IDs + success_banner: Successfully updated work package identifier format. + in_progress: + banner_message: Project identifiers are currently being updated to project-based alphanumerical identifiers. This may take some time. workflows: tabs: default_transitions: "預設轉換" user_author: "使用者為作者" user_assignee: "使用者為執行者" + index: + description: "Configure status transitions for each work package type." + type_filter: + label: "Filter by type name…" + status_button: "Status" + statuses_dialog: + title: "Statuses" + label: "Statuses enabled for this type" + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + statuses_removal_dialog: + title: "Remove statuses" + heading: + other: "Remove %{count} statuses?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + confirm: "Remove" + leave_confirmation: + title: "Save changes before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + ignore: "Ignore changes" + save: "Save changes and continue" + role_selector: + label: "Role: %{role}" + no_role: "Select role" + blankslate: + title: "No status transitions configured" + description: "Add statuses to start configuring workflows for this role" + info: + database_deprecation_html: > + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "登入及註冊" announcements: @@ -600,6 +658,14 @@ zh-TW: danger_dialog: confirmation_live_message_checked: "繼續的按鈕現已啟用。" confirmation_live_message_unchecked: "繼續的按鈕現在沒有作用。您需要勾選核取方塊才能繼續。" + pagination: + label: "Pagination" + prev: "Previous" + prev_page: "Previous Page" + next: "Next" + next_page: "Next Page" + page: "Page %{number}" + page_with_more: "Page %{number}..." mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." @@ -759,6 +825,11 @@ zh-TW: description: > 這個專案只對依據其角色和相關權限的專案成員可见。子專案不受影響,並擁有其自己的設定。 change_identifier: 變更識別碼 + change_identifier_dialog_title: Change project identifier + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." + change_identifier_warning: > + This will permanently change identifiers and URLs of all work packages in this project. The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > 選取建立新子項時要使用的範本。 @@ -985,9 +1056,9 @@ zh-TW: groups: member_in_these_groups: "此用戶當前是以下群組的成員:" no_results_title_text: 這個使用者目前不是任何群組的成員 - summary_with_more: '%{names} 和 %{count_link}的成員。' + summary_with_more_html: Member of %{names} and %{count_link}. more: "其餘 %{count} 項" - summary: '%{names}的成員。' + summary_html: Member of %{names}. memberships: no_results_title_text: 這個使用者目前不是任何專案的成員 open_profile: "開啟個人資料" @@ -1042,6 +1113,63 @@ zh-TW: user: "使用者現在可以登入 %{project}。與此同時,您已經可以與該使用者一起進行規劃,例如指派工作套件。" placeholder_user: "佔位符現在可在 %{project} 中使用。與此同時,您已經可以使用該使用者進行規劃,例如指派工作套件。" group: "現在該群組成為 %{project} 的一部分。與此同時,您已經可以使用該群組進行規劃,例如指派工作套件。" + working_hours: + current_schedule: + title: "Current schedule" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + availability_subtitle: "Dedicated to project work" + effective_hours: "Effective work hours" + effective_subtitle: "Per week" + not_set: "Not set" + future: + title: "Future schedules" + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + add_button: "Add future schedule" + blank_title: "No future schedules planned" + blank_description: "Create a future schedule to plan changes ahead of time" + history: + title: "Schedule history" + description: "View your past work schedules." + blank_title: "No schedule history yet" + blank_description: "Past schedule changes will appear here" + destroy: + confirm: "Are you sure you want to delete this working schedule?" + form: + title: "Plan a future work schedule" + title_current: "Edit current work schedule" + start_date: "Start date" + start_date_caption: "Select the date from when the new work schedule will be effective." + work_days: "Work days" + working_hours_label: "Working hours" + hours_mode_label: "Hours mode" + same_hours_mode: "Same hours per day" + individual_hours_mode: "Individual hours per day" + work_hours: "Work hours" + hours_per_day: "Hours per day" + per_day: "per day" + per_week: "per week" + total_work_hours: "Total work hours" + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_factor: "Availability factor" + availability_factor_caption: "Define the percentage of your working time dedicated to project work." + total_available_hours: "Total available work hours" + title_availability_factor: "Availability factor" + title_days_and_hours: "Days and hours" + title_future_dates: "Future dates" + table: + mobile_title: "Working schedules" + start_date: "Start date" + work_days: "Work days" + work_hours: "Work hours" + availability_factor: "Availability factor" + effective_work_hours: "Effective work hours" + work_days_count: + other: "%{count} working days" + user_preferences: + disable_keyboard_shortcuts_caption: > + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "文字" placeholder_users: @@ -1049,11 +1177,11 @@ zh-TW: 您無權刪除佔位符使用者。您無權管理佔位使用者為成員的所有專案的成員。 delete_tooltip: "刪除佔位使用者" deletion_info: - heading: "刪除佔位符使用者 %{name}" + heading_html: "Delete placeholder user %{name}" data_consequences: > 出現的所有佔位符用戶(例如,作為受理人、負責人或其他用戶值) 將被重新分配給一個名為“已刪除用戶”的帳戶。 由於每個已刪除帳戶的數據都會被重新分配給此帳戶,因此無法將用戶創建的數據與另一個已刪除帳戶的數據區分。 irreversible: "這一行動是不可還原的" - confirmation: "輸入佔位符使用者名稱 %{name} 確認刪除。" + confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: edit: priority_color_text: | @@ -1083,9 +1211,10 @@ zh-TW: 新工作套件預設為此類型。它們不能為唯讀。 status_excluded_from_totals_text: |- 勾選此選項以排除具有此狀態的工作套件,讓它們不計入階層中的工作總量、剩餘工作量及完成百分比。 - status_percent_complete_text: |- - 在 狀態導向的進度計算模式 中,選擇此狀態時,工作套件的完成百分比將自動設定為此值。 - 若使用工作量導向模式,此設定將被忽略。 + status_percent_complete_text_html: |- + In [status-based progress calculation mode](setting_url), the % Complete of a work + package is automatically set to this value when this status is selected. + Ignored in work-based mode. status_readonly_html: | 勾選此選項可以將該狀態的工作套件標記為唯讀。 除狀態外,任何屬性都無法改變。 @@ -1346,7 +1475,7 @@ zh-TW: 用戶註冊在'%{name}'單點登錄提供商上受限。請向管理員請求啟用您的賬戶,或者更改該提供商的自主註冊限制。 login_with_auth_provider: "或使用您的現有帳號登錄" signup_with_auth_provider: "或者註冊" - auth_source_login: 請登入 %{login} 來啟用您的帳號。 + auth_source_login_html: Please login as %{login} to activate your account. omniauth_login: 請登入來啟用您的帳號。 actionview_instancetag_blank_option: "請選擇" activemodel: @@ -1617,6 +1746,11 @@ zh-TW: consented_at: "同意在" group: identity_url: "身份識別 URL" + parent: "Parent group" + organizational_unit: "Organizational unit" + group_detail: + parent: "Parent group" + organizational_unit: "Organizational unit" user_preference: header_look_and_feel: "介面與外觀" header_alerts: "提醒" @@ -1625,8 +1759,6 @@ zh-TW: button_update_user_information: "更新個人資料" comments_sorting: "顯示工作套件活動,排序方式為" disable_keyboard_shortcuts: "停用鍵盤快速鍵" - disable_keyboard_shortcuts_caption_html: |- - 如果你使用螢幕閱讀器,或想避免不小心觸發快捷鍵操作,你可以選擇停用預設的鍵盤快捷鍵。 dismissed_enterprise_banners: "隱藏的企業版廣告" impaired: "協助工具模式" auto_hide_popups: "自動關閉成功通知" @@ -1647,6 +1779,28 @@ zh-TW: users/invitation/form_model: principal_type: "邀請函類型" id_or_email: "姓名或電子郵件地址" + user_non_working_time: + start_date: "Start date" + end_date: "End date" + user_working_hours: + valid_from: "Valid from" + monday: "Monday" + monday_hours: "Monday hours" + tuesday: "Tuesday" + tuesday_hours: "Tuesday hours" + wednesday: "Wednesday" + wednesday_hours: "Wednesday hours" + thursday: "Thursday" + thursday_hours: "Thursday hours" + friday: "Friday" + friday_hours: "Friday hours" + saturday: "Saturday" + saturday_hours: "Saturday hours" + sunday: "Sunday" + sunday_hours: "Sunday hours" + availability_factor: "Availability factor" + shared_hours: "Work hours" + days: "Working days" version: effective_date: "完成日期" sharing: "分享" @@ -1701,6 +1855,8 @@ zh-TW: before: "必須在 %{date} 之前" before_or_equal_to: "必須在 %{date} 以前" blank: "不可空白" + not_before_start_date: "must not be before the start date." + overlapping_range: "overlaps with an existing non-working day range." blank_nested: "需要設置屬性 '%{property}' " cannot_delete_mapping: "必需項,不能刪除" is_for_all_cannot_modify: "適用於所有專案,因此無法修改。" @@ -1737,8 +1893,9 @@ zh-TW: less_than_or_equal_to: "必須少於或者等於 %{count}。" not_available: "由於系統配置所以不可用" not_deletable: "無法刪除" + not_editable: "cannot be edited because it is already in effect." not_current_user: "不是目前使用者。" - only_one_active_sprint_allowed: "每個專案只允許一個活動衝刺。" + system_wide_non_working_day_exists: "conflicts with an existing system-wide non-working day for this date." not_found: "未找到" not_a_date: "不是有效的日期。" not_a_datetime: "不是有效的日期時間。" @@ -1769,6 +1926,10 @@ zh-TW: 未提供「安全上下文」。使用 HTTPS 或環回地址,例如 localhost。 wrong_length: "長度錯誤 (應該要有 %{count} 個字元)" models: + group: + attributes: + parent_id: + circular_dependency: "would create a circular group hierarchy." ldap_auth_source: attributes: tls_certificate_string: @@ -1878,6 +2039,9 @@ zh-TW: project_initiation_request_disabled: "專案啟動請求已被停用。必須啟用它才能建立成品工作套件。" types: in_use_by_work_packages: "%{types} 仍在被工作套件使用中" + identifier: + must_start_with_letter: "must start with a letter" + no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: dependency_missing: "還需要啓用模塊“%{dependency}”,因為模塊“%{module}”依賴於該模塊。" format: "%{message}" @@ -2082,6 +2246,10 @@ zh-TW: description: "‘確認密碼’ 應該要符合 '新密碼'" status: invalid_on_create: "不是新用戶的有效狀態" + user_working_hours: + attributes: + days: + no_working_day: "At least one day needs to be configured as a working day." member: principal_blank: "請至少選擇一個使用者或群組。" role_blank: "需要被指定" @@ -2330,8 +2498,8 @@ zh-TW: 啓用備份將允許具有所需權限和此備份令牌(Token)的任何用戶下載包含此 OpenProject 安裝的所有數據的備份。這包括所有其他用戶的數據。 info: > 您將需要產生備份token才能建立備份。 每次您想要請求備份時,您都必須提供此token。 您可以刪除備份token以停用該備份。 - verification: > - 輸入 %{word} 以確認您要%{action} 備份令牌(Token)。 + verification_html: > + Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: 重置 verification_word_create: 建立 warning: > @@ -2749,7 +2917,7 @@ zh-TW: teaser: title: other: "%{count} %{trial_plan} 試用令牌所剩天數" - description: "您可以存取所有 %{trial_plan} 功能。" + description_html: "You have access to all %{trial_plan} features." trial: not_found: "您已請求試用令牌,但該請求已無效。請再試一次。" wait_for_confirmation: "我們已傳送一封電子郵件給您,請確認您的地址以取得試用令牌。" @@ -2766,10 +2934,8 @@ zh-TW: confirmation_subline: > 請查看您的收件匣並依照指示操作,以開始為期 14 天的免費試用。 domain_caption: 此令牌將僅對您目前設定的主機名稱有效。 - receive_newsletter_html: > - 我想訂閱 OpenProject 的電子報。 - consent_html: > - 我同意服務條款隱私政策。 + receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: disabled: "已停用。" @@ -2857,8 +3023,8 @@ zh-TW: work_package_edit: "工作套件已編輯" work_package_note: "工作套件註記已新增" title: - project: "專案: %{name}" - subproject: "子專案: %{name}" + project_html: "Project: %{name}" + subproject_html: "Subproject: %{name}" export: dialog: title: "匯出" @@ -3109,6 +3275,7 @@ zh-TW: 隨版本更新自動調整排程模式。 totals_removed_from_childless_work_packages: >- 對於帶有版本更新的非父工作套件,工時和進度總計已自動移除。這是一項維護任務,您可放心忽略。 + sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- 沒有工作內容的子工作套件會被忽略。 total_percent_complete_mode_changed_to_simple_average: >- @@ -3116,9 +3283,9 @@ zh-TW: links: configuration_guide: "設定指南" get_in_touch: "如有任何問題,歡迎聯繫我們" - instructions_after_registration: "帳號啟用後即可點擊 %{signin} 登入" - instructions_after_logout: "您可點擊 %{signin} 再次登入。" - instructions_after_error: "你可以試著再按一次 %{signin} 來嘗試登入。如果持續發生錯誤,請向您的管理員尋求幫助。" + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: ai: "人工智慧 (AI)" @@ -3310,6 +3477,8 @@ zh-TW: label_calendar_show: "顯示行事曆" label_category: "類別" label_completed: 已完成 + label_committed_at_html: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" label_consent_settings: "使用者同意個資意向書" label_wiki_menu_item: 維基選單項目 label_select_main_menu_item: 選擇新的主選單項目 @@ -3476,6 +3645,7 @@ zh-TW: label_subject_or_id: "主旨或 id" label_calendar_subscriptions: "訂閱行事曆" label_identifier: "識別碼" + label_project_identifier: "Project identifier" label_in: "在" label_in_less_than: "少於" label_in_more_than: "多於" @@ -3609,11 +3779,13 @@ zh-TW: label_news_view_all: "檢視所有新聞" label_next: "下一頁" label_next_week: "下一週" + label_next_year: "Next year" label_no_change_option: "(沒有變動)" label_no_data: "沒有資料可顯示" label_no_due_date: "無完成日期" label_no_start_date: "無開始日期" label_no_parent_page: "無上層頁面" + label_no_parent_group: "(No parent group)" label_notification_center_plural: "通知" label_nothing_display: "沒有可以顯示的" label_nobody: "沒有人" @@ -3642,6 +3814,8 @@ zh-TW: label_overall_activity: "全部活動" label_overview: "概要" label_page_title: "網頁標題" + label_parent_group_caption: > + Setting a parent group will make this group a subgroup of the selected parent group. This will also inherit all memberships, including permissions of the parent group. label_part_of: "部份於" label_password_lost: "忘記你的密碼?" label_password_rule_lowercase: "小寫" @@ -3668,6 +3842,7 @@ zh-TW: label_preview_not_available: "無法提供預覽" label_previous: "上一個" label_previous_week: "前一週" + label_previous_year: "Previous year" label_principal_invite_via_email: "或者透過郵件邀請新的使用者" label_principal_search: "增加現有使用者或群組" label_privacy_policy: "資料隱私與安全性政策" @@ -3779,6 +3954,7 @@ zh-TW: label_start_to_start: "開始到開始" label_statistics: "統計" label_status: "狀態" + label_status_plural: "Statuses" label_storage_free_space: "剩餘磁碟空間" label_storage_used_space: "已用磁碟空間" label_storage_group: "儲存檔案系統 %{identifier}" @@ -3807,6 +3983,7 @@ zh-TW: label_title: "標題" label_projects_menu: "專案" label_today: "今天" + label_today_capitalized: "今天" label_token_version: "令牌(Token)版本" label_today_as_start_date: "選擇今天為開始日期。" label_today_as_due_date: "選擇今天為完成日期。" @@ -3827,7 +4004,7 @@ zh-TW: label_user: "使用者" label_user_and_permission: "使用者與權限" label_user_named: "用戶名 %{name}" - label_user_activity: "%{value} 的活動" + label_user_activity_html: "%{value}'s activity" label_user_anonymous: "匿名者" label_user_menu: "使用者選單" label_user_new: "新增使用者" @@ -3914,6 +4091,12 @@ zh-TW: one: "1 個檔案" other: "%{count} 檔案" zero: "沒有檔案" + label_x_days: + other: "%{count} days" + label_x_working_days: + other: "%{count} working days" + label_x_working_days_time_off: + other: "Time off: %{count} working days" label_yesterday: "昨天" label_zen_mode: "禪意模式" label_role_type: "類型" @@ -3922,6 +4105,22 @@ zh-TW: label_not_changeable: "(不可更改)" label_global: "全域設定" label_seeded_from_env_warning: 此記錄已透過設定環境變數建立。無法透過 UI 進行編輯。 + label_schedule_and_availability: "Schedule and availability" + label_working_hours: "Work schedule" + label_non_working_days: "Availability calendar" + label_non_working_days_with_count: "Non-working days (%{count})" + label_non_working_days_summary: "Summary" + button_add_non_working_time: "Time off" + button_edit_non_working_time: "Edit time off" + label_continued_from_previous_year: "continued from previous year" + label_continues_into_next_year: "continues into next year" + label_end_date: "Finish date" + label_working_days: "Working days" + label_non_working_times_with_count: "%{year} time off (%{count})" + label_non_working_times_summary: "%{year} summary" + label_total_user_non_working_times: "Personal non-working days" + label_total_global_non_working_days: "Global non-working days" + label_total_days_off: "Total days off" macro_execution_error: "執行巨集 (%{macro_name}) 錯誤" macro_unavailable: "巨集 \"%{macro_name}\" 無法顯示" macros: @@ -3956,7 +4155,7 @@ zh-TW: center: "顯示通知中心" see_in_center: "詳見通知中心留言" settings: "更改電子郵件設定" - salutation: "%{user} 您好" + salutation: "Hello %{user}," salutation_full_name: "全名" work_packages: created_at: "%{user} 在 %{timestamp} 新增" @@ -3985,7 +4184,7 @@ zh-TW: note: "備註: \"%{note}\"" sharing: work_packages: - allowed_actions: "您擁有這個工作套件的 %{allowed_actions} 權限. 這些權限將隨著您的角色不同而更改。" + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." create_account: "要存取此工作套件,您需要建立一個 %{instance} 帳戶。" open_work_package: "開啟工作套件" subject: "有個工作套件 #%{id} 與您共同參與" @@ -4084,8 +4283,9 @@ zh-TW: roles: "您擁有以下的角色:" mail_user_activation_limit_reached: subject: 已達到用戶激活限制 - message: | - 新用戶(%{email}) 試圖在您管理的 OpenProject 環境 (%{host}) 上創建賬戶。用戶無法激活其賬戶, 因爲已達到用戶限制。 + message_html: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. steps: label: "要允許用戶登錄,您可以: " a: "([在這裏](upgrade_url)) 升級付款計劃" #here turned into a link @@ -4267,6 +4467,12 @@ zh-TW: permission_manage_versions: "管理版本" permission_manage_wiki: "管理維基" permission_manage_wiki_menu: "管理維基選單" + permission_manage_own_working_times: "Manage own working times" + permission_manage_own_working_times_explanation: > + Allows users to manage their own working times, and personal non-working days. + permission_manage_working_times: "Manage working times for all users" + permission_manage_working_times_explanation: > + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "移動工作套件" permission_protect_wiki_pages: "專案維基頁面" permission_rename_wiki_pages: "重新命名維基頁面" @@ -4412,10 +4618,10 @@ zh-TW: info: "刪除這個版本庫是不可逆的動作" info_not_managed: "注意: 這將\"不會\"刪除版本庫的內容,因為他不是由 OpenProject 所託管的" managed_path_note: "以下的資料夾將會被刪除: %{path}" - repository_verification: "輸入這個專案的識別碼 %{identifier} 以確認刪除它的版本庫" + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." subtitle: "你真的想要刪除專案 %{project_name} 的 %{repository_type} 嗎?" - subtitle_not_managed: "你真的想要從專案 %{project_name} 移除 %{repository_type} 的連結 %{url} 嗎?" - title: "刪除 %{repository_type}" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title_html: "Delete the %{repository_type}" title_not_managed: "刪除連結的 %{repository_type}?" errors: build_failed: "無法用選取的設定建立版本庫。%{reason}" @@ -4465,7 +4671,7 @@ zh-TW: storage: not_available: "這個版本庫沒有可用的磁碟消耗資訊" update_timeout: "保留 N 分鐘版本庫使用的碟空間資訊。\n計算一個版本庫使用的磁碟空間也許要消耗很多效能,增加這個值來降低效能的影響。" - oauth_application_details: "關閉此窗口後,將無法再次訪問客戶端密鑰值。請將這些值複製到 Nextcloud OpenProject 集成設置中:" + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "前往設定" setup_documentation_details: "如果您在配置新文件存儲方面需要幫助,請查看文檔: " setup_documentation_details_link_text: "設定文件儲存區" @@ -4510,15 +4716,15 @@ zh-TW: setting_apiv3_cors_title: "跨原始來源資源共用 (CORS, Cross-Origin Resource Sharing)" setting_apiv3_cors_enabled: "啟用 CORS" setting_apiv3_cors_origins: "CROSS-ORIGIN RESOURCE SHARING (CORS)" - setting_apiv3_cors_origins_text_html: > - 如果啓用了 CORS ,這些是允許訪問 OpenProject API 的源。
請查看有關“源”標題的文檔,瞭解如何指定預期值。 + setting_apiv3_cors_origins_instructions_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "對唯讀屬性的寫入存取權限" setting_apiv3_write_readonly_attributes_instructions: > 如果啟用,API 將允許管理員在建立時寫入靜態唯讀屬性,例如 createdAt 和 author。 setting_apiv3_write_readonly_attributes_warning: > 此設定可用於匯入資料,但允許管理員冒充其他使用者建立項目。所有建立請求都會以真正的作者記錄。 - setting_apiv3_write_readonly_attributes_additional: > - 有關屬性和支援資源的詳細資訊,請參閱 %{api_documentation_link}。 + setting_apiv3_write_readonly_attributes_additional_html: > + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "API 每頁最大值" setting_apiv3_max_page_size_instructions: > 設定 API 回應的最大頁面大小。將無法執行在單一頁面上回傳更多值的 API 請求。 @@ -4615,7 +4821,7 @@ zh-TW: setting_work_package_properties: "工作套件屬性" setting_work_package_startdate_is_adddate: "使用目前日期作為新工作套件的開始日期" setting_work_packages_projects_export_limit: "工作套件/專案匯出數量限制" - setting_journal_aggregation_time_minutes: "合併使用者操作" + setting_journal_aggregation_time_minutes: "Aggregation period" setting_log_requesting_user: "記錄所有使用者登入、姓名和郵件地址等資料" setting_login_required: "需要身份驗證" setting_login_required_caption: "當啟用時,所有應用程式請求都必須經過驗證。" @@ -4696,6 +4902,12 @@ zh-TW: setting_welcome_text: "歡迎區塊文字" setting_welcome_title: "歡迎區塊標題" setting_welcome_on_homescreen: "在主頁面上顯示歡迎區塊" + setting_work_packages_identifier_numeric: Instance-wide numerical sequence (default) + setting_work_packages_identifier_numeric_caption: > + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + setting_work_packages_identifier_alphanumeric: Project-based alphanumerical identifiers + setting_work_packages_identifier_alphanumeric_caption: > + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "預設顯示模式" setting_work_package_list_default_highlighted_attributes: "預設顯眼屬性" setting_working_days: "工作日" @@ -4862,10 +5074,12 @@ zh-TW: section_work_week: "工作週" section_holidays_and_closures: "假日和休息日" work_packages: + work_package_identifier: "Work package identifier" not_allowed_text: "您沒有查看此頁面的必要權限。" activities: enable_internal_comments: "啟用內部備註" - helper_text: "內部留言讓團隊成員能私下互相溝通。僅對擁有相應權限的特定角色可見,且不會公開顯示。%{link}" + helper_text_html: > + Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: markdown: "Markdown" plain: "純文字" @@ -4987,6 +5201,10 @@ zh-TW: text_plugin_assets_writable: "Plugin 資產目錄可寫" text_powered_by: "由 %{link} 提供" text_project_identifier_info: "僅允許小寫字母(a-z)、數字、破折號(-) 及底線(_),且必須以小寫字母開頭。" + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_url_description: "The project identifier is included in the URL of the project." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "重新指派到工作套件:" text_regexp_multiline: '這個正規表達式套用在多行模式。 e.g., ^---\s+' text_repository_usernames_mapping: "選擇或更新與版本庫中的帳號所對應的OpenProject使用者。\n版本庫中與OpenProject的使用者具有相同名稱或email將被自動對應。" @@ -5093,18 +5311,18 @@ zh-TW: version_status_locked: "已停用" version_status_open: "開啟" note: 注意 - note_password_login_disabled: "密碼登錄已被 %{configuration} 禁用。" + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: 警告 warning_attachments_not_saved: "無法儲存 %{count} 檔。" - warning_imminent_user_limit: > - 您邀請的用戶數超過了當前計劃支持的用戶數。受邀用戶可能無法加入您的OpenProject環境。 請升級您的計劃或阻止現有用戶,以允許受邀和注冊用戶加入。 + warning_imminent_user_limit_html: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please [upgrade your plan](upgrade_url) or block existing users in order to allow invited and registered users to join. warning_registration_token_expired: | 帳號啟用 email 已經逾期。我們已經寄了一封新的 email 至您的 %{email}。 請點擊 email 內的連結來啟用您的帳號。 warning_user_limit_reached: > 添加額外的用戶將超出當前限制。請聯繫管理員以增加用戶限制,以確保外部用戶能夠訪問此實例。 - warning_user_limit_reached_admin: > - 添加額外的用戶將超出當前限制。請升級您的計劃,以確保外部用戶能夠訪問此實例。 + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > 您已達到用戶限制(%{current}/%{max} 活躍用戶)。請聯繫 sales@openproject.com 升級您的企業版計劃以添加額外用戶。 warning_protocol_mismatch_html: > @@ -5164,7 +5382,7 @@ zh-TW: reminders: label_remind_at: "日期" note_placeholder: "為什麼要設定這個提醒?" - create_success_message: "提醒已成功設定。您將會在此工作套件的 %{reminder_time} 收到通知。" + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "提醒成功更新" success_deletion_message: "提醒已成功刪除。" sharing: @@ -5195,8 +5413,8 @@ zh-TW: text_user_limit_reached_admins: '添加更多用戶將超出當前限制。請升級您的計劃,以便添加更多用戶。' warning_user_limit_reached: > 添加其他用戶將超出當前限制。請聯繫管理員增加用戶限制,以確保外部用戶能夠訪問 %{entity}。 - warning_user_limit_reached_admin: > - 添加其他用戶將超出當前限制。請升級您的計劃,以確保外部用戶能夠訪問 %{entity}。 + warning_user_limit_reached_admin_html: > + Adding additional users will exceed the current limit. Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "請選擇要參與 %{entity} 的用戶" warning_locked_user: "使用者 %{user} 已停用,無法參與" user_details: @@ -5316,6 +5534,7 @@ zh-TW: project: Undisclosed - 專案因缺乏權限而不見。 ancestor: 未公開 - 由於缺少權限,上級不可見。 definingProject: Undisclosed - 專案因缺乏權限而不見。 + definingWorkspace: Undisclosed - The workspace is invisible because of lacking permissions. doorkeeper: pre_authorization: status: "提前授權" diff --git a/modules/auth_saml/config/locales/crowdin/cs.yml b/modules/auth_saml/config/locales/crowdin/cs.yml index fb17ef34810..dc6c76f8acb 100644 --- a/modules/auth_saml/config/locales/crowdin/cs.yml +++ b/modules/auth_saml/config/locales/crowdin/cs.yml @@ -56,7 +56,7 @@ cs: label_mapping: Mapování label_requested_attribute_for: "Requested attribute for: %{attribute}" no_results_table: No SAML identity providers have been defined yet. - notice_created: A new SAML identity provider was successfully created. + notice_created: Nový zprostředkovatel identit SAML byl úspěšně vytvořen. plural: Poskytovatelé SAML identity singular: Poskytovatel identity SAML requested_attributes: Požadované atributy diff --git a/modules/auth_saml/config/locales/crowdin/el.yml b/modules/auth_saml/config/locales/crowdin/el.yml index cd96ae6f4d0..14953a151b7 100644 --- a/modules/auth_saml/config/locales/crowdin/el.yml +++ b/modules/auth_saml/config/locales/crowdin/el.yml @@ -4,153 +4,153 @@ el: saml/provider: display_name: Όνομα identifier: Αναγνωριστικό - secret: Μυστικό - scope: Φυσικό Αντικείμενο - assertion_consumer_service_url: ACS (Assertion consumer service) URL - limit_self_registration: Limit self registration - sp_entity_id: Service entity ID - metadata_url: Identity provider metadata URL - name_identifier_format: Name identifier format - idp_sso_service_url: Identity provider login endpoint - idp_slo_service_url: Identity provider logout endpoint - idp_cert: Public certificate of identity provider - authn_requests_signed: Sign SAML AuthnRequests - want_assertions_signed: Require signed responses - want_assertions_encrypted: Require encrypted responses - certificate: Certificate used by OpenProject for SAML requests - private_key: Corresponding private key for OpenProject SAML requests - signature_method: Signature algorithm - digest_method: Digest algorithm - format: "Μορφοποίηση" - icon: "Custom icon" + secret: Μυστικό (Secret) + scope: Εύρος + assertion_consumer_service_url: URL Υπηρεσίας Καταναλωτή Ισχυρισμών (ACS) + limit_self_registration: Περιορισμός αυτο-εγγραφής + sp_entity_id: ID Οντότητας Παρόχου Υπηρεσίας (SP) + metadata_url: URL Μεταδεδομένων Παρόχου Ταυτότητας (IdP) + name_identifier_format: Μορφή αναγνωριστικού ονόματος + idp_sso_service_url: Τερματικό σημείο σύνδεσης Παρόχου Ταυτότητας (IdP Login) + idp_slo_service_url: Τερματικό σημείο αποσύνδεσης Παρόχου Ταυτότητας (IdP Logout) + idp_cert: Δημόσιο πιστοποιητικό του Παρόχου Ταυτότητας (IdP) + authn_requests_signed: Ψηφιακή υπογραφή αιτημάτων SAML AuthnRequests + want_assertions_signed: Απαίτηση υπογεγραμμένων αποκρίσεων + want_assertions_encrypted: Απαίτηση κρυπτογραφημένων αποκρίσεων + certificate: Πιστοποιητικό του OpenProject για αιτήματα SAML + private_key: Αντίστοιχο ιδιωτικό κλειδί για αιτήματα SAML του OpenProject + signature_method: Αλγόριθμος ψηφιακής υπογραφής + digest_method: Αλγόριθμος κατακερματισμού (Digest) + format: "Μορφή" + icon: "Προσαρμοσμένο εικονίδιο" errors: models: saml/provider: - invalid_certificate: "is not a valid PEM-formatted certificate: %{additional_message}" - invalid_private_key: "is not a valid PEM-formatted private key: %{additional_message}" - certificate_expired: "is expired and can no longer be used." - unmatched_private_key: "does not belong to the given certificate" + invalid_certificate: "δεν είναι έγκυρο πιστοποιητικό μορφής PEM: %{additional_message}" + invalid_private_key: "δεν είναι έγκυρο ιδιωτικό κλειδί μορφής PEM: %{additional_message}" + certificate_expired: "έχει λήξει και δεν μπορεί πλέον να χρησιμοποιηθεί." + unmatched_private_key: "δεν αντιστοιχεί στο συγκεκριμένο πιστοποιητικό" saml: - menu_title: SAML providers - delete_title: Delete SAML provider + menu_title: Πάροχοι SAML + delete_title: Διαγραφή παρόχου SAML info: - title: "SAML Protocol Configuration Parameters" + title: "Παράμετροι Διαμόρφωσης Πρωτοκόλλου SAML" description: > - Use these parameters to configure your identity provider connection to OpenProject. + Χρησιμοποιήστε αυτές τις παραμέτρους για να ρυθμίσετε τη σύνδεση του παρόχου ταυτότητας με το OpenProject. metadata_parser: - success: "Successfully updated the configuration using the identity provider metadata." - invalid_url: "Provided metadata URL is invalid. Provide a HTTP(s) URL." - error: "Failed to retrieve the identity provider metadata: %{error}" + success: "Η διαμόρφωση ενημερώθηκε επιτυχώς με χρήση των μεταδεδομένων του παρόχου ταυτότητας." + invalid_url: "Το παρεχόμενο URL μεταδεδομένων δεν είναι έγκυρο. Παρακαλούμε δώστε ένα HTTP(s) URL." + error: "Αποτυχία ανάκτησης μεταδεδομένων παρόχου ταυτότητας: %{error}" providers: - label_empty_title: "No SAML providers configured yet." - label_empty_description: "Add a provider to see them here." - label_automatic_configuration: Automatic configuration - label_metadata: Metadata - label_metadata_endpoint: OpenProject metadata endpoint - label_openproject_information: OpenProject information - label_configuration_details: "Identity provider endpoints and certificates" - label_configuration_encryption: "Signatures and Encryption" - label_add_new: New SAML identity provider - label_edit: Edit SAML identity provider %{name} - label_uid: Internal user id - label_mapping: Mapping - label_requested_attribute_for: "Requested attribute for: %{attribute}" - no_results_table: No SAML identity providers have been defined yet. + label_empty_title: "Δεν έχουν ρυθμιστεί ακόμη πάροχοι SAML." + label_empty_description: "Προσθέστε έναν πάροχο για να τον δείτε εδώ." + label_automatic_configuration: Αυτόματη διαμόρφωση + label_metadata: Μεταδεδομένα + label_metadata_endpoint: Τερματικό σημείο μεταδεδομένων OpenProject + label_openproject_information: Πληροφορίες OpenProject + label_configuration_details: "Τερματικά σημεία και πιστοποιητικά παρόχου ταυτότητας" + label_configuration_encryption: "Ψηφιακές υπογραφές και Κρυπτογράφηση" + label_add_new: Νέος πάροχος ταυτότητας SAML + label_edit: Επεξεργασία παρόχου ταυτότητας SAML %{name} + label_uid: Εσωτερικό ID χρήστη + label_mapping: Χαρτογράφηση + label_requested_attribute_for: "Ζητούμενο χαρακτηριστικό για: %{attribute}" + no_results_table: Δεν έχουν οριστεί ακόμη πάροχοι ταυτότητας SAML. notice_created: A new SAML identity provider was successfully created. - plural: SAML identity providers - singular: SAML identity provider - requested_attributes: Requested attributes + plural: Πάροχοι ταυτότητας SAML + singular: Πάροχος ταυτότητας SAML + requested_attributes: Ζητούμενα χαρακτηριστικά attribute_mapping: Χαρτογράφηση χαρακτηριστικού attribute_mapping_text: > - The following fields control which attributes provided by the SAML identity provider are used to provide user attributes in OpenProject + Τα ακόλουθα πεδία ελέγχουν ποια χαρακτηριστικά που παρέχονται από τον πάροχο ταυτότητας SAML χρησιμοποιούνται για την απόδοση των χαρακτηριστικών χρήστη στο OpenProject. metadata: - dialog: "This is the URL where the OpenProject SAML metadata is available. Optionally use it to configure your identity provider:" + dialog: "Αυτή είναι η διεύθυνση URL όπου είναι διαθέσιμα τα μεταδεδομένα του OpenProject SAML. Προαιρετικά χρησιμοποιήστε την για να ρυθμίσετε τον πάροχο ταυτότητας:" upsell: - title: "Single Sign-On (SSO) with SAML" - description: Connect OpenProject to a SAML identity provider + title: "Single Sign-On (SSO) με SAML" + description: Συνδέστε το OpenProject με έναν πάροχο ταυτότητας SAML request_attributes: - title: 'Requested attributes' + title: 'Ζητούμενα χαρακτηριστικά' legend: > - These attributes are added to the SAML XML metadata to signify to the identify provider which attributes OpenProject requires. You may still need to explicitly configure your identity provider to send these attributes. Please refer to your IdP's documentation. - name: 'Requested attribute key' - format: 'Attribute format' + Αυτά τα χαρακτηριστικά προστίθενται στα μεταδεδομένα SAML XML για να δηλώσουν στον πάροχο ταυτοποίησης ποια χαρακτηριστικά απαιτεί το OpenProject. Ενδέχεται να χρειαστεί να ρυθμίσετε ρητά τον πάροχο ταυτότητας ώστε να στέλνει αυτά τα χαρακτηριστικά. Ανατρέξτε στην τεκμηρίωση του παρόχου ταυτότητάς σας. + name: 'Ζητούμενο χαρακτηριστικό κλειδί' + format: 'Μορφή χαρακτηριστικών' section_headers: - configuration: "Primary configuration" + configuration: "Κύρια διαμόρφωση" attributes: "Χαρακτηριστικά" section_texts: - display_name: "Configure the display name of the SAML provider." - metadata: "Pre-fill configuration using a metadata URL or by pasting metadata XML" - metadata_form: "If your identity provider has a metadata endpoint or XML download, add it below to pre-fill the configuration." - metadata_form_banner: "Editing the metadata may override existing values in other sections. " - configuration: "Configure the endpoint URLs for the identity provider, certificates, and further SAML options." - configuration_metadata: "This information has been pre-filled using the supplied metadata. In most cases, they do not require editing." - encryption: "Configure assertion signatures and encryption for SAML requests and responses." - encryption_form: "You may optionally want to encrypt the assertion response, or have requests from OpenProject signed." - mapping: "Manually adjust the mapping between the SAML response and user attributes in OpenProject." - requested_attributes: "Define the set of attributes to be requested in the SAML request sent to your identity provider." - seeded_from_env: "This provider was seeded from the environment configuration. It cannot be edited." + display_name: "Ρυθμίστε το όνομα εμφάνισης του παρόχου SAML." + metadata: "Προ-συμπλήρωση της διαμόρφωσης χρησιμοποιώντας μια διεύθυνση URL μεταδεδομένων ή επικολλώντας XML μεταδεδομένα" + metadata_form: "Εάν ο πάροχος ταυτότητας διαθέτει ένα endpoint μεταδεδομένων ή λήψη XML, προσθέστε το παρακάτω για να προ-συμπληρώσετε τη ρύθμιση παραμέτρων." + metadata_form_banner: "Η επεξεργασία των μεταδεδομένων μπορεί να παρακάμψει τις υπάρχουσες τιμές σε άλλες ενότητες. " + configuration: "Διαμορφώστε τις διευθύνσεις URL του endpoint για τον πάροχο ταυτότητας, τα πιστοποιητικά και περαιτέρω επιλογές SAML." + configuration_metadata: "Οι πληροφορίες αυτές έχουν προσυμπληρωθεί με βάση τα μεταδεδομένα που παρέχονται. Στις περισσότερες περιπτώσεις, δεν απαιτούν επεξεργασία." + encryption: "Διαμόρφωση υπογραφών ισχυρισμού και κρυπτογράφησης για αιτήσεις και απαντήσεις SAML." + encryption_form: "Μπορεί προαιρετικά να θέλετε να κρυπτογραφήσετε την απόκριση του ισχυρισμού ή να υπογράψετε τα αιτήματα από το OpenProject." + mapping: "Προσαρμόστε χειροκίνητα την αντιστοίχιση μεταξύ της απόκρισης SAML και των χαρακτηριστικών χρήστη στο OpenProject." + requested_attributes: "Καθορίστε το σύνολο των χαρακτηριστικών που θα ζητούνται στην αίτηση SAML που αποστέλλεται στον πάροχο ταυτότητας." + seeded_from_env: "Αυτός ο πάροχος τροφοδοτήθηκε από τη διαμόρφωση του περιβάλλοντος. Δεν μπορεί να επεξεργαστεί." settings: - metadata_none: "I don't have metadata" - metadata_url: "Metadata URL" - metadata_xml: "Metadata XML" + metadata_none: "Δεν έχω μεταδεδομένα" + metadata_url: "URL Μεταδεδομένων" + metadata_xml: "XML Μεταδεδομένων" instructions: documentation_link: > - Please refer to our [documentation on configuring SAML providers](docs_url) for more information on these configuration options. + Παρακαλούμε ανατρέξτε στην [τεκμηρίωσή μας σχετικά με τη διαμόρφωση παρόχων SAML](docs_url) για περισσότερες πληροφορίες σχετικά με αυτές τις επιλογές. display_name: > - The name of the provider. This will be displayed as the login button and in the list of providers. + Το όνομα του παρόχου. Θα εμφανίζεται στο κουμπί σύνδεσης και στη λίστα παρόχων. metadata_none: > - Your identity provider does not have a metadata endpoint or XML download option. You can configure it manually. + Ο πάροχος ταυτότητάς σας δεν διαθέτει τερματικό σημείο μεταδεδομένων ή επιλογή λήψης XML. Μπορείτε να τον ρυθμίσετε χειροκίνητα. metadata_url: > - Your identity provider provides a metadata URL. + Ο πάροχος ταυτότητάς σας παρέχει ένα URL μεταδεδομένων. metadata_xml: > - Your identity provider provides a metadata XML download. + Ο πάροχος ταυτότητάς σας παρέχει ένα αρχείο XML μεταδεδομένων προς λήψη. limit_self_registration: > - If enabled users can only register using this provider if the self registration setting allows for it. + Εάν ενεργοποιηθεί, οι χρήστες μπορούν να εγγραφούν μέσω αυτού του παρόχου μόνο εάν το επιτρέπουν οι ρυθμίσεις αυτο-εγγραφής. sp_entity_id: > - The entity ID of the service provider (SP). Sometimes also referred to as Audience. This is the unique client identifier of the OpenProject instance. + Το ID οντότητας του παρόχου υπηρεσίας (SP). Μερικές φορές αναφέρεται και ως Audience. Αυτό είναι το μοναδικό αναγνωριστικό πελάτη της εγκατάστασης του OpenProject. idp_sso_service_url: > - The URL of the identity provider login endpoint. + Το URL του τερματικού σημείου σύνδεσης του παρόχου ταυτότητας. idp_slo_service_url: > - The URL of the identity provider logout endpoint. + Το URL του τερματικού σημείου αποσύνδεσης του παρόχου ταυτότητας. idp_cert: > - Enter the X509 PEM-formatted public certificate of the identity provider. You can enter multiple certificates by separating them with a newline. + Εισαγάγετε το δημόσιο πιστοποιητικό X509 μορφής PEM του παρόχου ταυτότητας. Μπορείτε να εισαγάγετε πολλαπλά πιστοποιητικά διαχωρίζοντάς τα με αλλαγή γραμμής. name_identifier_format: > - Set the name identifier format to be used for the SAML assertion. + Ορίστε τη μορφή του αναγνωριστικού ονόματος που θα χρησιμοποιηθεί για τον ισχυρισμό SAML. sp_metadata_endpoint: > - This is the URL where the OpenProject SAML metadata is available. Optionally use it to configure your identity provider. + Αυτή είναι η διεύθυνση URL όπου είναι διαθέσιμα τα μεταδεδομένα SAML του OpenProject. Προαιρετικά, χρησιμοποιήστε την για να ρυθμίσετε τον πάροχο ταυτότητάς σας. mapping: > - Configure the mapping between the SAML response and user attributes in OpenProject. You can configure multiple attribute names to look for. OpenProject will choose the first available attribute from the SAML response. + Ρυθμίστε τη χαρτογράφηση μεταξύ της απόκρισης SAML και των χαρακτηριστικών χρήστη στο OpenProject. Μπορείτε να ορίσετε πολλαπλά ονόματα χαρακτηριστικών προς αναζήτηση. Το OpenProject θα επιλέξει το πρώτο διαθέσιμο χαρακτηριστικό από την απόκριση SAML. mapping_login: > - SAML attributes from the response used for the login. + Χαρακτηριστικά SAML από την απόκριση που χρησιμοποιούνται για τη σύνδεση (login). mapping_mail: > - SAML attributes from the response used for the email of the user. + Χαρακτηριστικά SAML από την απόκριση που χρησιμοποιούνται για το email του χρήστη. mapping_firstname: > - SAML attributes from the response used for the given name. + Χαρακτηριστικά SAML από την απόκριση που χρησιμοποιούνται για το μικρό όνομα. mapping_lastname: > - SAML attributes from the response used for the last name. + Χαρακτηριστικά SAML από την απόκριση που χρησιμοποιούνται για το επώνυμο. mapping_uid: > - SAML attribute to use for the internal user ID. Leave empty to use the name_id attribute instead + Χαρακτηριστικό SAML που θα χρησιμοποιηθεί για το εσωτερικό ID χρήστη. Αφήστε το κενό για να χρησιμοποιηθεί το χαρακτηριστικό name_id. request_uid: > - SAML attribute to request for the internal user ID. By default, the name_id will be used for this field. + Χαρακτηριστικό SAML που θα ζητηθεί για το εσωτερικό ID χρήστη. Από προεπιλογή, θα χρησιμοποιηθεί το name_id για αυτό το πεδίο. requested_attributes: > - These attributes are added to the SAML request XML to communicate to the identity provider which attributes OpenProject requires. + Αυτά τα χαρακτηριστικά προστίθενται στο XML αιτήματος SAML για να επικοινωνήσουν στον πάροχο ταυτότητας ποια χαρακτηριστικά απαιτεί το OpenProject. requested_format: > - The format of the requested attribute. This is used to specify the format of the attribute in the SAML request. Please see [documentation on configuring requested attributes](docs_url) for more information. + Η μορφή του ζητούμενου χαρακτηριστικού. Χρησιμοποιείται για τον καθορισμό της μορφής του χαρακτηριστικού στο αίτημα SAML. Παρακαλούμε δείτε την [τεκμηρίωση σχετικά με τη διαμόρφωση ζητούμενων χαρακτηριστικών](docs_url) για περισσότερες πληροφορίες. authn_requests_signed: > - If checked, OpenProject will sign the SAML AuthnRequest. You will have to provide a signing certificate and private key using the fields below. + Εάν επιλεγεί, το OpenProject θα υπογράφει ψηφιακά το SAML AuthnRequest. Θα πρέπει να παρέχετε ένα πιστοποιητικό υπογραφής και ένα ιδιωτικό κλειδί χρησιμοποιώντας τα παρακάτω πεδία. want_assertions_signed: > - If checked, OpenProject will required signed responses from the identity provider using its own certificate keypair. OpenProject will verify the signature against the certificate from the basic configuration section. + Εάν επιλεγεί, το OpenProject θα απαιτεί υπογεγραμμένες αποκρίσεις από τον πάροχο ταυτότητας χρησιμοποιώντας το δικό του ζεύγος κλειδιών-πιστοποιητικού. Το OpenProject θα επαληθεύει την υπογραφή με βάση το πιστοποιητικό από την ενότητα βασικής διαμόρφωσης. want_assertions_encrypted: > - If enabled, require the identity provider to encrypt the assertion response using the certificate pair that you provide. + Εάν ενεργοποιηθεί, απαιτείται από τον πάροχο ταυτότητας να κρυπτογραφεί την απόκριση ισχυρισμού χρησιμοποιώντας το ζεύγος πιστοποιητικών που παρέχετε. certificate: > - Enter the X509 PEM-formatted certificate used by OpenProject for signing SAML requests. + Εισαγάγετε το πιστοποιητικό X509 μορφής PEM που χρησιμοποιείται από το OpenProject για την υπογραφή αιτημάτων SAML. private_key: > - Enter the X509 PEM-formatted private key for the above certificate. This needs to be an RSA private key. + Εισαγάγετε το ιδιωτικό κλειδί X509 μορφής PEM για το παραπάνω πιστοποιητικό. Πρέπει να είναι ιδιωτικό κλειδί τύπου RSA. signature_method: > - Select the signature algorithm to use for the SAML request signature performed by OpenProject (Default: %{default_option}). + Επιλέξτε τον αλγόριθμο υπογραφής που θα χρησιμοποιείται για την υπογραφή αιτημάτων SAML από το OpenProject (Προεπιλογή: %{default_option}). digest_method: > - Select the digest algorithm to use for the SAML request signature performed by OpenProject (Default: %{default_option}). + Επιλέξτε τον αλγόριθμο κατακερματισμού (digest) που θα χρησιμοποιείται για την υπογραφή αιτημάτων SAML από το OpenProject (Προεπιλογή: %{default_option}). icon: > - Optionally provide a public URL to an icon graphic that will be displayed next to the provider name. + Προαιρετικά, παρέχετε ένα δημόσιο URL για ένα εικονίδιο που θα εμφανίζεται δίπλα στο όνομα του παρόχου. metadata_for_idp: > - This information might be requested by your SAML identity provider. + Αυτές οι πληροφορίες ενδέχεται να ζητηθούν από τον πάροχο ταυτότητας SAML που χρησιμοποιείτε. diff --git a/modules/avatars/config/locales/crowdin/cs.yml b/modules/avatars/config/locales/crowdin/cs.yml index 9b8ef2ca08c..cf11d7dd426 100644 --- a/modules/avatars/config/locales/crowdin/cs.yml +++ b/modules/avatars/config/locales/crowdin/cs.yml @@ -24,8 +24,8 @@ cs: text_current_avatar: | Následující obrázek zobrazuje aktuální avatar. text_upload_instructions: | - Nahrajte svůj vlastní avatar o velikosti 128 pixelů. Větší soubory budou změněny a oříznuty tak, aby odpovídaly. - Náhled avataru bude zobrazen před odesláním, jakmile jste vybrali obrázek. + Nahrajte svůj vlastní avatar o velikosti 128x128 pixelů. Větší soubory budou zmenšeny a oříznuty tak, aby odpovídaly. + Náhled avataru bude zobrazen před odesláním, jakmile vyberete obrázek. text_change_gravatar_html: 'Chcete-li změnit nebo přidat Gravatar pro vaši e-mailovou adresu, přejděte na %{gravatar_url}.' text_your_local_avatar: | OpenProject vám umožňuje nahrát vlastní avatar. diff --git a/modules/avatars/config/locales/crowdin/js-cs.yml b/modules/avatars/config/locales/crowdin/js-cs.yml index 45a000693ac..dfeee4d4630 100644 --- a/modules/avatars/config/locales/crowdin/js-cs.yml +++ b/modules/avatars/config/locales/crowdin/js-cs.yml @@ -7,8 +7,8 @@ cs: label_choose_avatar: "Vyberte avatar ze souboru" uploading_avatar: "Nahrávám váš avatar." text_upload_instructions: | - Nahrajte svůj vlastní avatar o velikosti 128 pixelů. Větší soubory budou změněny a oříznuty tak, aby odpovídaly. - Náhled avataru bude zobrazen před odesláním, jakmile jste vybrali obrázek. + Nahrajte svůj vlastní avatar o velikosti 128x128 pixelů. Větší soubory budou zmenšeny a oříznuty tak, aby odpovídaly. + Náhled avataru bude zobrazen před odesláním, jakmile vyberete obrázek. error_image_too_large: "Obrázek je příliš velký." wrong_file_format: "Povolené formáty jsou jpg, png, gif" empty_file_error: "Prosím nahrajte platný obrázek (jpg, png, gif)" diff --git a/modules/backlogs/config/locales/crowdin/af.yml b/modules/backlogs/config/locales/crowdin/af.yml index 1e362abd74c..323121312e7 100644 --- a/modules/backlogs/config/locales/crowdin/af.yml +++ b/modules/backlogs/config/locales/crowdin/af.yml @@ -31,17 +31,27 @@ af: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Posisie" - story_points: "Storie Punte" backlogs_work_package_type: "Agterstand tipe" + position: "Posisie" + sprint: "Sprint" + story_points: "Storie Punte" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ af: must_block_at_least_one_work_package: "moet ten minste die ID van een kaart bevat" version_id: task_version_must_be_the_same_as_story_version: "moet dieselfde wees as die ouer storie se weergawe" + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "sprint kan nie uinding voor dit begin het nie" models: @@ -88,6 +110,9 @@ af: task: "Taak" task_color: "Taak kleure" unassigned: "Ongetekende" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -103,6 +128,35 @@ af: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ af: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Op/Af brand punte" backlogs_product_backlog: "Produk agterstand" backlogs_story: "Storie" @@ -150,6 +220,8 @@ af: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Agterstand" label_backlogs_unconfigured: "Jy het nog nie Agterstandes opgestel nie. Gaan asseblief na %{administration} > %{plugins}, klik dan op die %{configure}-skakel vir hierdie plugin. Sodra jy die velde gestel het, kom terug na hierdie bladsy om die instrument te begin gebruik." label_blocks_ids: "ID's van geblokkeerde werkspakkette" @@ -160,7 +232,14 @@ af: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprint belemmerings" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Taak bord" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Kies gedoen statusse" diff --git a/modules/backlogs/config/locales/crowdin/ar.yml b/modules/backlogs/config/locales/crowdin/ar.yml index e2de45637d6..fe7a13a8009 100644 --- a/modules/backlogs/config/locales/crowdin/ar.yml +++ b/modules/backlogs/config/locales/crowdin/ar.yml @@ -31,17 +31,27 @@ ar: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "الموقع" - story_points: "نقاط القصة" backlogs_work_package_type: "نوع الأعمال المتراكمة غير المنجزة" + position: "الموقع" + sprint: "Sprint" + story_points: "نقاط القصة" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,22 @@ ar: must_block_at_least_one_work_package: "يجب أن يحتوي على الأقل على الهوية المعرّفة لبطاقة واحدة." version_id: task_version_must_be_the_same_as_story_version: "يجب أن يكون نفس نسخة القصة الأصلية." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + zero: "There are %{count} work packages that were not completed in this sprint." + one: "There is %{count} work package that was not completed in this sprint." + two: "There are %{count} work packages that were not completed in this sprint." + few: "There are %{count} work packages that were not completed in this sprint." + many: "There are %{count} work packages that were not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "لا يمكن أن ينتهي السباق قبل أن يبدأ." models: @@ -96,6 +122,9 @@ ar: task: "المهمة" task_color: "لون المهمّة" unassigned: "غير المعيّنة" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "" button_update_backlogs: "Update backlogs module" @@ -111,6 +140,39 @@ ar: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + zero: "Show %{count} more items" + one: "Show 1 more item" + two: "Show %{count} more items" + few: "Show %{count} more items" + many: "Show %{count} more items" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -127,18 +189,34 @@ ar: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "نقاط الاستهلاك الإيجابي/ السلبي" backlogs_product_backlog: "عمل المنتج المتراكم غير المنجز" backlogs_story: "القصة" @@ -158,6 +236,8 @@ ar: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "الأعمال المتراكمة غير المنجزة" label_backlogs_unconfigured: "لم تقم بإنشاء الأعمال المتراكمة غير المنجزة بعد. من فضلك اذهب إلى %{administration} > %{plugins}، ثم اضغط على رابط %{configure} لهذا البرنامج المساعد. عندما تنتهي من تعيين الحقول، ارجع إلى هذه الصفحة لتبدأ باستخدام الأداة." label_blocks_ids: "الهويات المعرِّفة لمجموعات العمل المحظورة" @@ -168,7 +248,14 @@ ar: label_sprint_edit: "Edit sprint" label_sprint_impediments: "عوائق السباق" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "لوحة المهمة" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "حدد حالات الاتمام" diff --git a/modules/backlogs/config/locales/crowdin/az.yml b/modules/backlogs/config/locales/crowdin/az.yml index 5279a18085e..4aa9bf51647 100644 --- a/modules/backlogs/config/locales/crowdin/az.yml +++ b/modules/backlogs/config/locales/crowdin/az.yml @@ -31,17 +31,27 @@ az: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Vəzifə" - story_points: "" backlogs_work_package_type: "" + position: "Vəzifə" + sprint: "Sprint" + story_points: "" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ az: must_block_at_least_one_work_package: "must contain the ID of at least one ticket." version_id: task_version_must_be_the_same_as_story_version: "must be the same as the parent story's version." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint cannot end before it starts." models: @@ -88,6 +110,9 @@ az: task: "Task" task_color: "Task color" unassigned: "Unassigned" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -103,6 +128,35 @@ az: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ az: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Points burn up/down" backlogs_product_backlog: "Product backlog" backlogs_story: "Story" @@ -150,6 +220,8 @@ az: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "You have not configured Backlogs yet. Please go to %{administration} > %{plugins}, then click on the %{configure} link for this plugin. Once you have set the fields, come back to this page to start using the tool." label_blocks_ids: "IDs of blocked work packages" @@ -160,7 +232,14 @@ az: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprint Impediments" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Task board" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Select done statuses" diff --git a/modules/backlogs/config/locales/crowdin/be.yml b/modules/backlogs/config/locales/crowdin/be.yml index c80bdab0446..538783955c5 100644 --- a/modules/backlogs/config/locales/crowdin/be.yml +++ b/modules/backlogs/config/locales/crowdin/be.yml @@ -31,17 +31,27 @@ be: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Пазіцыя" - story_points: "Story Points" backlogs_work_package_type: "Тып бэклогу" + position: "Пазіцыя" + sprint: "Sprint" + story_points: "Story Points" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,20 @@ be: must_block_at_least_one_work_package: "must contain the ID of at least one ticket." version_id: task_version_must_be_the_same_as_story_version: "must be the same as the parent story's version." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + few: "There are %{count} work packages that were not completed in this sprint." + many: "There are %{count} work packages that were not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint cannot end before it starts." models: @@ -92,6 +116,9 @@ be: task: "Task" task_color: "Task color" unassigned: "Unassigned" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -107,6 +134,37 @@ be: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + few: "Show %{count} more items" + many: "Show %{count} more items" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -123,18 +181,34 @@ be: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Points burn up/down" backlogs_product_backlog: "Product backlog" backlogs_story: "Гісторыя" @@ -154,6 +228,8 @@ be: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "You have not configured Backlogs yet. Please go to %{administration} > %{plugins}, then click on the %{configure} link for this plugin. Once you have set the fields, come back to this page to start using the tool." label_blocks_ids: "IDs of blocked work packages" @@ -164,7 +240,14 @@ be: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprint Impediments" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Task board" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Select done statuses" diff --git a/modules/backlogs/config/locales/crowdin/bg.yml b/modules/backlogs/config/locales/crowdin/bg.yml index 1ec8a64ba55..154da25de51 100644 --- a/modules/backlogs/config/locales/crowdin/bg.yml +++ b/modules/backlogs/config/locales/crowdin/bg.yml @@ -31,17 +31,27 @@ bg: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Position" - story_points: "Точки на история" backlogs_work_package_type: "Backlog type" + position: "Position" + sprint: "Sprint" + story_points: "Точки на история" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ bg: must_block_at_least_one_work_package: "must contain the ID of at least one ticket." version_id: task_version_must_be_the_same_as_story_version: "трябва да бъде същата като версията на родителската история." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Спринтът не може да приключи, преди да започне." models: @@ -88,6 +110,9 @@ bg: task: "Задача" task_color: "Цвят на задачата" unassigned: "Неприсвоен" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -103,6 +128,35 @@ bg: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ bg: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Точки на изгаряне нагоре/надолу" backlogs_product_backlog: "Натрупване на продукти" backlogs_story: "История" @@ -150,6 +220,8 @@ bg: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "Все още не сте конфигурирали Неизпълнени задачи. Моля, отидете на %{administration} > %{plugins}, след което щракнете върху връзката %{configure} за този плъгин. След като зададете полетата, върнете се на тази страница, за да започнете да използвате инструмента." label_blocks_ids: "ID на блокирани работни пакети" @@ -160,7 +232,14 @@ bg: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Пречки за спринт" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Task board" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Изберете готови състояния" diff --git a/modules/backlogs/config/locales/crowdin/ca.yml b/modules/backlogs/config/locales/crowdin/ca.yml index b88ca17f7e3..a76872e7950 100644 --- a/modules/backlogs/config/locales/crowdin/ca.yml +++ b/modules/backlogs/config/locales/crowdin/ca.yml @@ -31,17 +31,27 @@ ca: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Posició" - story_points: "Punts d'història" backlogs_work_package_type: "Tipus de backlog" + position: "Posició" + sprint: "Sprint" + story_points: "Punts d'història" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ ca: must_block_at_least_one_work_package: "ha de contenir l'ID d'almenys un tiquet." version_id: task_version_must_be_the_same_as_story_version: "ha de ser la mateixa que la versió de la història pare." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "El sprint no pot acabar abans de que comenci." models: @@ -88,6 +110,9 @@ ca: task: "Tasca" task_color: "Color de la tasca" unassigned: "No assignat" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Mòdul Backlogs" button_update_backlogs: "Actualitza el mòdul de registres enrere" @@ -103,6 +128,35 @@ ca: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ ca: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Punts de progrés positius/negatius" backlogs_product_backlog: "Llista de pendents del producte" backlogs_story: "Història" @@ -150,6 +220,8 @@ ca: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "No has configurat les llistes de pendents encara. Si us plau, ves a %{administration} > %{plugins}, a continuació, fes clic a l'enllaç de %{configure} per a aquest plugin. Una vegada hagis omplert els camps, torna a aquesta pàgina per començar a utilitzar l'eina." label_blocks_ids: "Identificadors dels paquets de treball bloquejats" @@ -160,7 +232,14 @@ ca: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Impediments de sprint" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Tauler de tasques" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Selecciona els estats acabats" diff --git a/modules/backlogs/config/locales/crowdin/ckb-IR.yml b/modules/backlogs/config/locales/crowdin/ckb-IR.yml index 19639bd81e4..acbaa446be8 100644 --- a/modules/backlogs/config/locales/crowdin/ckb-IR.yml +++ b/modules/backlogs/config/locales/crowdin/ckb-IR.yml @@ -31,17 +31,27 @@ ckb-IR: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "پێگە" - story_points: "Story Points" backlogs_work_package_type: "جۆری Backlog" + position: "پێگە" + sprint: "Sprint" + story_points: "Story Points" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ ckb-IR: must_block_at_least_one_work_package: "must contain the ID of at least one ticket." version_id: task_version_must_be_the_same_as_story_version: "must be the same as the parent story's version." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint cannot end before it starts." models: @@ -88,6 +110,9 @@ ckb-IR: task: "Task" task_color: "Task color" unassigned: "Unassigned" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -103,6 +128,35 @@ ckb-IR: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ ckb-IR: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Points burn up/down" backlogs_product_backlog: "Product backlog" backlogs_story: "Story" @@ -150,6 +220,8 @@ ckb-IR: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "You have not configured Backlogs yet. Please go to %{administration} > %{plugins}, then click on the %{configure} link for this plugin. Once you have set the fields, come back to this page to start using the tool." label_blocks_ids: "IDs of blocked work packages" @@ -160,7 +232,14 @@ ckb-IR: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprint Impediments" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Task board" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Select done statuses" diff --git a/modules/backlogs/config/locales/crowdin/cs.yml b/modules/backlogs/config/locales/crowdin/cs.yml index 1ec2ddc71ff..1e79986b9f4 100644 --- a/modules/backlogs/config/locales/crowdin/cs.yml +++ b/modules/backlogs/config/locales/crowdin/cs.yml @@ -26,26 +26,36 @@ cs: activerecord: attributes: agile/sprint: - duration: "Duration" - finish_date: "Finish date" - goal: "Sprint goal" - name: "Sprint name" + duration: "Doba trvání" + finish_date: "Datum dokončení" + goal: "Cíl sprintu" + name: "Název sprintu" sharing: "Sharing" + statuses: + in_planning: "V plánování" + active: "Aktivní" + completed: "Dokončeno" project: - sprint_sharing: "Sprint sharing" + sprint_sharing: "Sdílení sprintu" sprint: duration: "Doba trvání sprintu" work_package: - position: "Pozice" - story_points: "Body příběhu" backlogs_work_package_type: "Typ nevyřízené položky" + position: "Pozice" + sprint: "Sprint" + story_points: "Body příběhu" errors: + messages: + must_be_in_planning: "musí být v plánu pro zahájení." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: - share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." - share_all_projects_already_taken_anonymous: "cannot be set because another project is already sharing with all projects." + share_all_projects_already_taken: "nelze nastavit, protože projekt \"%{name}\" již sdílí se všemi projekty." + share_all_projects_already_taken_anonymous: "nelze nastavit, protože jiný projekt již sdílí se všemi projekty." work_package: attributes: blocks_ids: @@ -53,6 +63,20 @@ cs: must_block_at_least_one_work_package: "musí obsahovat ID alespoň jednoho tiketu." version_id: task_version_must_be_the_same_as_story_version: "musí být stejná jako verze nadřazeného příběhu." + sprint: + not_shared_with_project: "není sdíleno s projektem, ve kterém je pracovní balíček přítomen." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + few: "There are %{count} work packages that were not completed in this sprint." + many: "There are %{count} work packages that were not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint nemůže končit dříve, než začne." models: @@ -61,12 +85,12 @@ cs: task_type: "Typ úlohy" backlogs: any: "jakákoliv" - column_width: "Column width" + column_width: "Šířka sloupce" definition_of_done: "Definice dokončena" definition_of_done_caption: "Work packages with these statuses are treated as completed in backlog views and reporting." done_status: "Done status" sharing_description: "This project can either share its own sprints, receive shared sprints or handle sprints independently (no sharing)." - sharing: "Sharing" + sharing: "Sdílení" impediment: "Impediment" label_versions_default_fold_state: " Verze zobrazit srolovaně" caption_versions_default_fold_state: "Verze se při prohlížení nevyřízených žádostí ve výchozím nastavení nerozbalují. Každou z nich je třeba rozbalit ručně." @@ -92,6 +116,9 @@ cs: task: "Úkol" task_color: "Barva úlohy" unassigned: "Nepřiřazeno" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -107,6 +134,37 @@ cs: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + few: "Show %{count} more items" + many: "Show %{count} more items" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -123,18 +181,34 @@ cs: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: - edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + start_sprint: "Zahájit sprint" + finish_sprint: "Dokončit sprint" + start_sprint_disabled_description: "Jiný sprint je již aktivní." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." + edit_sprint: "Upravit sprint" + add_work_package: "Přidat pracovní balíček" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Body popáleniny nahoru/dolů" backlogs_product_backlog: "Nevyřízené produkty" backlogs_story: "Příběh" @@ -154,6 +228,8 @@ cs: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Nevyřízené položky" label_backlogs_unconfigured: "Zatím nemáte nakonfigurované nevyřízené záznamy. Přejděte na %{administration} > %{plugins}a poté klikněte na odkaz %{configure} pro tento plugin. Jakmile nastavíte pole, vraťte se na tuto stránku a začněte používat nástroj." label_blocks_ids: "ID blokovaných pracovních balíčků" @@ -164,7 +240,14 @@ cs: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Běh impedimenty" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Tabule úkolů" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Vybrat stavy dokončených" diff --git a/modules/backlogs/config/locales/crowdin/da.yml b/modules/backlogs/config/locales/crowdin/da.yml index 25c50c99587..8b6275e2d3f 100644 --- a/modules/backlogs/config/locales/crowdin/da.yml +++ b/modules/backlogs/config/locales/crowdin/da.yml @@ -31,17 +31,27 @@ da: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Position" - story_points: "Historiepunkter" backlogs_work_package_type: "Backlog-type" + position: "Position" + sprint: "Sprint" + story_points: "Historiepunkter" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ da: must_block_at_least_one_work_package: "skal indeholde ID'et på mindst én billet." version_id: task_version_must_be_the_same_as_story_version: "skal være identisk med hovedhistorieversionen." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint kan ikke afsluttes før det starter." models: @@ -88,6 +110,9 @@ da: task: "Opgave" task_color: "Opgavefarve" unassigned: "Utildelt" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlog-modul" button_update_backlogs: "Opdater backlog-modul" @@ -103,6 +128,35 @@ da: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ da: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Punkt burn op/ned" backlogs_product_backlog: "Produkt-backlog" backlogs_story: "Historie" @@ -150,6 +220,8 @@ da: attributes: task_type: cannot_be_story_type: "kan ikke også være en historietype" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "Man har ikke opsat Backlogs endnu. Gå til %{administration} > %{plugins}, og klik dernæst på linket %{configure} til dette plugin. Når man har indstillet feltindhold, vend tilbage til denne side for at begynde at bruge værktøjet." label_blocks_ids: "ID'er for blokerede arbejdspakker" @@ -160,7 +232,14 @@ da: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprint-hindringer" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Opgaveoversigt" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Vælg udført-statusser" diff --git a/modules/backlogs/config/locales/crowdin/de.yml b/modules/backlogs/config/locales/crowdin/de.yml index 7f354321296..22cfa7e2524 100644 --- a/modules/backlogs/config/locales/crowdin/de.yml +++ b/modules/backlogs/config/locales/crowdin/de.yml @@ -31,17 +31,27 @@ de: goal: "Sprint-Ziel" name: "Sprint-Name" sharing: "Teilen" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint-Dauer" work_package: - position: "Position" - story_points: "Story-Punkte" backlogs_work_package_type: "Backlog Typ" + position: "Position" + sprint: "Sprint" + story_points: "Story-Punkte" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "pro Projekt ist nur ein aktiver Sprint erlaubt." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ de: must_block_at_least_one_work_package: "muss die ID von mindestens einem Arbeitspaket enthalten." version_id: task_version_must_be_the_same_as_story_version: "muss der Version der übergeordneten Story entsprechen." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint kann nicht enden, bevor er begonnen hat." models: @@ -88,6 +110,9 @@ de: task: "Aufgabe" task_color: "Farbe für Aufgaben" unassigned: "Nicht zugewiesen" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlog-Modul" button_update_backlogs: "Backlog-Modul aktualisieren" @@ -103,6 +128,35 @@ de: zero: "Keine Arbeitspakete im Backlog" one: "%{count} Arbeitspakete im Backlog" other: "%{count} Geschichten im Backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "%{name} ein-/ausklappen" label_story_count: @@ -119,18 +173,34 @@ de: burndown_chart: "Burndown-Diagramm" wiki: "Wiki" properties: "Eigenschaften" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint-Aktionen" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Sprint bearbeiten" - new_story: "Neue Story" - stories_tasks: "Stories/Aufgaben" - task_board: "Taskboard" - burndown_chart: "Burndown-Diagramm" + add_work_package: "Add work package" + task_board: "Task board" story_component: label_drag_story: "%{name} verschieben" story_menu_component: label_actions: "Weitere Aktionen" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Burnup/-down Punkte" backlogs_product_backlog: "Produkt-Backlog" backlogs_story: "Story" @@ -150,6 +220,8 @@ de: attributes: task_type: cannot_be_story_type: "kann nicht auch ein Story-Typ sein" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "Sie haben noch keine Backlogs konfiguriert. Bitte gehen Sie auf %{administration} > %{plugins}, klicken Sie dann auf den %{configure} Link für dieses Plugin. Kommen Sie hierher zurück, sobald sie die Felder konfiguriert haben." label_blocks_ids: "IDs der blockierten Arbeitspakete" @@ -160,7 +232,14 @@ de: label_sprint_edit: "Sprint bearbeiten" label_sprint_impediments: "Sprint Hindernisse" label_sprint_new: "Neuer Sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Taskboard" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Sprints erstellen" permission_manage_sprint_items: "Sprint-Elemente verwalten" permission_select_done_statuses: "Abgeschlossene Status auswählen" diff --git a/modules/backlogs/config/locales/crowdin/el.yml b/modules/backlogs/config/locales/crowdin/el.yml index a1770cd1ae8..1c5ce6e3848 100644 --- a/modules/backlogs/config/locales/crowdin/el.yml +++ b/modules/backlogs/config/locales/crowdin/el.yml @@ -26,26 +26,36 @@ el: activerecord: attributes: agile/sprint: - duration: "Duration" - finish_date: "Finish date" - goal: "Sprint goal" - name: "Sprint name" + duration: "Διάρκεια" + finish_date: "Ημερομηνία ολοκλήρωσης" + goal: "Στόχος Sprint" + name: "Όνομα Sprint" sharing: "Sharing" + statuses: + in_planning: "Σε σχεδιασμό" + active: "Ενεργό" + completed: "Ολοκληρωμένο" project: - sprint_sharing: "Sprint sharing" + sprint_sharing: "Διαμοιρασμός Sprint" sprint: - duration: "Sprint duration" + duration: "Διάρκεια Sprint" work_package: - position: "Θέση" - story_points: "Πόντοι Ιστορίας" backlogs_work_package_type: "Τύπος backlog" + position: "Θέση" + sprint: "Sprint" + story_points: "Πόντοι Ιστορίας" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: - share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." - share_all_projects_already_taken_anonymous: "cannot be set because another project is already sharing with all projects." + share_all_projects_already_taken: "δεν μπορεί να οριστεί επειδή το έργο \"%{name}\" ήδη διαμοιράζεται με όλα τα έργα." + share_all_projects_already_taken_anonymous: "δεν μπορεί να οριστεί επειδή ένα άλλο έργο ήδη διαμοιράζεται με όλα τα έργα." work_package: attributes: blocks_ids: @@ -53,17 +63,29 @@ el: must_block_at_least_one_work_package: "πρέπει να περιέχει την ταυτότητα από τουλάχιστον ένα ticket." version_id: task_version_must_be_the_same_as_story_version: "πρέπει να είναι το ίδιο με την έκδοση ιστορίας του γονέα." + sprint: + not_shared_with_project: "δεν διαμοιράζεται με το έργο στο οποίο ανήκει το πακέτο εργασίας." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Το sprint δεν μπορεί να λήξει πριν αρχίσει." models: sprint: "Sprint" attributes: - task_type: "Task type" + task_type: "Τύπος εργασίας" backlogs: any: "οποιoδήποτε" - column_width: "Column width" + column_width: "Πλάτος στήλης" definition_of_done: "Ορισμός των Ολοκληρωμένων" - definition_of_done_caption: "Work packages with these statuses are treated as completed in backlog views and reporting." + definition_of_done_caption: "Τα πακέτα εργασίας με αυτές τις καταστάσεις αντιμετωπίζονται ως ολοκληρωμένα στις προβολές backlog και τις αναφορές." done_status: "Done status" sharing_description: "This project can either share its own sprints, receive shared sprints or handle sprints independently (no sharing)." sharing: "Sharing" @@ -88,6 +110,9 @@ el: task: "Εργασία" task_color: "Χρώμα εργασίας" unassigned: "Μη Αναθετημένο" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -103,6 +128,35 @@ el: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -118,19 +172,35 @@ el: task_board: "Task board" burndown_chart: "Burndown chart" wiki: "Wiki" - properties: "Properties" + properties: "Ιδιότητες" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Points burn up/down" backlogs_product_backlog: "Backlog προϊόντος" backlogs_story: "Ιστορία" @@ -150,6 +220,8 @@ el: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "Δεν έχετε διαμορφώσει τα Backlogs ακόμη. Παρακαλούμε πηγαίνετε στο %{administration} > %{plugins}, έπειτα κάντε κλικ στον σύνδεσμο %{configure} για αυτό το πρόσθετο. Μόλις έχετε ορίσει τα πεδία, επιστρέψτε σε αυτή την σελίδα για να αρχίσετε να χρησιμοποιείτε το εργαλείο." label_blocks_ids: "Ταυτότητες μπλοκαρισμένων πακέτων εργασίας" @@ -160,7 +232,14 @@ el: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Εμπόδια Sprint" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Πίνακας εργασιών" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Select done statuses" diff --git a/modules/backlogs/config/locales/crowdin/eo.yml b/modules/backlogs/config/locales/crowdin/eo.yml index 6a9fcac0830..1a654c6b260 100644 --- a/modules/backlogs/config/locales/crowdin/eo.yml +++ b/modules/backlogs/config/locales/crowdin/eo.yml @@ -31,17 +31,27 @@ eo: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Posicio" - story_points: "Historiaj poentoj" backlogs_work_package_type: "Backlog type" + position: "Posicio" + sprint: "Sprint" + story_points: "Historiaj poentoj" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ eo: must_block_at_least_one_work_package: "must contain the ID of at least one ticket." version_id: task_version_must_be_the_same_as_story_version: "must be the same as the parent story's version." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint cannot end before it starts." models: @@ -88,6 +110,9 @@ eo: task: "Tasko" task_color: "Task color" unassigned: "Unassigned" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -103,6 +128,35 @@ eo: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ eo: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Points burn up/down" backlogs_product_backlog: "Product backlog" backlogs_story: "Historio" @@ -150,6 +220,8 @@ eo: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "You have not configured Backlogs yet. Please go to %{administration} > %{plugins}, then click on the %{configure} link for this plugin. Once you have set the fields, come back to this page to start using the tool." label_blocks_ids: "ID de baritaj laborpakaĵoj" @@ -160,7 +232,14 @@ eo: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprint Impediments" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Task board" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Select done statuses" diff --git a/modules/backlogs/config/locales/crowdin/es.yml b/modules/backlogs/config/locales/crowdin/es.yml index 4acfd170279..c87fb020e08 100644 --- a/modules/backlogs/config/locales/crowdin/es.yml +++ b/modules/backlogs/config/locales/crowdin/es.yml @@ -31,17 +31,27 @@ es: goal: "Objetivo del sprint" name: "Nombre del sprint" sharing: "Uso compartido" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Duración del sprint" work_package: - position: "Posición" - story_points: "Puntos de Historia" backlogs_work_package_type: "Tipo de Backlog" + position: "Posición" + sprint: "Sprint" + story_points: "Puntos de Historia" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "solo se permite un sprint activo por proyecto." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ es: must_block_at_least_one_work_package: "debe contener el ID de por lo menos un ticket." version_id: task_version_must_be_the_same_as_story_version: "debe coincidir con la versión de la historia principal." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "El sprint no puede terminar antes del inicio." models: @@ -88,6 +110,9 @@ es: task: "Tarea" task_color: "Color de la tarea" unassigned: "No asignado" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Módulo de trabajos pendientes" button_update_backlogs: "Actualizar módulo de trabajos pendientes" @@ -103,6 +128,35 @@ es: zero: "No hay historias en backlog" one: "%{count} historia en backlog" other: "%{count} historias en backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Contraer/expandir %{name}" label_story_count: @@ -119,18 +173,34 @@ es: burndown_chart: "Diagrama Burndown" wiki: "Wiki" properties: "Propiedades" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Acciones de sprint" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Editar sprint" - new_story: "Nueva historia" - stories_tasks: "Historias/tareas" - task_board: "Panel de tareas" - burndown_chart: "Diagrama Burndown" + add_work_package: "Add work package" + task_board: "Task board" story_component: label_drag_story: "Mover %{name}" story_menu_component: label_actions: "Acciones de la historia" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Puntos de quemado arriba/abajo" backlogs_product_backlog: "Cartera de producto" backlogs_story: "Historia" @@ -150,6 +220,8 @@ es: attributes: task_type: cannot_be_story_type: "no puede ser también un tipo de historia" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "Todavía no ha configurado backlogs. Por favor, visite %{administration} > %{plugins}, luego haga clic en el enlace de %{configure} para esta extensión. Cuando haya establecido los campos, vuelva a esta página para empezar a usar la herramienta." label_blocks_ids: "ID de los paquetes de trabajo bloqueados" @@ -160,7 +232,14 @@ es: label_sprint_edit: "Editar sprint" label_sprint_impediments: "Impedimentos de sprint" label_sprint_new: "Nuevo sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Tablero de tareas" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Crear sprints" permission_manage_sprint_items: "Gestionar elementos de sprint" permission_select_done_statuses: "Seleccionar estados de finalización" diff --git a/modules/backlogs/config/locales/crowdin/et.yml b/modules/backlogs/config/locales/crowdin/et.yml index 40e46393441..1d938199c47 100644 --- a/modules/backlogs/config/locales/crowdin/et.yml +++ b/modules/backlogs/config/locales/crowdin/et.yml @@ -31,17 +31,27 @@ et: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Asukoht" - story_points: "Story Points" backlogs_work_package_type: "Backlog type" + position: "Asukoht" + sprint: "Sprint" + story_points: "Story Points" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ et: must_block_at_least_one_work_package: "must contain the ID of at least one ticket." version_id: task_version_must_be_the_same_as_story_version: "must be the same as the parent story's version." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint cannot end before it starts." models: @@ -88,6 +110,9 @@ et: task: "Ülesanne" task_color: "Ülesande värv" unassigned: "Määramata" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -103,6 +128,35 @@ et: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ et: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Points burn up/down" backlogs_product_backlog: "Product backlog" backlogs_story: "Story" @@ -150,6 +220,8 @@ et: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "You have not configured Backlogs yet. Please go to %{administration} > %{plugins}, then click on the %{configure} link for this plugin. Once you have set the fields, come back to this page to start using the tool." label_blocks_ids: "IDs of blocked work packages" @@ -160,7 +232,14 @@ et: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprint Impediments" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Task board" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Vali valmis staatused" diff --git a/modules/backlogs/config/locales/crowdin/eu.yml b/modules/backlogs/config/locales/crowdin/eu.yml index fab65bd9e43..302a24359cb 100644 --- a/modules/backlogs/config/locales/crowdin/eu.yml +++ b/modules/backlogs/config/locales/crowdin/eu.yml @@ -31,17 +31,27 @@ eu: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Kokapena" - story_points: "Story Points" backlogs_work_package_type: "Backlog type" + position: "Kokapena" + sprint: "Sprint" + story_points: "Story Points" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ eu: must_block_at_least_one_work_package: "must contain the ID of at least one ticket." version_id: task_version_must_be_the_same_as_story_version: "must be the same as the parent story's version." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint cannot end before it starts." models: @@ -88,6 +110,9 @@ eu: task: "Zeregina" task_color: "Zereginaren kolorea" unassigned: "Esleitu gabea" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -103,6 +128,35 @@ eu: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ eu: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Points burn up/down" backlogs_product_backlog: "Product backlog" backlogs_story: "Story" @@ -150,6 +220,8 @@ eu: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "You have not configured Backlogs yet. Please go to %{administration} > %{plugins}, then click on the %{configure} link for this plugin. Once you have set the fields, come back to this page to start using the tool." label_blocks_ids: "IDs of blocked work packages" @@ -160,7 +232,14 @@ eu: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprint Impediments" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Task board" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Select done statuses" diff --git a/modules/backlogs/config/locales/crowdin/fa.yml b/modules/backlogs/config/locales/crowdin/fa.yml index 6b038e250a1..2610024690e 100644 --- a/modules/backlogs/config/locales/crowdin/fa.yml +++ b/modules/backlogs/config/locales/crowdin/fa.yml @@ -31,17 +31,27 @@ fa: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "مدت زمان اسپرینت" work_package: - position: "Position" - story_points: "Story Points" backlogs_work_package_type: "Backlog type" + position: "Position" + sprint: "Sprint" + story_points: "Story Points" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ fa: must_block_at_least_one_work_package: "must contain the ID of at least one ticket." version_id: task_version_must_be_the_same_as_story_version: "باید از همان نگارش داستان زادآوران باشد." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint cannot end before it starts." models: @@ -88,6 +110,9 @@ fa: task: "Task" task_color: "Task color" unassigned: "Unassigned" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "ماژول backlogها" button_update_backlogs: "به روز رسانی ماژول backlog ها" @@ -103,6 +128,35 @@ fa: zero: "هیچ داستانی در لیست انتظار نیست" one: "%{count} داستان در لیست کار های عقب افتاده" other: "%{count} داستان های در لیست کارهای عقب افتاده" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ fa: burndown_chart: "نمودار خلاصه" wiki: "ویکی" properties: "ویژگی ها" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "انتقال %{name}" story_menu_component: label_actions: "اقدامات داستانی" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Points burn up/down" backlogs_product_backlog: "Product backlog" backlogs_story: "Story" @@ -150,6 +220,8 @@ fa: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "پس‌افت" label_backlogs_unconfigured: "شما هنوز پس‌افت‌ها را پیکربندی نکرده‌اید. لطفاً به %{administration} > %{plugins} بروید، سپس برای این افزونه روی %{configure} کلیک کنید. وقتی همۀ قسمت‌ها را تکمیل کردید، برای استفاده از این ابزار به همین صفحه برگردید. " label_blocks_ids: "شناسه‌های مسدود کاربسته‌ها" @@ -160,7 +232,14 @@ fa: label_sprint_edit: "Edit sprint" label_sprint_impediments: " موانع تاخت" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "تابلوی وظیفه" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "انتخاب وضعیت های انجام شده" diff --git a/modules/backlogs/config/locales/crowdin/fi.yml b/modules/backlogs/config/locales/crowdin/fi.yml index 7139bf3ee61..4a2d826888e 100644 --- a/modules/backlogs/config/locales/crowdin/fi.yml +++ b/modules/backlogs/config/locales/crowdin/fi.yml @@ -31,17 +31,27 @@ fi: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Sijainti" - story_points: "Tarinapisteet" backlogs_work_package_type: "Työjonon tyyppi" + position: "Sijainti" + sprint: "Sprint" + story_points: "Tarinapisteet" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ fi: must_block_at_least_one_work_package: "vähintään yhden tehtävän ID-mainittava." version_id: task_version_must_be_the_same_as_story_version: "must be the same as the parent story's version." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprintti ei voi päättyä, ennen kuin se alkaa." models: @@ -88,6 +110,9 @@ fi: task: "Tehtävä" task_color: "Tehtävän väri" unassigned: "Määrittämätön" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -103,6 +128,35 @@ fi: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ fi: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Pisteiden poltto ylös/alas" backlogs_product_backlog: "Tuotteen työjono" backlogs_story: "Tarina" @@ -150,6 +220,8 @@ fi: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Työjonot" label_backlogs_unconfigured: "Et ole määrittänyt vielä työjonoja. Siirry menuun %{administration} > %{plugins}, sitten klikkaa %{configure} linkkiä tälle liitännäiselle. Kun olet määrittänyt kentät, tule takaisin tälle sivulle aloittaaksesi työkalun käytön." label_blocks_ids: "Estettyjen työpakettien tunnukset" @@ -160,7 +232,14 @@ fi: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprintin esteet" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Tehtävätaulu" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Select done statuses" diff --git a/modules/backlogs/config/locales/crowdin/fil.yml b/modules/backlogs/config/locales/crowdin/fil.yml index 2ef0247f2c6..abd5d597a05 100644 --- a/modules/backlogs/config/locales/crowdin/fil.yml +++ b/modules/backlogs/config/locales/crowdin/fil.yml @@ -31,17 +31,27 @@ fil: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Posisyon" - story_points: "Story Points" backlogs_work_package_type: "Backlog type" + position: "Posisyon" + sprint: "Sprint" + story_points: "Story Points" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ fil: must_block_at_least_one_work_package: "must contain the ID of at least one ticket." version_id: task_version_must_be_the_same_as_story_version: "must be the same as the parent story's version." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint cannot end before it starts." models: @@ -88,6 +110,9 @@ fil: task: "Gawain" task_color: "Task color" unassigned: "Unassigned" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -103,6 +128,35 @@ fil: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ fil: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Points burn up/down" backlogs_product_backlog: "Product backlog" backlogs_story: "Story" @@ -150,6 +220,8 @@ fil: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "You have not configured Backlogs yet. Please go to %{administration} > %{plugins}, then click on the %{configure} link for this plugin. Once you have set the fields, come back to this page to start using the tool." label_blocks_ids: "Mga ID ng naka-block na mga pakete sa gumagawa" @@ -160,7 +232,14 @@ fil: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprint Impediments" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Task board" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Select done statuses" diff --git a/modules/backlogs/config/locales/crowdin/fr.yml b/modules/backlogs/config/locales/crowdin/fr.yml index 14b3d5ce931..9e2257ce79a 100644 --- a/modules/backlogs/config/locales/crowdin/fr.yml +++ b/modules/backlogs/config/locales/crowdin/fr.yml @@ -31,17 +31,27 @@ fr: goal: "Objectif du sprint" name: "Nom du sprint" sharing: "Partage" + statuses: + in_planning: "En cours de planification" + active: "Actif" + completed: "Terminé" project: sprint_sharing: "Partage de sprint" sprint: duration: "Durée du sprint" work_package: - position: "Position" - story_points: "Story points" backlogs_work_package_type: "Type de backlog" + position: "Position" + sprint: "Sprint" + story_points: "Story points" errors: + messages: + must_be_in_planning: "doit être en planification pour commencer." + only_one_active_sprint_allowed: "un seul sprint actif est autorisé par projet." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "ne peut pas être défini car le projet \"%{name}\" est déjà partagé avec tous les projets." @@ -53,6 +63,18 @@ fr: must_block_at_least_one_work_package: "doit contenir l'ID d'au moins un ticket." version_id: task_version_must_be_the_same_as_story_version: "doit être identique à la version de l'histoire parente." + sprint: + not_shared_with_project: "n'est pas partagé avec le projet dans lequel se trouve le lot de travaux." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Un sprint ne peut pas se terminer avant d'avoir débuté." models: @@ -88,6 +110,9 @@ fr: task: "Tâche" task_color: "Couleur des tâches" unassigned: "Non assigné" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Module des backlogs" button_update_backlogs: "Mettre à jour le module des backlogs" @@ -103,6 +128,35 @@ fr: zero: "Aucune histoire dans le backlog" one: "%{count} histoire dans le backlog" other: "%{count} histoires dans le backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Réduire/développer %{name}" label_story_count: @@ -119,18 +173,34 @@ fr: burndown_chart: "Graphique burndown" wiki: "Wiki" properties: "Propriétés" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Actions du sprint" action_menu: + start_sprint: "Démarrer le sprint" + finish_sprint: "Terminer le sprint" + start_sprint_disabled_description: "Un autre sprint est déjà actif." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Modifier le sprint" - new_story: "Nouvelle story" - stories_tasks: "Stories/tâches" + add_work_package: "Ajouter un lot de travaux" task_board: "Tableau des tâches" - burndown_chart: "Graphique burndown" story_component: label_drag_story: "Déplacer %{name}" story_menu_component: label_actions: "Actions de l'histoire" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Les points évoluent vers le haut/bas" backlogs_product_backlog: "Backlog de produit" backlogs_story: "Histoire" @@ -150,6 +220,8 @@ fr: attributes: task_type: cannot_be_story_type: "ne peut pas être également un type d'histoire" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "Vous n'avez pas encore configuré Backlogs. Veuillez vous rendre dans %{administration} > %{plugins}, puis cliquer sur le lien %{configure} pour ce plugin. Une fois que vous avez défini les champs, revenez sur cette page pour commencer à utiliser l'outil." label_blocks_ids: "ID des lots de travaux bloqués" @@ -160,7 +232,14 @@ fr: label_sprint_edit: "Modifier le sprint" label_sprint_impediments: "Obstacles de sprint" label_sprint_new: "Nouveau sprint" + label_sprint_planning: "Planification du sprint" label_task_board: "Tableau des tâches" + notice_successful_start: "Le sprint a commencé." + notice_successful_finish: "Le sprint est terminé." + notice_unsuccessful_start: "Le sprint n'a pas pu être lancé." + notice_unsuccessful_start_with_reason: "Le sprint n'a pas pu être démarré : %{reason}" + notice_unsuccessful_finish: "Le sprint n'a pas pu être terminé." + notice_unsuccessful_finish_with_reason: "Le sprint n'a pas pu être achevé : %{reason}" permission_create_sprints: "Créer des sprints" permission_manage_sprint_items: "Gérer les éléments du sprint" permission_select_done_statuses: "Sélectionner les statuts terminés" diff --git a/modules/backlogs/config/locales/crowdin/he.yml b/modules/backlogs/config/locales/crowdin/he.yml index f06acdb71fa..63e9731c500 100644 --- a/modules/backlogs/config/locales/crowdin/he.yml +++ b/modules/backlogs/config/locales/crowdin/he.yml @@ -31,17 +31,27 @@ he: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "מיקום" - story_points: "Story Points" backlogs_work_package_type: "Backlog type" + position: "מיקום" + sprint: "Sprint" + story_points: "Story Points" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,20 @@ he: must_block_at_least_one_work_package: "must contain the ID of at least one ticket." version_id: task_version_must_be_the_same_as_story_version: "must be the same as the parent story's version." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + two: "There are %{count} work packages that were not completed in this sprint." + many: "There are %{count} work packages that were not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint cannot end before it starts." models: @@ -92,6 +116,9 @@ he: task: "משימה" task_color: "צבע משימה" unassigned: "לא מוקצה" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -107,6 +134,37 @@ he: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + two: "Show %{count} more items" + many: "Show %{count} more items" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -123,18 +181,34 @@ he: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Points burn up/down" backlogs_product_backlog: "Product backlog" backlogs_story: "סטורי" @@ -154,6 +228,8 @@ he: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "You have not configured Backlogs yet. Please go to %{administration} > %{plugins}, then click on the %{configure} link for this plugin. Once you have set the fields, come back to this page to start using the tool." label_blocks_ids: "המזהים של חבילות עבודה חסומים" @@ -164,7 +240,14 @@ he: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprint Impediments" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Task board" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Select done statuses" diff --git a/modules/backlogs/config/locales/crowdin/hi.yml b/modules/backlogs/config/locales/crowdin/hi.yml index cfe9fafe806..5a40e672b1d 100644 --- a/modules/backlogs/config/locales/crowdin/hi.yml +++ b/modules/backlogs/config/locales/crowdin/hi.yml @@ -31,17 +31,27 @@ hi: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "स्थिति" - story_points: "कहानी अंक" backlogs_work_package_type: "बैकलॉग प्रकार" + position: "स्थिति" + sprint: "Sprint" + story_points: "कहानी अंक" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ hi: must_block_at_least_one_work_package: "कम से कम एक टिकट की आईडी होनी चाहिए।" version_id: task_version_must_be_the_same_as_story_version: "मूल कहानी के संस्करण के समान होना चाहिए।" + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "स्प्रिंट शुरू होने से पहले खत्म नहीं हो सकता।" models: @@ -88,6 +110,9 @@ hi: task: "कार्य" task_color: "कार्य का रंग" unassigned: "सौंपे नहीं गए" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -103,6 +128,35 @@ hi: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ hi: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Points burn up/down" backlogs_product_backlog: "Product backlog" backlogs_story: "कहानी" @@ -150,6 +220,8 @@ hi: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "You have not configured Backlogs yet. Please go to %{administration} > %{plugins}, then click on the %{configure} link for this plugin. Once you have set the fields, come back to this page to start using the tool." label_blocks_ids: "IDs of blocked work packages" @@ -160,7 +232,14 @@ hi: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprint Impediments" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Task board" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Select done statuses" diff --git a/modules/backlogs/config/locales/crowdin/hr.yml b/modules/backlogs/config/locales/crowdin/hr.yml index 2d0f59ea3d7..dedd03dc4a4 100644 --- a/modules/backlogs/config/locales/crowdin/hr.yml +++ b/modules/backlogs/config/locales/crowdin/hr.yml @@ -31,17 +31,27 @@ hr: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Pozicija" - story_points: "Točke priče" backlogs_work_package_type: "Backlog tip" + position: "Pozicija" + sprint: "Sprint" + story_points: "Točke priče" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,19 @@ hr: must_block_at_least_one_work_package: "mora sadržavati najamanje jedan ID tiketa za postupak blokiranja radnog paketa." version_id: task_version_must_be_the_same_as_story_version: "must be the same as the parent story's version." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + few: "There are %{count} work packages that were not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Period razvoja ne može završiti prije nego li je započeo." models: @@ -90,6 +113,9 @@ hr: task: "Zadaća" task_color: "Boja zadaće" unassigned: "Nedodijeljeno" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -105,6 +131,36 @@ hr: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + few: "Show %{count} more items" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -121,18 +177,34 @@ hr: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Burn točke gore/dole" backlogs_product_backlog: "Backlog produkta" backlogs_story: "Scenarij" @@ -152,6 +224,8 @@ hr: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "Niste još konfigurirali Backlog. Za konfiguraciju odaberite %{administration}>%{plugins}, zatim %{configure} Backlog dodatak. Nakon što ste uredili potrebna polja, vratite se na ovu stranicu da biste započeli s korištenjem ovog alata." label_blocks_ids: "ID blokiranih radnih paketa" @@ -162,7 +236,14 @@ hr: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Prepreke perioda razvoja" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Upravitelj zadatcima" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Select done statuses" diff --git a/modules/backlogs/config/locales/crowdin/hu.yml b/modules/backlogs/config/locales/crowdin/hu.yml index 1162b326881..c6c43055222 100644 --- a/modules/backlogs/config/locales/crowdin/hu.yml +++ b/modules/backlogs/config/locales/crowdin/hu.yml @@ -31,17 +31,27 @@ hu: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Pozició" - story_points: "Story pontok" backlogs_work_package_type: "Backlog típus" + position: "Pozició" + sprint: "Sprint" + story_points: "Story pontok" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ hu: must_block_at_least_one_work_package: "legalább egy munkacsomag azonosítóját tartalmaznia kell." version_id: task_version_must_be_the_same_as_story_version: "a szülő story verziójával megegyezőnek kell lennie." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint nem érhet véget, mielőtt elindul." models: @@ -88,6 +110,9 @@ hu: task: "Feladat" task_color: "Feladat színe" unassigned: "Nincs hozzárendelés" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Várólista modul" button_update_backlogs: "Várólista modul frissítése" @@ -103,6 +128,35 @@ hu: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ hu: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Pontok teendő fel/le" backlogs_product_backlog: "Termék backlog" backlogs_story: "Sztori" @@ -150,6 +220,8 @@ hu: attributes: task_type: cannot_be_story_type: "nem lehet egyúttal történet típus is" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "You have not configured Backlogs yet. Please go to %{administration} > %{plugins}, then click on the %{configure} link for this plugin. Once you have set the fields, come back to this page to start using the tool." label_blocks_ids: "IDs of blocked work packages" @@ -160,7 +232,14 @@ hu: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprint akadályai" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Task board" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Elkészültek kiválasztása" diff --git a/modules/backlogs/config/locales/crowdin/id.yml b/modules/backlogs/config/locales/crowdin/id.yml index 0358278d122..2bde09236d4 100644 --- a/modules/backlogs/config/locales/crowdin/id.yml +++ b/modules/backlogs/config/locales/crowdin/id.yml @@ -31,17 +31,27 @@ id: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Posisi" - story_points: "Cerita poin" backlogs_work_package_type: "Jenis jaminan tersimpan" + position: "Posisi" + sprint: "Sprint" + story_points: "Cerita poin" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,17 @@ id: must_block_at_least_one_work_package: "harus berisi ID minimal satu tiket." version_id: task_version_must_be_the_same_as_story_version: "harus sama seperti versi kisah orang tua." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint tidak bisa berakhir sebelum mulai." models: @@ -86,6 +107,9 @@ id: task: "Tugas" task_color: "Warna tugas" unassigned: "Belum ditetapkan" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Modul backlog" button_update_backlogs: "Perbarui modul backlog" @@ -101,6 +125,34 @@ id: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -117,18 +169,34 @@ id: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Poin terbakar habis / turun" backlogs_product_backlog: "Backlog produk" backlogs_story: "Cerita" @@ -148,6 +216,8 @@ id: attributes: task_type: cannot_be_story_type: "bisa juga bukan jenis cerita" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "Anda belum mengkonfigurasi Backlogs. Silakan masuk ke %{administration}> %{plugins}, lalu klik pada link %{configure} untuk plugin ini. Setelah Anda menyetel bidang, kembali ke halaman ini untuk mulai menggunakan alat ini." label_blocks_ids: "ID dari paket pekerjaan yang diblokir" @@ -158,7 +228,14 @@ id: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Hanbatan kekuatan" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Papan tugas" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Pilih status selesai" diff --git a/modules/backlogs/config/locales/crowdin/it.yml b/modules/backlogs/config/locales/crowdin/it.yml index 09199d2219e..90fc707734b 100644 --- a/modules/backlogs/config/locales/crowdin/it.yml +++ b/modules/backlogs/config/locales/crowdin/it.yml @@ -31,17 +31,27 @@ it: goal: "Obiettivo dello sprint" name: "Nome dello sprint" sharing: "Condivisione" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Durata dello sprint" work_package: - position: "Posizione" - story_points: "Punti della storia" backlogs_work_package_type: "Tipo di backlog" + position: "Posizione" + sprint: "Sprint" + story_points: "Punti della storia" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "è consentito un solo sprint attivo per progetto." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ it: must_block_at_least_one_work_package: "deve contenere l'ID di almeno un ticket." version_id: task_version_must_be_the_same_as_story_version: "deve essere uguale alla versione della storia del genitore." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Uno sprint non può terminare prima che venga avviato." models: @@ -88,6 +110,9 @@ it: task: "Attività" task_color: "Colore attività" unassigned: "Non assegnato" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Modulo backlog" button_update_backlogs: "Aggiorna il modulo backlog" @@ -103,6 +128,35 @@ it: zero: "Nessuna story nel backlog" one: "%{count} story nel backlog" other: "%{count} story nel backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Comprimi/Espandi %{name}" label_story_count: @@ -119,18 +173,34 @@ it: burndown_chart: "Grafico Burndown" wiki: "Wiki" properties: "Proprietà" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Azioni dello sprint" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Modifica sprint" - new_story: "Nuova story" - stories_tasks: "Story/Task" - task_board: "Bacheca dei task" - burndown_chart: "Grafico Burndown" + add_work_package: "Add work package" + task_board: "Task board" story_component: label_drag_story: "Sposta %{name}" story_menu_component: label_actions: "Azioni della story" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Punteggi per burn positivo/negativo" backlogs_product_backlog: "Backlog del prodotto" backlogs_story: "Storia" @@ -150,6 +220,8 @@ it: attributes: task_type: cannot_be_story_type: "non può essere anche un tipo di storia" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlog" label_backlogs_unconfigured: "Non hai ancora configurato i Backlog. Vai su %{administration} > %{plugins}, quindi fai clic sul link %{configure} per il plugin. Dopo aver impostato i campi, torna su questa pagina per iniziare a utilizzare lo strumento." label_blocks_ids: "ID dei pacchetti di lavoro bloccati" @@ -160,7 +232,14 @@ it: label_sprint_edit: "Modifica sprint" label_sprint_impediments: "Impedimenti allo sprint" label_sprint_new: "Nuovo sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Pannello delle attività" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Crea gli sprint" permission_manage_sprint_items: "Gestisci gli elementi dello sprint" permission_select_done_statuses: "Seleziona gli stati terminati" diff --git a/modules/backlogs/config/locales/crowdin/ja.yml b/modules/backlogs/config/locales/crowdin/ja.yml index ed559ad21e0..ed7b5173d9a 100644 --- a/modules/backlogs/config/locales/crowdin/ja.yml +++ b/modules/backlogs/config/locales/crowdin/ja.yml @@ -28,20 +28,30 @@ ja: agile/sprint: duration: "Duration" finish_date: "Finish date" - goal: "Sprint goal" - name: "Sprint name" + goal: "スプリントゴール" + name: "スプリント名" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: - duration: "Sprint duration" + duration: "スプリント期間" work_package: - position: "位置" - story_points: "ストーリーポイント" backlogs_work_package_type: "バックログの種類" + position: "位置" + sprint: "Sprint" + story_points: "ストーリーポイント" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,10 +63,21 @@ ja: must_block_at_least_one_work_package: "は少なくとも 1つのチケットIDを含める必要があります。" version_id: task_version_must_be_the_same_as_story_version: "親ストーリーのバージョンと同じでなければなりません。" + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "スプリントは開始する前に終了できません。" models: - sprint: "Sprint" + sprint: "スプリント" attributes: task_type: "タスクのタイプ" backlogs: @@ -73,7 +94,7 @@ ja: work_package_is_closed: "ワークパッケージが終了するには" label_is_done_status: "ステータス%{status_name}は完了として扱う" points_label: - other: "points" + other: "ポイント" positions_could_not_be_rebuilt: "位置は再構築されませんでした。" positions_rebuilt_successfully: "位置情報は再構築しました。" rebuild: "再構築" @@ -86,6 +107,9 @@ ja: task: "タスク" task_color: "タスクの色" unassigned: "未割り当て" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "バックログモジュール" button_update_backlogs: "バックログモジュールを更新" @@ -101,6 +125,34 @@ ja: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -113,22 +165,38 @@ ja: edit_sprint: "Edit sprint" new_story: "New story" stories_tasks: "Stories/Tasks" - task_board: "Task board" - burndown_chart: "Burndown chart" + task_board: "タスクボード" + burndown_chart: "バーンダウンチャート" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "ポイントのバーンアップ/バーンダウン" backlogs_product_backlog: "プロダクトバックログ" backlogs_story: "ストーリー" @@ -142,12 +210,14 @@ ja: backlogs_not_configured_description: "Story and task types need to be set before using this module." backlogs_not_configured_action_text: "Configure Backlogs" burndown: - story_points: "Story points" + story_points: "ストーリーポイント" story_points_ideal: "Story points (ideal)" errors: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "バックログ" label_backlogs_unconfigured: "バックログは未設定です。%{administration} > %{plugins}をアクセスして、このプラグインの%{configure}リンクをクリックしてください。フィールドを設定した後、このページに戻ってツールを使用開始してください。" label_blocks_ids: "ブロックされているワークパッケージのID" @@ -157,8 +227,15 @@ ja: label_points_burn_up: "アップ" label_sprint_edit: "Edit sprint" label_sprint_impediments: "スプリント障害事項" - label_sprint_new: "New sprint" + label_sprint_new: "新しいスプリント" + label_sprint_planning: "Sprint planning" label_task_board: "かんばん" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "完了ステータスを選択" @@ -171,19 +248,19 @@ ja: backlog_sharing: options: no_sharing: - label: "Don't share" + label: "共有しない" caption: "Sprints created in this project will only be available and visible to this project. They will also not be visible to subprojects." receive_shared: label: "Receive shared sprints" caption: "This project can only use sprints shared by other projects." warning: "This project can only use sprints shared by other projects. Unused sprints created in this project in the past, will no longer be visible." share_all_projects: - label: "All projects" + label: "全てのプロジェクト" caption: "Sprints created in this project will be available to all projects in this instance. If you select this option, it will no longer be available to other projects." disabled_caption: "Option not available since project \"%{name}\" is currently sharing with all projects and only one project can do this." disabled_caption_anonymous: "Option not available since another project is currently sharing with all projects and only one project can do this." share_subprojects: - label: "Subprojects" + label: "サブプロジェクト" caption: "Sprints created in this project will be available to all subprojects of the current project." info: "Sharing a sprint will share the name, status and the start and finish dates in all projects. These cannot be modified in projects that receive and use these sprints." sprint_sharing: Share sprints diff --git a/modules/backlogs/config/locales/crowdin/ka.yml b/modules/backlogs/config/locales/crowdin/ka.yml index a29561c677e..a8c3d4f090b 100644 --- a/modules/backlogs/config/locales/crowdin/ka.yml +++ b/modules/backlogs/config/locales/crowdin/ka.yml @@ -31,17 +31,27 @@ ka: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "მდებარეობა" - story_points: "ისტორიული წერტილები" backlogs_work_package_type: "ჩამორჩენის ტიპი" + position: "მდებარეობა" + sprint: "Sprint" + story_points: "ისტორიული წერტილები" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ ka: must_block_at_least_one_work_package: "must contain the ID of at least one ticket." version_id: task_version_must_be_the_same_as_story_version: "must be the same as the parent story's version." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint cannot end before it starts." models: @@ -88,6 +110,9 @@ ka: task: "ამოცანა" task_color: "ამოცანის ფერი" unassigned: "მიუნიჭებელი" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -103,6 +128,35 @@ ka: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ ka: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Points burn up/down" backlogs_product_backlog: "Product backlog" backlogs_story: "ამბავი" @@ -150,6 +220,8 @@ ka: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "შეუსრულებელი ამოცანები" label_backlogs_unconfigured: "You have not configured Backlogs yet. Please go to %{administration} > %{plugins}, then click on the %{configure} link for this plugin. Once you have set the fields, come back to this page to start using the tool." label_blocks_ids: "IDs of blocked work packages" @@ -160,7 +232,14 @@ ka: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprint Impediments" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "ამოცანების დაფა" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "აირჩიეთ დასრულების სტატუსები" diff --git a/modules/backlogs/config/locales/crowdin/kk.yml b/modules/backlogs/config/locales/crowdin/kk.yml index cd93e23a720..c0afb8729bf 100644 --- a/modules/backlogs/config/locales/crowdin/kk.yml +++ b/modules/backlogs/config/locales/crowdin/kk.yml @@ -31,17 +31,27 @@ kk: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Position" - story_points: "Story Points" backlogs_work_package_type: "Backlog type" + position: "Position" + sprint: "Sprint" + story_points: "Story Points" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ kk: must_block_at_least_one_work_package: "must contain the ID of at least one ticket." version_id: task_version_must_be_the_same_as_story_version: "must be the same as the parent story's version." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint cannot end before it starts." models: @@ -88,6 +110,9 @@ kk: task: "Task" task_color: "Task color" unassigned: "Unassigned" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -103,6 +128,35 @@ kk: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ kk: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Points burn up/down" backlogs_product_backlog: "Product backlog" backlogs_story: "Story" @@ -150,6 +220,8 @@ kk: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "You have not configured Backlogs yet. Please go to %{administration} > %{plugins}, then click on the %{configure} link for this plugin. Once you have set the fields, come back to this page to start using the tool." label_blocks_ids: "IDs of blocked work packages" @@ -160,7 +232,14 @@ kk: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprint Impediments" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Task board" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Select done statuses" diff --git a/modules/backlogs/config/locales/crowdin/ko.yml b/modules/backlogs/config/locales/crowdin/ko.yml index 57af32fb81a..7bc1496817e 100644 --- a/modules/backlogs/config/locales/crowdin/ko.yml +++ b/modules/backlogs/config/locales/crowdin/ko.yml @@ -31,17 +31,27 @@ ko: goal: "스프린트 목표" name: "스프린트 이름" sharing: "공유" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "스프린트 기간" work_package: - position: "위치" - story_points: "스토리 포인트" backlogs_work_package_type: "백로그 유형" + position: "위치" + sprint: "Sprint" + story_points: "스토리 포인트" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "프로젝트당 하나의 활성 스프린트만 허용됩니다." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,17 @@ ko: must_block_at_least_one_work_package: "은(는) 티켓 하나 이상의 ID를 포함해야 합니다." version_id: task_version_must_be_the_same_as_story_version: "은(는) 부모 스토리의 버전과 동일해야 합니다." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "스프린트는 시작되기 전에 끝날 수 없습니다." models: @@ -86,6 +107,9 @@ ko: task: "작업" task_color: "작업 색상" unassigned: "할당되지 않음" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "백로그 모듈" button_update_backlogs: "백로그 모듈 업데이트" @@ -101,6 +125,34 @@ ko: zero: "백로그에 스토리 없음" one: "백로그의 %{count}개 스토리" other: "백로그의 %{count}개 스토리" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "%{name} 축소/확장" label_story_count: @@ -117,18 +169,34 @@ ko: burndown_chart: "번다운 차트" wiki: "위키" properties: "속성" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "스프린트 작업" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "스프린트 편집" - new_story: "새로운 스토리" - stories_tasks: "스토리/작업" - task_board: "작업 보드" - burndown_chart: "번다운 차트" + add_work_package: "Add work package" + task_board: "Task board" story_component: label_drag_story: "%{name} 이동" story_menu_component: label_actions: "스토리 작업" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "포인트 번 업/다운" backlogs_product_backlog: "제품 백로그" backlogs_story: "스토리" @@ -148,6 +216,8 @@ ko: attributes: task_type: cannot_be_story_type: "- 스토리 유형도 될 수 없습니다" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "백로그" label_backlogs_unconfigured: "백로그를 아직 구성하지 않았습니다. %{administration} > %{plugins}(으)로 이동한 다음 이 플러그인의 %{configure} 링크를 클릭하세요. 필드를 설정한 후 이 페이지로 돌아가서 해당 도구 사용을 시작하세요." label_blocks_ids: "차단된 작업 패키지의 ID" @@ -158,7 +228,14 @@ ko: label_sprint_edit: "스프린트 편집" label_sprint_impediments: "스프린트 제한" label_sprint_new: "새로운 스프린트" + label_sprint_planning: "Sprint planning" label_task_board: "작업 보드" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "스프린트 만들기" permission_manage_sprint_items: "스프린트 항목 관리" permission_select_done_statuses: "완료 상태 선택" diff --git a/modules/backlogs/config/locales/crowdin/lt.yml b/modules/backlogs/config/locales/crowdin/lt.yml index 4ccb602b9fa..2bf100936ca 100644 --- a/modules/backlogs/config/locales/crowdin/lt.yml +++ b/modules/backlogs/config/locales/crowdin/lt.yml @@ -31,17 +31,27 @@ lt: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Vieta" - story_points: "Istorijos taškai" backlogs_work_package_type: "Darbų sąrašo tipas" + position: "Vieta" + sprint: "Sprint" + story_points: "Istorijos taškai" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,20 @@ lt: must_block_at_least_one_work_package: "turi turėti bent vieną ID." version_id: task_version_must_be_the_same_as_story_version: "turi būti tokia pati kaip ir tėvinės istorijos versija." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + few: "There are %{count} work packages that were not completed in this sprint." + many: "There are %{count} work packages that were not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprintas negali baigtis prieš prasidėdamas." models: @@ -92,6 +116,9 @@ lt: task: "Užduotis" task_color: "Užduoties spalva" unassigned: "Nepriskirta" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -107,6 +134,37 @@ lt: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + few: "Show %{count} more items" + many: "Show %{count} more items" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -123,18 +181,34 @@ lt: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Taškai dega aukštyn/žemyn" backlogs_product_backlog: "Produkto darbų sąrašas" backlogs_story: "Istorija" @@ -154,6 +228,8 @@ lt: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Darbų sąrašai" label_backlogs_unconfigured: "Jūs dar nesukonfigūravote Darbų sąrašų. Prašome eiti į %{administration} > %{plugins}, tada nuspausti ant %{configure} nuorodos šiam įskiepiui. Kai nustatysite laukus, grįžkite čia ir pradėkite naudoti instrumentą." label_blocks_ids: "Blokuotų darbų paketų ID reikšmės" @@ -164,7 +240,14 @@ lt: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprinto trukdžiai" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Užduočių lenta" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Parinkite atliktas būsenas" diff --git a/modules/backlogs/config/locales/crowdin/lv.yml b/modules/backlogs/config/locales/crowdin/lv.yml index 6109d4099ee..d449a251255 100644 --- a/modules/backlogs/config/locales/crowdin/lv.yml +++ b/modules/backlogs/config/locales/crowdin/lv.yml @@ -31,17 +31,27 @@ lv: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Pozīcija" - story_points: "Stāsta punkti" backlogs_work_package_type: "Produkta darbu krātuves tips" + position: "Pozīcija" + sprint: "Sprint" + story_points: "Stāsta punkti" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,19 @@ lv: must_block_at_least_one_work_package: "jānorāda vismaz viena darba pieteikuma ID." version_id: task_version_must_be_the_same_as_story_version: "must be the same as the parent story's version." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + zero: "There are %{count} work packages that were not completed in this sprint." + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprints nevar beigties, pirms tas ir sācies." models: @@ -90,6 +113,9 @@ lv: task: "Uzdevums" task_color: "Uzdevumakrāsa" unassigned: "Nepiešķirts" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -105,6 +131,36 @@ lv: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + zero: "Show %{count} more items" + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -121,18 +177,34 @@ lv: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Points burn up/down" backlogs_product_backlog: "Produkta darbu krātuve" backlogs_story: "Stāsts" @@ -152,6 +224,8 @@ lv: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Darbu krātuve" label_backlogs_unconfigured: "You have not configured Backlogs yet. Please go to %{administration} > %{plugins}, then click on the %{configure} link for this plugin. Once you have set the fields, come back to this page to start using the tool." label_blocks_ids: "IDs of blocked work packages" @@ -162,7 +236,14 @@ lv: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprinta šķēršļi" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Pieteikumu tāfele" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Izvēlieties pabeigtības statusu" diff --git a/modules/backlogs/config/locales/crowdin/mn.yml b/modules/backlogs/config/locales/crowdin/mn.yml index 34332e35397..3e19e78a032 100644 --- a/modules/backlogs/config/locales/crowdin/mn.yml +++ b/modules/backlogs/config/locales/crowdin/mn.yml @@ -31,17 +31,27 @@ mn: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Байршил" - story_points: "Гүйцэтгэлийн оноо" backlogs_work_package_type: "Backlog type" + position: "Байршил" + sprint: "Sprint" + story_points: "Гүйцэтгэлийн оноо" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ mn: must_block_at_least_one_work_package: "must contain the ID of at least one ticket." version_id: task_version_must_be_the_same_as_story_version: "must be the same as the parent story's version." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint cannot end before it starts." models: @@ -88,6 +110,9 @@ mn: task: "Даалгавар" task_color: "Даалгаврын өнгө" unassigned: "Unassigned" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -103,6 +128,35 @@ mn: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ mn: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Points burn up/down" backlogs_product_backlog: "Product backlog" backlogs_story: "Story" @@ -150,6 +220,8 @@ mn: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "You have not configured Backlogs yet. Please go to %{administration} > %{plugins}, then click on the %{configure} link for this plugin. Once you have set the fields, come back to this page to start using the tool." label_blocks_ids: "IDs of blocked work packages" @@ -160,7 +232,14 @@ mn: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprint Impediments" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Task board" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Select done statuses" diff --git a/modules/backlogs/config/locales/crowdin/ms.yml b/modules/backlogs/config/locales/crowdin/ms.yml index d17ec5b7404..21776a2def4 100644 --- a/modules/backlogs/config/locales/crowdin/ms.yml +++ b/modules/backlogs/config/locales/crowdin/ms.yml @@ -31,17 +31,27 @@ ms: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Kedudukan" - story_points: "Titik Cerita" backlogs_work_package_type: "Jenis tunggakan kerja" + position: "Kedudukan" + sprint: "Sprint" + story_points: "Titik Cerita" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,17 @@ ms: must_block_at_least_one_work_package: "perlu mengandungi ID untuk sekurang-kurangnya satu tiket." version_id: task_version_must_be_the_same_as_story_version: "perlu sama dengan versi cerita induk." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Pecutan tidak boleh berakhir lebih awal sebelum ia bermula." models: @@ -86,6 +107,9 @@ ms: task: "Tugasan" task_color: "Warna tugasan" unassigned: "Belum Ditetapkan" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -101,6 +125,34 @@ ms: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -117,18 +169,34 @@ ms: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Mata untuk burn up/down" backlogs_product_backlog: "Tunggakan produk" backlogs_story: "Cerita" @@ -148,6 +216,8 @@ ms: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Tunggakan" label_backlogs_unconfigured: "Anda masih belum mengkonfigurasi tunggakan. Sila pergi ke %{administration} > %{plugins}, kemudian klik pautan %{configure} untuk plugin ini. Setelah anda menetapkan ruangan, kembali ke halaman ini untuk mula menggunakan alat ini." label_blocks_ids: "ID pakej kerja yang disekat" @@ -158,7 +228,14 @@ ms: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Halangan Pecutan" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Papan tugasan" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Pilih status selesai" diff --git a/modules/backlogs/config/locales/crowdin/ne.yml b/modules/backlogs/config/locales/crowdin/ne.yml index da2c8ce48bd..3083dd8b8e7 100644 --- a/modules/backlogs/config/locales/crowdin/ne.yml +++ b/modules/backlogs/config/locales/crowdin/ne.yml @@ -27,21 +27,31 @@ ne: attributes: agile/sprint: duration: "Duration" - finish_date: "Finish date" + finish_date: "" goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "स्थान" - story_points: "Story Points" backlogs_work_package_type: "Backlog type" + position: "स्थान" + sprint: "Sprint" + story_points: "Story Points" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ ne: must_block_at_least_one_work_package: "must contain the ID of at least one ticket." version_id: task_version_must_be_the_same_as_story_version: "must be the same as the parent story's version." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint cannot end before it starts." models: @@ -88,6 +110,9 @@ ne: task: "Task" task_color: "Task color" unassigned: "Unassigned" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -103,6 +128,35 @@ ne: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ ne: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Points burn up/down" backlogs_product_backlog: "Product backlog" backlogs_story: "Story" @@ -150,6 +220,8 @@ ne: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "You have not configured Backlogs yet. Please go to %{administration} > %{plugins}, then click on the %{configure} link for this plugin. Once you have set the fields, come back to this page to start using the tool." label_blocks_ids: "IDs of blocked work packages" @@ -160,7 +232,14 @@ ne: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprint Impediments" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Task board" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Select done statuses" diff --git a/modules/backlogs/config/locales/crowdin/nl.yml b/modules/backlogs/config/locales/crowdin/nl.yml index 11907683026..005d0f96b84 100644 --- a/modules/backlogs/config/locales/crowdin/nl.yml +++ b/modules/backlogs/config/locales/crowdin/nl.yml @@ -31,17 +31,27 @@ nl: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Positie" - story_points: "Verhaal punten" backlogs_work_package_type: "Backlog type" + position: "Positie" + sprint: "Sprint" + story_points: "Verhaal punten" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ nl: must_block_at_least_one_work_package: "het moet de ID bevatten van ten minste één ticket." version_id: task_version_must_be_the_same_as_story_version: "moet hetzelfde zijn als de bovenliggende verhaalversie." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "De sprint kan niet eindigen voordat het start." models: @@ -88,6 +110,9 @@ nl: task: "Taak" task_color: "Taakkleur" unassigned: "Niet-toegewezen" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -103,6 +128,35 @@ nl: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ nl: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Punten gaan omhoog / omlaag" backlogs_product_backlog: "Product backlog" backlogs_story: "Verhaal" @@ -150,6 +220,8 @@ nl: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "Je hebt Backlogs nog niet geconfigureerd. Ga naar %{administration} >%{plugins}, en klik op de %{configure} voor deze plug-in. Kom hier terug nadat u de velden hebt geconfigureerd." label_blocks_ids: "ID's van geblokkeerde werkpakketten" @@ -160,7 +232,14 @@ nl: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprint Obstakels" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Taakbord" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Selecteer voltooide statussen" diff --git a/modules/backlogs/config/locales/crowdin/no.yml b/modules/backlogs/config/locales/crowdin/no.yml index 03a46a7a196..810c40833de 100644 --- a/modules/backlogs/config/locales/crowdin/no.yml +++ b/modules/backlogs/config/locales/crowdin/no.yml @@ -31,17 +31,27 @@ goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Plassering" - story_points: "Historiepoeng" backlogs_work_package_type: "Forsinkelser type" + position: "Plassering" + sprint: "Sprint" + story_points: "Historiepoeng" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ must_block_at_least_one_work_package: "må inneholde ID for minst en sak." version_id: task_version_must_be_the_same_as_story_version: "må være det samme som den overordnete historiens versjon." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprinten kan ikke avsluttes før den starter." models: @@ -88,6 +110,9 @@ task: "Oppgave" task_color: "Farge på oppgave" unassigned: "Ikke tildelt" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -103,6 +128,35 @@ zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Poeng brenner opp/ned" backlogs_product_backlog: "Produktforsinkelser" backlogs_story: "Historie" @@ -150,6 +220,8 @@ attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Forsinkelser" label_backlogs_unconfigured: "Du har ikke konfigurert Forsinkelser enda. Gå til %{administration} > %{plugins}og klikk deretter på %{configure} lenken for denne utvidelsen. Når du har angitt felter, går du tilbake til denne siden for å begynne å bruke verktøyet." label_blocks_ids: "ID'er for blokkerte arbeidspakker" @@ -160,7 +232,14 @@ label_sprint_edit: "Edit sprint" label_sprint_impediments: "Hindring i etappe" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Oppgavetavle" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Velg ferdige statuser" diff --git a/modules/backlogs/config/locales/crowdin/pl.yml b/modules/backlogs/config/locales/crowdin/pl.yml index cd0b8696e42..653c29b2f84 100644 --- a/modules/backlogs/config/locales/crowdin/pl.yml +++ b/modules/backlogs/config/locales/crowdin/pl.yml @@ -31,17 +31,27 @@ pl: goal: "Cel sprintu" name: "Nazwa sprintu" sharing: "Udostępnianie" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Czas trwania sprintu" work_package: - position: "Pozycja" - story_points: "Historia Punktów" backlogs_work_package_type: "Typ backlogu" + position: "Pozycja" + sprint: "Sprint" + story_points: "Historia Punktów" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "dozwolony jest tylko jeden aktywny sprint na projekt." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,20 @@ pl: must_block_at_least_one_work_package: "musi zawierać ID co najmniej dla jednego biletu." version_id: task_version_must_be_the_same_as_story_version: "musi być taka sama jak wersja story nadrzędnej." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + few: "There are %{count} work packages that were not completed in this sprint." + many: "There are %{count} work packages that were not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint nie może się skończyć przed swoim rozpoczęciem." models: @@ -92,6 +116,9 @@ pl: task: "Zadanie" task_color: "Kolor zadania" unassigned: "Nieprzypisane" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Moduł backlogów" button_update_backlogs: "Zaktualizuj moduł backlogów" @@ -107,6 +134,37 @@ pl: zero: "Brak historii w backlogu" one: "%{count} historia w backlogu" other: "Liczba historii w backlogu: %{count}" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + few: "Show %{count} more items" + many: "Show %{count} more items" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Zwiń/rozwiń %{name}" label_story_count: @@ -123,18 +181,34 @@ pl: burndown_chart: "Wykres spalania (burndown)" wiki: "Wiki" properties: "Właściwości" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Działania w ramach sprintu" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edytuj sprint" - new_story: "Nowa historia" - stories_tasks: "Historie/zadania" - task_board: "Panel zadań" - burndown_chart: "Wykres spalania (burndown)" + add_work_package: "Add work package" + task_board: "Task board" story_component: label_drag_story: "Przenieś %{name}" story_menu_component: label_actions: "Działania historii" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Punkty burn up/down" backlogs_product_backlog: "Backlog produktu" backlogs_story: "Story" @@ -154,6 +228,8 @@ pl: attributes: task_type: cannot_be_story_type: "nie może być również typem historii" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogi" label_backlogs_unconfigured: "Jeszcze nie skonfigurowałeś backlogów. Przejdź do %{administration} > %{plugins}, następnie kliknij link %{configure} dla otrzymania tego dodatku. Po ustawieniu pól, wróć na tę stronę, aby zacząć korzystanie z narzędzia." label_blocks_ids: "Identyfikatory zablokowanych pakietów prac" @@ -164,7 +240,14 @@ pl: label_sprint_edit: "Edytuj sprint" label_sprint_impediments: "Przeszkody sprintu" label_sprint_new: "Nowy sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Panel zadań" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Utwórz sprinty" permission_manage_sprint_items: "Zarządzaj elementami sprintu" permission_select_done_statuses: "Wybierz wykonane statusy" diff --git a/modules/backlogs/config/locales/crowdin/pt-BR.yml b/modules/backlogs/config/locales/crowdin/pt-BR.yml index 6178178d0eb..1671214cf34 100644 --- a/modules/backlogs/config/locales/crowdin/pt-BR.yml +++ b/modules/backlogs/config/locales/crowdin/pt-BR.yml @@ -31,17 +31,27 @@ pt-BR: goal: "Objetivo da sprint" name: "Nome da sprint" sharing: "Compartilhamento" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Duração da sprint" work_package: - position: "Posição" - story_points: "Pontos de história" backlogs_work_package_type: "Tipo de backlog" + position: "Posição" + sprint: "Sprint" + story_points: "Pontos de história" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "apenas uma sprint ativa é permitida por projeto." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ pt-BR: must_block_at_least_one_work_package: "deve conter o ID de pelo menos um tíquete." version_id: task_version_must_be_the_same_as_story_version: "deve ser igual à versão da história dos pais." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "A sprint não pode terminar antes de começar." models: @@ -88,6 +110,9 @@ pt-BR: task: "Tarefa" task_color: "Cor da tarefa" unassigned: "Não atribuída" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Módulo de backlogs" button_update_backlogs: "Atualizar módulo de backlogs" @@ -103,6 +128,35 @@ pt-BR: zero: "Nenhuma história no backlog" one: "%{count} história no backlog" other: "%{count} histórias no backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Recolher/Expandir %{name}" label_story_count: @@ -119,18 +173,34 @@ pt-BR: burndown_chart: "Gráfico de burndown" wiki: "Wiki" properties: "Propriedades" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Ações da sprint" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Editar sprint" - new_story: "Nova história" - stories_tasks: "Histórias/tarefas" - task_board: "Quadro de tarefas" - burndown_chart: "Gráfico de burndown" + add_work_package: "Add work package" + task_board: "Task board" story_component: label_drag_story: "Mover %{name}" story_menu_component: label_actions: "Ações da história" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Pontos burn up/down" backlogs_product_backlog: "Backlog do produto" backlogs_story: "História" @@ -150,6 +220,8 @@ pt-BR: attributes: task_type: cannot_be_story_type: "também não pode ser do tipo história" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "Você ainda não configurou o Backlog. Por favor, vá para %{administration} > %{plugins} e, em seguida, clique em %{configure} o link para este plugin. Uma vez que você definiu os campos, volte a esta página para começar a usar a ferramenta." label_blocks_ids: "IDs dos pacotes de trabalho bloqueados" @@ -160,7 +232,14 @@ pt-BR: label_sprint_edit: "Editar sprint" label_sprint_impediments: "Impedimentos da Sprint" label_sprint_new: "Nova sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Quadro de tarefas" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Criar sprints" permission_manage_sprint_items: "Gerenciar itens da sprint" permission_select_done_statuses: "Selecione situações concluídas" diff --git a/modules/backlogs/config/locales/crowdin/pt-PT.yml b/modules/backlogs/config/locales/crowdin/pt-PT.yml index 377207d9045..9ec19cf8621 100644 --- a/modules/backlogs/config/locales/crowdin/pt-PT.yml +++ b/modules/backlogs/config/locales/crowdin/pt-PT.yml @@ -31,17 +31,27 @@ pt-PT: goal: "Objetivo do sprint" name: "Nome do sprint" sharing: "Partilhar" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Duração do sprint" work_package: - position: "Posição" - story_points: "Pontos de histórico" backlogs_work_package_type: "Tipo de backlog" + position: "Posição" + sprint: "Sprint" + story_points: "Pontos de histórico" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "só é permitido um sprint ativo por projeto." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ pt-PT: must_block_at_least_one_work_package: "deve conter a identificação de pelo menos um bilhete." version_id: task_version_must_be_the_same_as_story_version: "tem ser o mesmo que a versão da história do pai." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint não pode terminar antes de começar." models: @@ -88,6 +110,9 @@ pt-PT: task: "Tarefa" task_color: "Cor de tarefa" unassigned: "Não atribuído" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Módulo de backlogs" button_update_backlogs: "Atualizar o módulo de backlogs" @@ -103,6 +128,35 @@ pt-PT: zero: "Não há histórias no backlog" one: "%{count} história no backlog" other: "%{count} histórias no backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Recolher/expandir %{name}" label_story_count: @@ -119,18 +173,34 @@ pt-PT: burndown_chart: "Gráfico de burndown" wiki: "Wiki" properties: "Propriedades" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Ações do sprint" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Editar sprint" - new_story: "Nova história" - stories_tasks: "Histórias/tarefas" - task_board: "Quadro de tarefas" - burndown_chart: "Gráfico de burndown" + add_work_package: "Add work package" + task_board: "Task board" story_component: label_drag_story: "Mover %{name}" story_menu_component: label_actions: "Ações de história" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Pontos queimam para cima/para baixo" backlogs_product_backlog: "Backlog do produto" backlogs_story: "História" @@ -150,6 +220,8 @@ pt-PT: attributes: task_type: cannot_be_story_type: "não pode ser também um tipo de história" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "Ainda não configurou os backlogs. Vá a %{administration} > %{plugins}, e depois clique no link %{configure} para este plugin. Após definir os campos, volte a esta página para começar a utilizar a ferramenta." label_blocks_ids: "Identificações de pacotes de trabalho bloqueados" @@ -160,7 +232,14 @@ pt-PT: label_sprint_edit: "Editar sprint" label_sprint_impediments: "Impedimentos de Sprint" label_sprint_new: "Novo sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Quadro de tarefas" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Criar sprints" permission_manage_sprint_items: "Gerir elementos de sprint" permission_select_done_statuses: "Selecione os estados concluídos" diff --git a/modules/backlogs/config/locales/crowdin/ro.yml b/modules/backlogs/config/locales/crowdin/ro.yml index c569e875c4b..3cefeb1cf63 100644 --- a/modules/backlogs/config/locales/crowdin/ro.yml +++ b/modules/backlogs/config/locales/crowdin/ro.yml @@ -31,17 +31,27 @@ ro: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Poziție" - story_points: "Puncte" backlogs_work_package_type: "Tip restanță" + position: "Poziție" + sprint: "Sprint" + story_points: "Puncte" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,19 @@ ro: must_block_at_least_one_work_package: "trebuie să conțină ID-ul a cel puțin un bilet." version_id: task_version_must_be_the_same_as_story_version: "trebuie să fie aceeași cu versiunea cerinței părinte." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + few: "There are %{count} work packages that were not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint nu se poate termina înainte de a începe." models: @@ -90,6 +113,9 @@ ro: task: "Sarcină" task_color: "Sarcină" unassigned: "Neasociate" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Modul Backlog-uri" button_update_backlogs: "Actualizează modul backlogs" @@ -105,6 +131,36 @@ ro: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + few: "Show %{count} more items" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -121,18 +177,34 @@ ro: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Arderea punctelor în sus/jos" backlogs_product_backlog: "Fișa produsului" backlogs_story: "Cerință" @@ -152,6 +224,8 @@ ro: attributes: task_type: cannot_be_story_type: "nu poate fi și un tip poveste" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Restanțe" label_backlogs_unconfigured: "Nu ai configurat încă Backlogs. Te rog să mergi la %{administration} > %{plugins}, apoi dă clic pe link-ul %{configure} pentru acest plugin. După ce ai configurat câmpurile, revino la această pagină pentru a începe să utilizezi instrumentul." label_blocks_ids: "ID-urile pachetelor de lucru blocate" @@ -162,7 +236,14 @@ ro: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Impedimentele Sprint" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Tablă de sarcini" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Selectează stările realizate" diff --git a/modules/backlogs/config/locales/crowdin/ru.yml b/modules/backlogs/config/locales/crowdin/ru.yml index d719dcc6ca2..0f3dd18779b 100644 --- a/modules/backlogs/config/locales/crowdin/ru.yml +++ b/modules/backlogs/config/locales/crowdin/ru.yml @@ -31,21 +31,31 @@ ru: goal: "Цель спринта" name: "Название спринта" sharing: "Совместное использование" + statuses: + in_planning: "В планировании" + active: "Активный" + completed: "Завершён" project: - sprint_sharing: "Sprint sharing" + sprint_sharing: "Совместное использование спринта" sprint: duration: "Продолжительность спринта" work_package: - position: "Позиция" - story_points: "Стори поинты" backlogs_work_package_type: "Тип невыполненной работы" + position: "Позиция" + sprint: "Спринт" + story_points: "Стори поинты" errors: + messages: + must_be_in_planning: "для начала работы необходимо выполнить планирование." + only_one_active_sprint_allowed: "для каждого проекта допускается только один активный спринт." + dates_required: "Для начала спринта необходимы даты начала и окончания." models: project: + receiving_sprints: "получает общие спринты. Собственные спринты создавать нельзя." attributes: sprint_sharing: - share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." - share_all_projects_already_taken_anonymous: "cannot be set because another project is already sharing with all projects." + share_all_projects_already_taken: "не может быть установлен, потому что проект \"%{name}\" уже совместно используется со всеми проектами." + share_all_projects_already_taken_anonymous: "не может быть установлен, потому что другой проект уже совместно используется со всеми проектами." work_package: attributes: blocks_ids: @@ -53,6 +63,20 @@ ru: must_block_at_least_one_work_package: "должен содержаться идентификатор по крайней мере одного билета." version_id: task_version_must_be_the_same_as_story_version: "должен совпадать с версией родительской истории." + sprint: + not_shared_with_project: "не передается проекту, в котором находится пакет работ." + not_eligible_for_moving: "не является активным спринтом в проекте, в котором проводится спринт, из которого перемещается пакет работ." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "Есть пакет работ %{count}, который не был завершен в этом спринте." + few: "There are %{count} work packages that were not completed in this sprint." + many: "There are %{count} work packages that were not completed in this sprint." + other: "Есть пакеты работ %{count}, которые не были завершены в этом спринте." + format: "%{message}" + status: + not_active: "не активен, поэтому не может быть закрыт." sprint: cannot_end_before_it_starts: "Спринт не может заканчиваться до того, как начнется." models: @@ -64,9 +88,9 @@ ru: column_width: "Ширина столбца" definition_of_done: "Определение термина \"Завершено\"" definition_of_done_caption: "Пакеты работ с такими статусами рассматриваются как завершенные в представлениях бэклога и отчетах." - done_status: "Done status" - sharing_description: "This project can either share its own sprints, receive shared sprints or handle sprints independently (no sharing)." - sharing: "Sharing" + done_status: "Статус Выполнено" + sharing_description: "Этот проект может либо делиться своими спринтами, либо получать общие спринты, либо работать со спринтами самостоятельно (без обмена)." + sharing: "Совместное использование" impediment: "Препятствие" label_versions_default_fold_state: "Показать свернутые версии" caption_versions_default_fold_state: "Версии не будут разворачиваться по умолчанию при просмотре бэклогов. Каждая версия должна быть развернута вручную." @@ -92,6 +116,9 @@ ru: task: "Задача" task_color: "Цвет задачи" unassigned: "Нераспределенные" + administration_blankslate: + title: "Настройки администрирования бэклога будут в будущем" + text: "В настоящее время мы переделываем модуль Backlogs. В ближайшем будущем здесь появятся административные настройки для спринтов и бэклогов. Настройки на уровне проекта остаются доступными." user_preference: header_backlogs: "Модуль бэклогов" button_update_backlogs: "Обновить модуль бэклогов" @@ -107,6 +134,37 @@ ru: zero: "Нет историй в бэклоге" one: "%{count} история в бэклоге" other: "%{count} историй в бэклоге" + inbox_component: + blankslate_title: "Папка \"Входящие\" пуста" + blankslate_description: "Все открытые пакеты работ в этом проекте автоматически появятся здесь." + label_drag_work_package: "Переместить %{name}" + show_more: + one: "Показать еще 1 элемент" + few: "Show %{count} more items" + many: "Show %{count} more items" + other: "Показать еще %{count} элементов" + inbox_item_component: + label_drag_work_package: "Переместить %{name}" + inbox_menu_component: + label_actions: "Действия пакета работ" + action_menu: + copy_url_to_clipboard: "Скопировать URL в буфер обмена" + copy_work_package_id: "Скопировать ID пакета работ" + move_menu: "Переместить" + label_move_to_sprint: "Переместить в спринт" + move_to_sprint_dialog_component: + title: "Переместить в спринт" + label_sprint: "Спринт" + sprint_planning: + blankslate: + title: "Пока нет спринтов" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Свернуть/Развернуть %{name}" label_story_count: @@ -123,18 +181,34 @@ ru: burndown_chart: "Сводная таблица" wiki: "Wiki" properties: "Свойства" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Действия в спринте" action_menu: + start_sprint: "Начать спринт" + finish_sprint: "Завершить спринт" + start_sprint_disabled_description: "Другой спринт уже активен." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Редактировать спринт" - new_story: "Новая история" - stories_tasks: "Истории/задачи" + add_work_package: "Добавить пакет работ" task_board: "Панель задач" - burndown_chart: "Сводная таблица" story_component: label_drag_story: "Переместить %{name}" story_menu_component: label_actions: "Действия истории" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Точки выгорания вверх/вниз" backlogs_product_backlog: "Требования к продукту, с приоритетами" backlogs_story: "История" @@ -154,6 +228,8 @@ ru: attributes: task_type: cannot_be_story_type: "не может также быть типом истории" + label_backlog: "Бэклог" + label_inbox: "Inbox" label_backlogs: "Бэклоги" label_backlogs_unconfigured: "Вы еще не настроили Невыполненные работы. Перейдите на страницу %{administration} > %{plugins}, а затем нажмите на ссылку %{configure} для получения этого дополнения. После того как вы настроите поля, возвратитесь на эту страницу, чтобы начать пользоваться инструментом." label_blocks_ids: "Идентификаторы заблокированных рабочих пакетов" @@ -164,7 +240,14 @@ ru: label_sprint_edit: "Редактировать спринт" label_sprint_impediments: "Препятствия спринта" label_sprint_new: "Новый спринт" + label_sprint_planning: "Планирование спринта" label_task_board: "Панель задач" + notice_successful_start: "Спринт запущен." + notice_successful_finish: "Спринт завершен." + notice_unsuccessful_start: "Спринт не может быть запущен." + notice_unsuccessful_start_with_reason: "Спринт не может быть запущен: %{reason}" + notice_unsuccessful_finish: "Спринт не может быть завершен." + notice_unsuccessful_finish_with_reason: "Спринт не может быть завершён: %{reason}" permission_create_sprints: "Создание спринтов" permission_manage_sprint_items: "Управление пунктами спринта" permission_select_done_statuses: "Выберите завершенные статусы" @@ -177,22 +260,22 @@ ru: backlog_sharing: options: no_sharing: - label: "Don't share" + label: "Не делать общий доступ" caption: "Спринты, созданные в этом проекте, будут доступны и видны только в этом проекте. Они также не будут видны подпроектам." receive_shared: - label: "Receive shared sprints" + label: "Получить общие спринты" caption: "Этот проект может использовать только спринты, совместно используемые другими проектами." warning: "Этот проект может использовать только общие спринты других проектов. Неиспользуемые спринты, созданные в этом проекте в прошлом, больше не будут видны." share_all_projects: label: "Все проекты" - caption: "Sprints created in this project will be available to all projects in this instance. If you select this option, it will no longer be available to other projects." - disabled_caption: "Option not available since project \"%{name}\" is currently sharing with all projects and only one project can do this." - disabled_caption_anonymous: "Option not available since another project is currently sharing with all projects and only one project can do this." + caption: "Спринты, созданные в этом проекте, будут доступны для всех проектов в этом экземпляре. Если вы выберете эту опцию, она больше не будет доступна для других проектов." + disabled_caption: "Опция недоступна, поскольку проект \"%{name}\" в настоящее время совместно используется со всеми проектами, и только один проект может сделать это." + disabled_caption_anonymous: "Опция недоступна, поскольку в настоящее время другой проект совместно используется со всеми проектами, и только один проект может это сделать." share_subprojects: label: "Подпроекты" - caption: "Sprints created in this project will be available to all subprojects of the current project." - info: "Sharing a sprint will share the name, status and the start and finish dates in all projects. These cannot be modified in projects that receive and use these sprints." - sprint_sharing: Share sprints + caption: "Спринты, созданные в этом проекте, будут доступны всем подпроектам текущего проекта." + info: "При совместном использовании спринта его название, статус и даты начала и окончания будут доступны всем проектам. Они не могут быть изменены в проектах, которые получают и используют эти спринты." + sprint_sharing: Поделиться спринтами rb_burndown_charts: show: blankslate_title: "Нет сводных данных" diff --git a/modules/backlogs/config/locales/crowdin/rw.yml b/modules/backlogs/config/locales/crowdin/rw.yml index 377e44fc915..99f852d3112 100644 --- a/modules/backlogs/config/locales/crowdin/rw.yml +++ b/modules/backlogs/config/locales/crowdin/rw.yml @@ -31,17 +31,27 @@ rw: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Position" - story_points: "Story Points" backlogs_work_package_type: "Backlog type" + position: "Position" + sprint: "Sprint" + story_points: "Story Points" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ rw: must_block_at_least_one_work_package: "must contain the ID of at least one ticket." version_id: task_version_must_be_the_same_as_story_version: "must be the same as the parent story's version." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint cannot end before it starts." models: @@ -88,6 +110,9 @@ rw: task: "Task" task_color: "Task color" unassigned: "Unassigned" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -103,6 +128,35 @@ rw: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ rw: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Points burn up/down" backlogs_product_backlog: "Product backlog" backlogs_story: "Story" @@ -150,6 +220,8 @@ rw: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "You have not configured Backlogs yet. Please go to %{administration} > %{plugins}, then click on the %{configure} link for this plugin. Once you have set the fields, come back to this page to start using the tool." label_blocks_ids: "IDs of blocked work packages" @@ -160,7 +232,14 @@ rw: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprint Impediments" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Task board" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Select done statuses" diff --git a/modules/backlogs/config/locales/crowdin/si.yml b/modules/backlogs/config/locales/crowdin/si.yml index cef2feee69e..5de117d2f2c 100644 --- a/modules/backlogs/config/locales/crowdin/si.yml +++ b/modules/backlogs/config/locales/crowdin/si.yml @@ -31,17 +31,27 @@ si: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "තත්ත්වය" - story_points: "කතන්දර කරුණු" backlogs_work_package_type: "බැක්ලොග් වර්ගය" + position: "තත්ත්වය" + sprint: "Sprint" + story_points: "කතන්දර කරුණු" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ si: must_block_at_least_one_work_package: "අවම වශයෙන් එක් ටිකට් පතක හැඳුනුම්පත අඩංගු විය යුතුය." version_id: task_version_must_be_the_same_as_story_version: "මව් කතාවේ අනුවාදයට සමාන විය යුතුය." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "ස්ප්රින්ට් ආරම්භ වීමට පෙර අවසන් කළ නොහැක." models: @@ -88,6 +110,9 @@ si: task: "කාර්යය" task_color: "කාර්ය වර්ණ" unassigned: "නොපවරා ඇත" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -103,6 +128,35 @@ si: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ si: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "ලකුණු ඉහළ/පහළ පිළිස්සීම" backlogs_product_backlog: "නිෂ්පාදන බැක්ලොග්" backlogs_story: "කතාව" @@ -150,6 +220,8 @@ si: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "බැක්ලොග්ස්" label_backlogs_unconfigured: "ඔබ තවමත් Backlogs වින්යාස කර නැත. කරුණාකර යන්න %{administration} > %{plugins}, ඉන්පසු මෙම ප්ලගිනය සඳහා %{configure} සබැඳිය ක්ලික් කරන්න. ඔබ ක්ෂේත්ර සකස් කළ පසු, මෙවලම භාවිතා කිරීම ආරම්භ කිරීමට මෙම පිටුවට නැවත එන්න." label_blocks_ids: "අවහිර කරන ලද වැඩ පැකේජ වල IDS" @@ -160,7 +232,14 @@ si: label_sprint_edit: "Edit sprint" label_sprint_impediments: "ස්ප්රින්ට් බාධාවන්" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "කාර්ය මණ්ඩලය" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Select done statuses" diff --git a/modules/backlogs/config/locales/crowdin/sk.yml b/modules/backlogs/config/locales/crowdin/sk.yml index 867697ba38d..8a15425790e 100644 --- a/modules/backlogs/config/locales/crowdin/sk.yml +++ b/modules/backlogs/config/locales/crowdin/sk.yml @@ -31,17 +31,27 @@ sk: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Trvanie šprintu" work_package: - position: "Pozícia" - story_points: "História bodov" backlogs_work_package_type: "Typ oneskorenia" + position: "Pozícia" + sprint: "Sprint" + story_points: "História bodov" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,20 @@ sk: must_block_at_least_one_work_package: "musí obsahovať ID najmenej jedného pracovného balíčku." version_id: task_version_must_be_the_same_as_story_version: "musí byť rovnaká ako verzia nadradeného článku." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + few: "There are %{count} work packages that were not completed in this sprint." + many: "There are %{count} work packages that were not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Šprint nemôže byť ukončený ešte pred jeho spustením." models: @@ -92,6 +116,9 @@ sk: task: "Úloha" task_color: "Farba úlohy" unassigned: "Nepriradené" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Modul nevyriešených úloh" button_update_backlogs: "Aktualizácia modulu nevybavených úloh" @@ -107,6 +134,37 @@ sk: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + few: "Show %{count} more items" + many: "Show %{count} more items" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -123,18 +181,34 @@ sk: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Burnup/-down body" backlogs_product_backlog: "Nevyriešený produkt" backlogs_story: "Príbeh" @@ -154,6 +228,8 @@ sk: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "You have not configured Backlogs yet. Please go to %{administration} > %{plugins}, then click on the %{configure} link for this plugin. Once you have set the fields, come back to this page to start using the tool." label_blocks_ids: "Identifikátory blokovaných pracovných balíkov" @@ -164,7 +240,14 @@ sk: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprint Impediments" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Task board" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Výber stavov hotovo" diff --git a/modules/backlogs/config/locales/crowdin/sl.yml b/modules/backlogs/config/locales/crowdin/sl.yml index 5fafed62682..41b9c469753 100644 --- a/modules/backlogs/config/locales/crowdin/sl.yml +++ b/modules/backlogs/config/locales/crowdin/sl.yml @@ -31,17 +31,27 @@ sl: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Položaj" - story_points: "Točke v zgodbi" backlogs_work_package_type: "Tip opravila na čakanju" + position: "Položaj" + sprint: "Sprint" + story_points: "Točke v zgodbi" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,20 @@ sl: must_block_at_least_one_work_package: "vsebovati mora ID vsaj enega zahtevka." version_id: task_version_must_be_the_same_as_story_version: "mora biti enako različici nadrejene zgodbe." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + two: "There are %{count} work packages that were not completed in this sprint." + few: "There are %{count} work packages that were not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Tek se ne mora končati preden se začne" models: @@ -92,6 +116,9 @@ sl: task: "Opravilo" task_color: "Barva naloge" unassigned: "Nedodeljeno" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -107,6 +134,37 @@ sl: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + two: "Show %{count} more items" + few: "Show %{count} more items" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -123,18 +181,34 @@ sl: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Točke gorijo gor/dol" backlogs_product_backlog: "Zaostanki produkta" backlogs_story: "Zgodba" @@ -154,6 +228,8 @@ sl: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Zaostanki" label_backlogs_unconfigured: "Zaostankov še niste konfigurirali. Pojdite na %{administration} > %{plugins}, nato kliknite povezavo %{configure} za ta vtičnik. Ko nastavite polja, se vrnite na to stran, da začnete uporabljati orodje." label_blocks_ids: "ID blokiranih delovnih paketov" @@ -164,7 +240,14 @@ sl: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Motnje sprinta" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Tabla opravil" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Označi statuse narejeno" diff --git a/modules/backlogs/config/locales/crowdin/sr.yml b/modules/backlogs/config/locales/crowdin/sr.yml index f849101982e..3928e27d8f7 100644 --- a/modules/backlogs/config/locales/crowdin/sr.yml +++ b/modules/backlogs/config/locales/crowdin/sr.yml @@ -31,17 +31,27 @@ sr: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Pozicija" - story_points: "Poeni Priče" backlogs_work_package_type: "Tip backlog-a" + position: "Pozicija" + sprint: "Sprint" + story_points: "Poeni Priče" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,19 @@ sr: must_block_at_least_one_work_package: "mora sadržati ID bar jednog tiketa." version_id: task_version_must_be_the_same_as_story_version: "mora biti ista kao verzija priče roditelja." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + few: "There are %{count} work packages that were not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint se ne može završiti pre nego što počne." models: @@ -90,6 +113,9 @@ sr: task: "Zadatak" task_color: "Boja zadatka" unassigned: "Nedodeljen" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -105,6 +131,36 @@ sr: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + few: "Show %{count} more items" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -121,18 +177,34 @@ sr: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "burn up/down poeni" backlogs_product_backlog: "Backlog proizvoda" backlogs_story: "Priča" @@ -152,6 +224,8 @@ sr: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "You have not configured Backlogs yet. Please go to %{administration} > %{plugins}, then click on the %{configure} link for this plugin. Once you have set the fields, come back to this page to start using the tool." label_blocks_ids: "IDs of blocked work packages" @@ -162,7 +236,14 @@ sr: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprint Impediments" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Task board" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Select done statuses" diff --git a/modules/backlogs/config/locales/crowdin/sv.yml b/modules/backlogs/config/locales/crowdin/sv.yml index fb3fc262b39..1e89da73419 100644 --- a/modules/backlogs/config/locales/crowdin/sv.yml +++ b/modules/backlogs/config/locales/crowdin/sv.yml @@ -31,17 +31,27 @@ sv: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Position" - story_points: "Berättelsepoäng" backlogs_work_package_type: "Typ av backlogg" + position: "Position" + sprint: "Sprint" + story_points: "Berättelsepoäng" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ sv: must_block_at_least_one_work_package: "måste innehålla ID för minst ett arbetspaket." version_id: task_version_must_be_the_same_as_story_version: "måste vara samma som föräldraberättelsens version." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "En sprint kan inte avslutas innan den startar." models: @@ -88,6 +110,9 @@ sv: task: "Aktivitet" task_color: "Aktivitetsfärg" unassigned: "Ej tilldelad" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogmodul" button_update_backlogs: "Uppdatera backlogmodul" @@ -103,6 +128,35 @@ sv: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ sv: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Burn up/-down poäng" backlogs_product_backlog: "Produktbacklog" backlogs_story: "Berättelse" @@ -150,6 +220,8 @@ sv: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backloggar" label_backlogs_unconfigured: "Du har inte konfigurerat backloggar ännu. Gå till %{administration} > %{plugins}, klicka på %{configure} länken för denna plugin. När du har ställt in fälten, kan du komma tillbaka till denna sida för att börja använda verktyget." label_blocks_ids: "ID:n för blockerade arbetspaket" @@ -160,7 +232,14 @@ sv: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprint hinder" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Aktivitetstavla" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Välj klar status" diff --git a/modules/backlogs/config/locales/crowdin/th.yml b/modules/backlogs/config/locales/crowdin/th.yml index 089c7feccb0..0ea056a8bb5 100644 --- a/modules/backlogs/config/locales/crowdin/th.yml +++ b/modules/backlogs/config/locales/crowdin/th.yml @@ -31,17 +31,27 @@ th: goal: "เป้าหมายสปริ๊นต์" name: "ชื่อสปรินต์" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "ระยะเวลาการสปรินต์" work_package: - position: "ตำแหน่ง" - story_points: "" backlogs_work_package_type: "ประเภทงานค้าง" + position: "ตำแหน่ง" + sprint: "Sprint" + story_points: "" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,17 @@ th: must_block_at_least_one_work_package: "ต้องระบุรหัสรายการงานอย่างน้อยหนึ่งรายการ" version_id: task_version_must_be_the_same_as_story_version: "เวอร์ชันต้องตรงกับสตอรี่หลัก" + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "กรุณาระบุวันสิ้นสุดให้หลังจากวันเริ่มต้นสปรินต์" models: @@ -86,6 +107,9 @@ th: task: "งาน" task_color: "สีของงาน" unassigned: "ไม่ได้กำหนด" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "โมดูลรายการงานคงค้าง" button_update_backlogs: "อัปเดตโมดูลรายการงานคงค้าง" @@ -101,6 +125,34 @@ th: zero: "ไม่มีสตอรี่ในรายการงานคงค้าง" one: "%{count} สตอรี่ในรายการงานคงค้าง" other: "%{count} สตอรี่ในรายการงานคงค้าง" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -117,18 +169,34 @@ th: burndown_chart: "กราฟติดตามงาน (Burndown)" wiki: "วิกิ" properties: "คุณสมบัติ" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "ย้าย %{name}" story_menu_component: label_actions: "การจัดการสตอรี่" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "กราฟแสดงคะแนน (Burn up/down)" backlogs_product_backlog: "รายการงานคงค้างผลิตภัณฑ์" backlogs_story: "สตอรี่" @@ -148,6 +216,8 @@ th: attributes: task_type: cannot_be_story_type: "ไม่สามารถเป็นประเภทสตอรี่ได้เช่นกัน" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "รายการงานคงค้าง" label_backlogs_unconfigured: "คุณยังไม่ได้ตั้งค่ารายการงานคงค้าง กรุณาไปที่ %{administration} > %{plugins} จากนั้นคลิกที่ลิงก์ %{configure} ของปลั๊กอินนี้ เมื่อคุณตั้งค่าฟิลด์ต่าง ๆ เรียบร้อยแล้ว ให้กลับมาที่หน้านี้เพื่อเริ่มใช้งานเครื่องมือ" label_blocks_ids: "Id ของแพคเกจการทำงานที่ถูกบล็อก" @@ -158,7 +228,14 @@ th: label_sprint_edit: "Edit sprint" label_sprint_impediments: "อุปสรรคของสปรินท์" label_sprint_new: "สปรินท์ใหม่" + label_sprint_planning: "Sprint planning" label_task_board: "กระดานงาน" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "สร้างสปรินท์" permission_manage_sprint_items: "จัดการรายการในสปรินท์" permission_select_done_statuses: "Select done statuses" diff --git a/modules/backlogs/config/locales/crowdin/tr.yml b/modules/backlogs/config/locales/crowdin/tr.yml index 6e2ee977b0d..2b9899e5c80 100644 --- a/modules/backlogs/config/locales/crowdin/tr.yml +++ b/modules/backlogs/config/locales/crowdin/tr.yml @@ -31,17 +31,27 @@ tr: goal: "Sprint goal" name: "Sprint name" sharing: "Paylaşım" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint süresi" work_package: - position: "Konum" - story_points: "Hikaye Puanları" backlogs_work_package_type: "Bekleme listesi türü" + position: "Konum" + sprint: "Sprint" + story_points: "Hikaye Puanları" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "proje başına yalnızca bir aktif sprint'e izin verilir." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ tr: must_block_at_least_one_work_package: "en az bir biletin kimliğini içermelidir." version_id: task_version_must_be_the_same_as_story_version: "ana hikaye sürümüyle aynı olmalıdır." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint başlamadan önce bitemez." models: @@ -88,6 +110,9 @@ tr: task: "Görev" task_color: "Görev rengi" unassigned: "Atanmamış" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Birikmiş İşler Modülü" button_update_backlogs: "Birikmiş işler modülünü güncelle" @@ -103,6 +128,35 @@ tr: zero: "Kuyrukta hikaye yok" one: "%{count} kuyruktaki hikaye" other: "%{count} kuyruktaki hikayeler" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ tr: burndown_chart: "Burndown grafiği" wiki: "Wiki" properties: "Özellikler" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Taşı %{name}" story_menu_component: label_actions: "Hikaye eylemleri" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Puanların azalması / artması" backlogs_product_backlog: "Ürün iş listesi" backlogs_story: "Hikaye" @@ -150,6 +220,8 @@ tr: attributes: task_type: cannot_be_story_type: "aynı zamanda bir hikaye türü olamaz" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "İş listeleri" label_backlogs_unconfigured: "Backlog'ları henüz yapılandırmadınız. Lütfen% %{administration}> %{plugins} adresine gidin, ardından bu eklenti için %{configure} bağlantısını tıklayın. Alanları belirledikten sonra, aracı kullanmaya başlamak için bu sayfaya geri dönün." label_blocks_ids: "Bloke iş paketleri kimlikleri" @@ -160,7 +232,14 @@ tr: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprint Engelleri" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Görev panosu" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Tamamlanan durumları seçiniz" diff --git a/modules/backlogs/config/locales/crowdin/uk.yml b/modules/backlogs/config/locales/crowdin/uk.yml index 5cf85e3fc10..3d1c9b20828 100644 --- a/modules/backlogs/config/locales/crowdin/uk.yml +++ b/modules/backlogs/config/locales/crowdin/uk.yml @@ -31,17 +31,27 @@ uk: goal: "Ціль спринту" name: "Ім’я спринту" sharing: "Надання доступу" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Тривалість спринту" work_package: - position: "Позиція" - story_points: "Сторі-поінти" backlogs_work_package_type: "Тип Backlog-у" + position: "Позиція" + sprint: "Sprint" + story_points: "Сторі-поінти" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "дозволяється лише один активний спринт для кожного проєкту." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,20 @@ uk: must_block_at_least_one_work_package: "повинен містити ідентифікатор принаймні одного ticket-а." version_id: task_version_must_be_the_same_as_story_version: "має збігатись із версією батьківської історії." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + few: "There are %{count} work packages that were not completed in this sprint." + many: "There are %{count} work packages that were not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Спринт не може закінчитися, перш ніж він почне працювати." models: @@ -92,6 +116,9 @@ uk: task: "Завдання" task_color: "Колір завдання" unassigned: "Не призначено" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Модуль невиконаних завдань" button_update_backlogs: "Оновити модуль невиконаних завдань" @@ -107,6 +134,37 @@ uk: zero: "У беклозі немає історій" one: "У беклозі %{count} історія" other: "У беклозі стільки історій: %{count}" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + few: "Show %{count} more items" + many: "Show %{count} more items" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Згорнути/розгорнути %{name}" label_story_count: @@ -123,18 +181,34 @@ uk: burndown_chart: "Діаграма згорання завдань" wiki: "Wiki" properties: "Властивості" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Дії спринту" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Редагувати спринт" - new_story: "Нова історія" - stories_tasks: "Історії/завдання" - task_board: "Дошка завдань" - burndown_chart: "Діаграма згорання завдань" + add_work_package: "Add work package" + task_board: "Task board" story_component: label_drag_story: "Перемістити історію «%{name}»" story_menu_component: label_actions: "Дії історії" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Бали спалюються вгору/вниз" backlogs_product_backlog: "Backlog продукту" backlogs_story: "Історія" @@ -154,6 +228,8 @@ uk: attributes: task_type: cannot_be_story_type: "не може також бути типом історії" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "Ви ще не настроїли Backlogs. Перейдіть на %{administration}>%{plugins}, потім натисніть посилання %{configure} для цього плагіна. Після того, як ви встановите поля, поверніться на цю сторінку, щоб розпочати використання інструмента." label_blocks_ids: "Ідентифікатори заблокованих робочих пакетів" @@ -164,7 +240,14 @@ uk: label_sprint_edit: "Редагувати спринт" label_sprint_impediments: "Перешкоди спринту" label_sprint_new: "Новий спринт" + label_sprint_planning: "Sprint planning" label_task_board: "Дошка завдань" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Створення спринтів" permission_manage_sprint_items: "Керування елементами спринтів" permission_select_done_statuses: "Виберіть завершені статуси" diff --git a/modules/backlogs/config/locales/crowdin/uz.yml b/modules/backlogs/config/locales/crowdin/uz.yml index 4b5d038b3f7..5f62d883aab 100644 --- a/modules/backlogs/config/locales/crowdin/uz.yml +++ b/modules/backlogs/config/locales/crowdin/uz.yml @@ -31,17 +31,27 @@ uz: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Position" - story_points: "Story Points" backlogs_work_package_type: "Backlog type" + position: "Position" + sprint: "Sprint" + story_points: "Story Points" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,18 @@ uz: must_block_at_least_one_work_package: "must contain the ID of at least one ticket." version_id: task_version_must_be_the_same_as_story_version: "must be the same as the parent story's version." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + one: "There is %{count} work package that was not completed in this sprint." + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint cannot end before it starts." models: @@ -88,6 +110,9 @@ uz: task: "Task" task_color: "Task color" unassigned: "Unassigned" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Backlogs module" button_update_backlogs: "Update backlogs module" @@ -103,6 +128,35 @@ uz: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + one: "Show 1 more item" + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -119,18 +173,34 @@ uz: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Points burn up/down" backlogs_product_backlog: "Product backlog" backlogs_story: "Story" @@ -150,6 +220,8 @@ uz: attributes: task_type: cannot_be_story_type: "can not also be a story type" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "Backlogs" label_backlogs_unconfigured: "You have not configured Backlogs yet. Please go to %{administration} > %{plugins}, then click on the %{configure} link for this plugin. Once you have set the fields, come back to this page to start using the tool." label_blocks_ids: "IDs of blocked work packages" @@ -160,7 +232,14 @@ uz: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Sprint Impediments" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Task board" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Select done statuses" diff --git a/modules/backlogs/config/locales/crowdin/vi.yml b/modules/backlogs/config/locales/crowdin/vi.yml index 681c24b2418..4592bedfbd1 100644 --- a/modules/backlogs/config/locales/crowdin/vi.yml +++ b/modules/backlogs/config/locales/crowdin/vi.yml @@ -31,17 +31,27 @@ vi: goal: "Sprint goal" name: "Sprint name" sharing: "Sharing" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "Sprint duration" work_package: - position: "Vị trí" - story_points: "Điểm cốt truyện" backlogs_work_package_type: "Loại Backlog" + position: "Vị trí" + sprint: "Sprint" + story_points: "Điểm cốt truyện" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "only one active sprint is allowed per project." + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,17 @@ vi: must_block_at_least_one_work_package: "bắt buộc phải chứa ID của ít nhất một việc" version_id: task_version_must_be_the_same_as_story_version: "phải giống với phiên bản của bảng cha." + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "Sprint không thể kết thúc trước khi nó bắt đầu." models: @@ -86,6 +107,9 @@ vi: task: "Nhiệm vụ" task_color: "Màu nhiệm vụ" unassigned: "Chưa được chỉ định" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "Mô-đun tồn đọng" button_update_backlogs: "Cập nhật mô-đun tồn đọng" @@ -101,6 +125,34 @@ vi: zero: "No stories in backlog" one: "%{count} story in backlog" other: "%{count} stories in backlog" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -117,18 +169,34 @@ vi: burndown_chart: "Burndown chart" wiki: "Wiki" properties: "Properties" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "Sprint actions" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "Move %{name}" story_menu_component: label_actions: "Story actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "Điểm tăng/giảm" backlogs_product_backlog: "Product backlog" backlogs_story: "Cốt truyện" @@ -148,6 +216,8 @@ vi: attributes: task_type: cannot_be_story_type: "cũng không thể là một loại cốt truyện" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "tồn đọng" label_backlogs_unconfigured: "Bạn chưa cấu hình Bảng nhiệm vụ tồn đọng. Vui lòng vào %{administration} > %{plugins}, sau đó nhấp vào liên kết %{configure} cho gắn thêm này. Khi bạn đã thiết lập các trường, quay lại trang này để bắt đầu sử dụng công cụ." label_blocks_ids: "ID của các work package bị chặn" @@ -158,7 +228,14 @@ vi: label_sprint_edit: "Edit sprint" label_sprint_impediments: "Trở ngại nước rút" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "Bảng nhiệm vụ" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "Chọn trạng thái hoàn thành" diff --git a/modules/backlogs/config/locales/crowdin/zh-CN.yml b/modules/backlogs/config/locales/crowdin/zh-CN.yml index ae92da0c00c..cbad51620e7 100644 --- a/modules/backlogs/config/locales/crowdin/zh-CN.yml +++ b/modules/backlogs/config/locales/crowdin/zh-CN.yml @@ -31,17 +31,27 @@ zh-CN: goal: "冲刺目标" name: "冲刺名称" sharing: "共享" + statuses: + in_planning: "In planning" + active: "Active" + completed: "Completed" project: sprint_sharing: "Sprint sharing" sprint: duration: "冲刺持续时间" work_package: - position: "位置" - story_points: "故事点" backlogs_work_package_type: "待办清单类型" + position: "位置" + sprint: "Sprint" + story_points: "故事点" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "每个项目只允许有一个有效冲刺。" + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." @@ -53,6 +63,17 @@ zh-CN: must_block_at_least_one_work_package: "必须包含至少一个票证的 ID。" version_id: task_version_must_be_the_same_as_story_version: "必须与父级故事的版本相同。" + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "比赛不可以在开始前结束。" models: @@ -86,6 +107,9 @@ zh-CN: task: "任务" task_color: "任务颜色" unassigned: "未指定" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "积压工作模块" button_update_backlogs: "更新积压工作模块" @@ -101,6 +125,34 @@ zh-CN: zero: "积压工作中没有故事" one: "积压工作中有 %{count} 个故事" other: "积压工作中有 %{count} 个故事" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "折叠/展开 %{name}" label_story_count: @@ -117,18 +169,34 @@ zh-CN: burndown_chart: "燃尽图" wiki: "维基" properties: "属性" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: label_actions: "冲刺操作" action_menu: + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." edit_sprint: "编辑冲刺" - new_story: "新建故事" - stories_tasks: "故事/任务" - task_board: "任务面板" - burndown_chart: "燃尽图" + add_work_package: "Add work package" + task_board: "Task board" story_component: label_drag_story: "移动 %{name}" story_menu_component: label_actions: "故事操作" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "点数燃尽曲线" backlogs_product_backlog: "产品待办清单" backlogs_story: "故事" @@ -148,6 +216,8 @@ zh-CN: attributes: task_type: cannot_be_story_type: "不能同时为故事类型" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "待办清单" label_backlogs_unconfigured: "您尚未配置待办清单。请转到“%{administration} > %{plugins}”,然后单击此插件的 %{configure} 链接。设置字段后,返回到此页面开始使用工具。" label_blocks_ids: "被阻止的工作包 ID" @@ -158,7 +228,14 @@ zh-CN: label_sprint_edit: "编辑冲刺" label_sprint_impediments: "冲刺 (sprint) 障碍" label_sprint_new: "新冲刺" + label_sprint_planning: "Sprint planning" label_task_board: "任务板" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "创建冲刺" permission_manage_sprint_items: "管理冲刺条目" permission_select_done_statuses: "选择完成状态" diff --git a/modules/backlogs/config/locales/crowdin/zh-TW.yml b/modules/backlogs/config/locales/crowdin/zh-TW.yml index 483f6689f6b..aa4842c326a 100644 --- a/modules/backlogs/config/locales/crowdin/zh-TW.yml +++ b/modules/backlogs/config/locales/crowdin/zh-TW.yml @@ -26,25 +26,35 @@ zh-TW: activerecord: attributes: agile/sprint: - duration: "Duration" - finish_date: "Finish date" - goal: "Sprint goal" - name: "Sprint name" + duration: "時長" + finish_date: "完成日期" + goal: "衝刺目標" + name: "Sprint 名稱" sharing: "分享" + statuses: + in_planning: "規劃中" + active: "啟用" + completed: "已完成" project: - sprint_sharing: "Sprint sharing" + sprint_sharing: "Sprint 共用" sprint: duration: "衝刺時間" work_package: - position: "位置" - story_points: "需求重要性" backlogs_work_package_type: "待辦事項類型" + position: "位置" + sprint: "衝刺" + story_points: "需求重要性" errors: + messages: + must_be_in_planning: "must be in planning to start." + only_one_active_sprint_allowed: "每個專案只允許一個活動衝刺。" + dates_required: "Start and finish dates are required in order to start the sprint." models: project: + receiving_sprints: "is receiving shared sprints. Own sprints cannot be created." attributes: sprint_sharing: - share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects." + share_all_projects_already_taken: "無法設定,因為專案 \"%{name}\" 已經與所有專案共用。" share_all_projects_already_taken_anonymous: "cannot be set because another project is already sharing with all projects." work_package: attributes: @@ -53,10 +63,21 @@ zh-TW: must_block_at_least_one_work_package: "必須包含至少一個項目的 ID" version_id: task_version_must_be_the_same_as_story_version: "必須與上層「使用者需求」(User Story)的版本相同。" + sprint: + not_shared_with_project: "is not shared with the project the work package is in." + not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of." + agile/sprint: + attributes: + base: + unfinished_work_packages: + other: "There are %{count} work packages that were not completed in this sprint." + format: "%{message}" + status: + not_active: "is not active so it cannot be closed." sprint: cannot_end_before_it_starts: "進度不可以在開始前結束" models: - sprint: "Sprint" + sprint: "衝刺" attributes: task_type: "任務類型" backlogs: @@ -64,9 +85,9 @@ zh-TW: column_width: "欄寬" definition_of_done: "定義" definition_of_done_caption: "Work packages with these statuses are treated as completed in backlog views and reporting." - done_status: "Done status" + done_status: "完成狀態" sharing_description: "This project can either share its own sprints, receive shared sprints or handle sprints independently (no sharing)." - sharing: "Sharing" + sharing: "共享" impediment: "阻礙" label_versions_default_fold_state: "顯示精簡版本" caption_versions_default_fold_state: "檢視待辦清單時,版本預設不會展開,需手動逐一展開。" @@ -86,6 +107,9 @@ zh-TW: task: "任務" task_color: "任務顏色" unassigned: "尚未指派" + administration_blankslate: + title: "Backlog admin settings are evolving" + text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available." user_preference: header_backlogs: "待辦清單模組" button_update_backlogs: "更新待辦清單模組" @@ -101,6 +125,34 @@ zh-TW: zero: "目前沒有待辦故事" one: "待辦清單中有 %{count} 個故事" other: "待辦清單中有 %{count} 個故事" + inbox_component: + blankslate_title: "Backlog inbox is empty" + blankslate_description: "All open work packages in this project will automatically appear here." + label_drag_work_package: "Move %{name}" + show_more: + other: "Show %{count} more items" + inbox_item_component: + label_drag_work_package: "Move %{name}" + inbox_menu_component: + label_actions: "Work package actions" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" + label_move_to_sprint: "Move to sprint" + move_to_sprint_dialog_component: + title: "Move to sprint" + label_sprint: "Sprint" + sprint_planning: + blankslate: + title: "No sprints present yet" + description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project." + create_sprint_description_text: "To start planning your sprint, create one here." + share_sprint_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project." + no_actions_description_text: "No sprints are available for this project yet." + receive_shared_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}." + receive_shared_no_actions_description_text: "This project receives shared sprints from a different project, but none are available right now." + settings_link_text: "project settings" sprint_header_component: label_toggle_backlog: "Collapse/Expand %{name}" label_story_count: @@ -117,18 +169,34 @@ zh-TW: burndown_chart: "燃盡圖" wiki: "維基" properties: "屬性" + finish_sprint_dialog_component: + title: "There are work in progress items" + body: "%{message} What would you like to do with these?" + legend: "Action for unfinished work packages" + actions: + move_to_top_of_backlog: "Move them to the top of the backlog" + move_to_bottom_of_backlog: "Move them to the bottom of the backlog" + move_to_sprint: "Move them to another sprint" + select_sprint_label: "Select sprint" + button_close_sprint: "Close sprint" sprint_menu_component: - label_actions: "Sprint actions" + label_actions: "衝刺行動" action_menu: - edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" + start_sprint: "Start sprint" + finish_sprint: "Finish sprint" + start_sprint_disabled_description: "Another sprint is already active." + start_sprint_missing_dates_description: "Start and finish dates are required in order to start the sprint." + edit_sprint: "編輯衝刺" + add_work_package: "Add work package" task_board: "Task board" - burndown_chart: "Burndown chart" story_component: label_drag_story: "移動 %{name}" story_menu_component: label_actions: "故事相關操作" + action_menu: + copy_url_to_clipboard: "Copy URL to clipboard" + copy_work_package_id: "Copy work package ID" + move_menu: "Move" backlogs_points_burn_direction: "重要性 增加/減少" backlogs_product_backlog: "產品待辦事項" backlogs_story: "使用者需求" @@ -148,6 +216,8 @@ zh-TW: attributes: task_type: cannot_be_story_type: "不能同時是故事類型" + label_backlog: "Backlog" + label_inbox: "Inbox" label_backlogs: "待辦事項" label_backlogs_unconfigured: "您尚未設定待辦事項。請前往 '%{administration} -> %{plugins}' 然後在 %{configure} 連結上按一下。當你設定欄位後,再返回這個頁面使用這個工具。" label_blocks_ids: "被禁止的工作套件 IDs" @@ -158,7 +228,14 @@ zh-TW: label_sprint_edit: "Edit sprint" label_sprint_impediments: "進度阻礙" label_sprint_new: "New sprint" + label_sprint_planning: "Sprint planning" label_task_board: "任務看板" + notice_successful_start: "The sprint was started." + notice_successful_finish: "The sprint was completed." + notice_unsuccessful_start: "The sprint could not be started." + notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}" + notice_unsuccessful_finish: "The sprint could not be completed." + notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}" permission_create_sprints: "Create sprints" permission_manage_sprint_items: "Manage sprint items" permission_select_done_statuses: "選擇完成狀態" diff --git a/modules/budgets/config/locales/crowdin/cs.yml b/modules/budgets/config/locales/crowdin/cs.yml index c3ec09e6661..32f049ac8cd 100644 --- a/modules/budgets/config/locales/crowdin/cs.yml +++ b/modules/budgets/config/locales/crowdin/cs.yml @@ -36,7 +36,7 @@ cs: type: "Typ nákladu" labor_budget: "Plánované mzdové náklady" material_budget: "Plánované jednotkové náklady" - base_amount: "Base amount" + base_amount: "Základní částka" work_package: budget_subject: "Název rozpočtu" errors: diff --git a/modules/costs/config/locales/crowdin/cs.yml b/modules/costs/config/locales/crowdin/cs.yml index 139bd7778c9..1441d14b16e 100644 --- a/modules/costs/config/locales/crowdin/cs.yml +++ b/modules/costs/config/locales/crowdin/cs.yml @@ -219,7 +219,7 @@ cs: setting_costs_currency_format_suffix: "After the number (e.g. 100 EUR)" setting_enforce_tracking_start_and_end_times: "Require start and finish times" setting_enforce_without_allow: "Requiring start and finish times is not possible without allowing them" - setting_allow_tracking_start_and_end_times_caption: "Enables entering start and finish times when logging time." + setting_allow_tracking_start_and_end_times_caption: "Umožní zadávat časy začátku a konce při zaznamenávání času." setting_enforce_tracking_start_and_end_times_caption: "Makes entering start and finish times mandatory when logging time." text_assign_time_and_cost_entries_to_project: "Přiřadit nahlášené hodiny a náklady projektu" text_destroy_cost_entries_question: "%{cost_entries} byl nahlášen k pracovním balíčkům, které se chystáte odstranit. Co chcete udělat?" diff --git a/modules/costs/config/locales/crowdin/zh-TW.yml b/modules/costs/config/locales/crowdin/zh-TW.yml index d55463b7e1a..aca393b7124 100644 --- a/modules/costs/config/locales/crowdin/zh-TW.yml +++ b/modules/costs/config/locales/crowdin/zh-TW.yml @@ -232,7 +232,7 @@ zh-TW: blankslate: heading: "Start tracking your time and costs" description: "Get an overview of your costs and logged time to monitor progress of your project. Make sure that work packages are associated with the correct budget." - action: "Log time" + action: "工作紀錄" view_details: "View actual costs details" ee: features: diff --git a/modules/documents/config/locales/crowdin/cs.seeders.yml b/modules/documents/config/locales/crowdin/cs.seeders.yml index 91638706ab4..a9126f65ae0 100644 --- a/modules/documents/config/locales/crowdin/cs.seeders.yml +++ b/modules/documents/config/locales/crowdin/cs.seeders.yml @@ -7,14 +7,14 @@ cs: common: document_types: item_0: - name: Note + name: Poznámka item_1: - name: Idea + name: Nápad item_2: - name: Proposal + name: Návrh item_3: - name: Specification + name: Specifikace item_4: name: Report item_5: - name: Documentation + name: Dokumentace diff --git a/modules/documents/config/locales/crowdin/cs.yml b/modules/documents/config/locales/crowdin/cs.yml index 0151e949282..bbe85688c7d 100644 --- a/modules/documents/config/locales/crowdin/cs.yml +++ b/modules/documents/config/locales/crowdin/cs.yml @@ -24,18 +24,18 @@ cs: name: "Dokumenty OpenProject" description: "OpenProject plugin umožňující vytváření dokumentů v projektech." attributes: - collaborative_editing_hocuspocus_url: "Hocuspocus server URL" + collaborative_editing_hocuspocus_url: "URL serveru Hocuspocus" activerecord: errors: models: document_type: - one_or_more_required: "Cannot delete the last document type" + one_or_more_required: "Nelze odstranit poslední typ dokumentu" models: document: "Dokument" - documents: "Documents" + documents: "Dokumenty" attributes: document: - content_binary: "Content binary" + content_binary: "Binární obsah" title: "Název" activity: filter: @@ -45,110 +45,109 @@ cs: enumeration_doc_categories: "Kategorie dokumentů" documents: page_header: - heading: "All documents" + heading: "Všechny dokumenty" action_menu: - document_actions: "Document actions" - edit_title: "Edit title" + document_actions: "Operace na dokumentu" + edit_title: "Upravit název" subheader: filter: - label: "Document name filter" - placeholder: "Type here to search document names" + label: "Filtr názvu dokumentu" + placeholder: "Hledat podle názvu dokumentu" documents_list_blank_slate: - heading: "There are no documents yet" - description: "There are no documents in this view. You can click the button below to add one." + heading: "Zatím nejsou k dispozici žádné dokumenty" + description: "V tomto zobrazení nejsou žádné dokumenty. Kliknutím na tlačítko níže můžete jeden přidat." document_categories_deprecation_notice: - heading: File categories are now called 'Document types' + heading: Kategorie souborů se nyní nazývají "Typy dokumentů" description: |- - Your existing file categories have been converted to document types with the introduction of the new Documents module. - All existing documents have also been migrated to these new types. - primary_action: Configure document types - secondary_action: Learn more about the Documents module - document_type_actions: "Document type actions" + Vaše stávající Kategorie souborů byly zavedením nového modulu Dokumenty převedeny na Typy dokumentů. + Do těchto nových typů byly převedeny i všechny stávající dokumenty. + primary_action: Konfigurace typů dokumentů + secondary_action: Další informace o modulu Dokumenty + document_type_actions: "Operace na typu dokumentu" text_collaboration_disabled_notice: description: |- - Unable to open document because real-time text collaboration is disabled. - Please contact your administrator to enable real-time text collaboration if you want to access this document. + Dokument nelze otevřít, protože textová spolupráce v reálném čase je zakázána. + Obraťte se na správce pro povolení spolupráce v reálném čase, pokud chcete získat přístup k tomuto dokumentu. show_edit_view: connection_error_notice: description: |- - Unable to open document because the real-time text collaboration server is unreachable. - Please contact the administrator if the problem persists. - action: Try again + Nelze otevřít dokument, protože server pro spolupráci v reálném čase není dostupný. + Pokud problém přetrvává, obraťte se na správce. + action: Zkusit znovu connection_recovery_notice: - description: "The connection to the real-time text collaboration server has been restored." - tabs: "Document tabs" + description: "Připojení k serveru pro textovou spolupráci v reálném čase bylo obnoveno." + tabs: "Karty dokumentů" index_page: name: "Název" type: "Typ" - updated_at: "Last edited" + updated_at: "Naposledy upraveno" label_legacy: "Legacy" menu: - all: "All documents" + all: "Všechny dokumenty" types: "Typy" - collaboration_settings: "Real-time collaboration" - last_updated_at: "Last saved %{time}." - active_editors: "Active editors" + collaboration_settings: "Spolupráce v reálném čase" + last_updated_at: "Naposledy uloženo %{time}." + active_editors: "Aktivní editoři" active_editors_count: - one: "1 active editor" + one: "1 aktivní editor" few: "%{count} active editors" many: "%{count} active editors" - other: "%{count} active editors" + other: "%{count} aktivních editorů" label_attachment_author: "Autor přílohy" label_categories: "Kategorie" new_category: "Nová kategorie" - new_type: "New type" + new_type: "Nový typ" delete_dialog: - title: "Delete document" - heading: "Delete this document?" - confirmation_message_html: "This will permanently delete this document and all file attachments. Are you sure you want to do this?" + title: "Smazat dokument" + heading: "Smazat tento dokument?" + confirmation_message_html: "Tímto bude trvale odstraněn tento dokument a všechny přílohy. Opravdu to chcete udělat?" delete_document_type_dialog: - title: Delete document type - heading: Delete this document type? + title: Smazat typ dokumentu + heading: Smazat tento typ dokumentu? confirmation_message: |- - The type "%{type_name}" is currently unused. Deleting this type will have no effect on existing documents. - select_reassign_to_label: Reassign documents to + Typ "%{type_name}" se v současné době nepoužívá. Odstranění tohoto typu nebude mít žádný vliv na existující dokumenty. + select_reassign_to_label: Přeřazení dokumentů do reassign_message: one: The type "%{type_name}" is currently being used in %{document_count} document. Please select which type to reassign them to. few: The type "%{type_name}" is currently being used in %{document_count} documents. Please select which type to reassign them to. many: The type "%{type_name}" is currently being used in %{document_count} documents. Please select which type to reassign them to. other: The type "%{type_name}" is currently being used in %{document_count} documents. Please select which type to reassign them to. at_least_one_type_required: - title: Cannot delete document type - heading: Cannot delete the last document type - message: There must always be at least one document type configured. Create another one first if you want to delete this one. + title: Nelze odstranit typ dokumentu + heading: Nelze odstranit poslední typ dokumentu + message: Vždy musí být nakonfigurován alespoň jeden typ dokumentu. Chcete-li odstranit tento typ dokumentu, nejprve vytvořte jiný. admin: collaboration_settings: page_header: description: |- - When enabled, real-time collaboration allows multiple users to edit a document at the same time. - It requires a working %{hocuspocus_server_link} to function. + Když je Spolupráce v reálném čase povolena, umožňuje vícero uživatelům upravovat dokument současně. + Vyžaduje to funkční %{hocuspocus_server_link}. banner: - none_writable: These values are configured via environment variables and cannot be edited here. - some_unwritable: Some values are configured via environment variables and cannot be edited here. + none_writable: Tyto hodnoty jsou nastaveny pomocí proměnných prostředí a nelze je upravovat zde. + some_unwritable: Některé hodnoty jsou konfigurovány pomocí proměnných prostředí a nelze je zde upravovat. hocuspocus_server_url: - label: "Hocuspocus server URL" - caption: "The WebSocket address of a working Hocuspocus server." - invalid_scheme: "Must use a WebSocket protocol (ws:// or wss://)." + label: "URL serveru Hocuspocus" + caption: "Adresa WebSocket funkčního serveru Hocuspocus." + invalid_scheme: "Musíte použít protokol WebSocket (ws:// nebo wss://)." hocuspocus_server_secret: - label: "Client secret" - caption: "Paste the secret provided by the Hocuspocus server." - hocuspocus_server: Hocuspocus server + label: "Tajný klíč klienta" + caption: "Vložte klíč poskytnuté serverem Hocuspocus." + hocuspocus_server: Server Hocuspocus enable_text_collaboration: - heading: Real-time collaboration is not enabled + heading: Spolupráce v reálném čase není zapnuta description: |- Once enabled, multiple users will be able to work together on a document at the same time. All new documents will be based on a new editor (BlockNote) and will require a working connection to a Hocuspocus server. - primary_action: Enable real-time collaboration - success: Real-time collaboration has been enabled. + primary_action: Povolit spolupráci v reálném čase + success: Spolupráce v reálném čase byla povolena. disable_text_collaboration_dialog: - title: Disable real-time collaboration - heading: Disable real-time collaboration? + title: Zakázat spolupráci v reálném čase + heading: Zakázat spolupráci v reálném čase? confirmation_message: |- - All existing documents may become inaccessible. Please only do this if you are certain you want to disable - real-time collaboration and the BlockNote editor in this instance. - confirmation_checkbox_message: I understand that I might permanently lose data - success: Real-time collaboration has been disabled. + Všechny existující dokumenty se mohou stát nedostupnými. Tento postup proveďte pouze v případě, že jste si jisti, že chcete na této instanci vypnout spolupráci v reálném čase a editor BlockNote. + confirmation_checkbox_message: Porozuměl jsem, že mohu trvale ztratit data + success: Spolupráce v reálném čase není zapnuta. label_document_added: "Dokument byl přidán" label_document_new: "Nový dokument" label_document_plural: "Dokumenty" @@ -156,7 +155,7 @@ cs: label_document_title: "Název" label_document_description: "Popis" label_document_category: "Kategorie" - label_document_type: "Type" + label_document_type: "Typ" permission_manage_documents: "Spravovat dokumenty" permission_view_documents: "Zobrazit dokumenty" project_module_documents: "Dokumenty" diff --git a/modules/documents/config/locales/crowdin/ja.yml b/modules/documents/config/locales/crowdin/ja.yml index 0e636797391..c0a48d5a8d2 100644 --- a/modules/documents/config/locales/crowdin/ja.yml +++ b/modules/documents/config/locales/crowdin/ja.yml @@ -83,7 +83,7 @@ ja: updated_at: "Last edited" label_legacy: "Legacy" menu: - all: "All documents" + all: "全てのドキュメント" types: "ワークパッケージのタイプ" collaboration_settings: "Real-time collaboration" last_updated_at: "Last saved %{time}." @@ -124,7 +124,7 @@ ja: caption: "The WebSocket address of a working Hocuspocus server." invalid_scheme: "Must use a WebSocket protocol (ws:// or wss://)." hocuspocus_server_secret: - label: "Client secret" + label: "クライアントシークレット" caption: "Paste the secret provided by the Hocuspocus server." hocuspocus_server: Hocuspocus server enable_text_collaboration: diff --git a/modules/github_integration/config/locales/crowdin/cs.yml b/modules/github_integration/config/locales/crowdin/cs.yml index 621899e9bec..8071c983d43 100644 --- a/modules/github_integration/config/locales/crowdin/cs.yml +++ b/modules/github_integration/config/locales/crowdin/cs.yml @@ -21,20 +21,20 @@ #++ cs: attributes: - additions_count: "Number of additions" - deletions_count: "Number of deletions" - comments_count: "Comments count" - github_html_url: "Pull Request URL" - github_app_owner_avatar_url: "Owner avatar URL" - review_comments_count: "Review comments count" - github: "GitHub identifer" + additions_count: "Počet přídavků" + deletions_count: "Počet výmazů" + comments_count: "Počet komentářů" + github_html_url: "URL pull requestu" + github_app_owner_avatar_url: "URL avataru vlastníka" + review_comments_count: "Počet recenzních komentářů" + github: "Identifikátor na GitHubu" github_avatar_url: "URL avataru" github_updated_at: "Aktualizováno" - github_login: "GitHub login" + github_login: "Přihlášení do GitHubu" host: "Hostitel" labels: "Štítky" repository: "Repozitář" - changed_files_count: "Changed files" + changed_files_count: "Změněné soubory" button_add_deploy_target: Přidání cíle nasazení label_deploy_target: Cíl nasazení label_deploy_target_new: Nový cíl nasazení @@ -47,9 +47,9 @@ cs: description: "Integruje OpenProject a GitHub pro lepší workflow" project_module_github: "GitHub" permission_show_github_content: "Zobrazit GitHub obsah" - permission_introspection: Read running OpenProject core version and build SHA + permission_introspection: Přečíst verzi jádra OpenProject a build SHA text_deploy_target_type_info: > Zatím podporujeme pouze samotný OpenProject text_deploy_target_api_key_info: > - An OpenProject [API key](docs_url) belonging to a user who has the global introspection permission. + OpenProject [klíč API](docs_url) patřící uživateli, který má globální oprávnění k introspekci obsahu. text_pull_request_deployed_to: "%{pr_link} nasazení na adrese %{deploy_target_link}" diff --git a/modules/grids/config/locales/crowdin/cs.yml b/modules/grids/config/locales/crowdin/cs.yml index e9165943e7d..fac48102ec2 100644 --- a/modules/grids/config/locales/crowdin/cs.yml +++ b/modules/grids/config/locales/crowdin/cs.yml @@ -2,12 +2,12 @@ cs: grids: label_widget_in_grid: "Widget obsažený v mřížce %{grid_name}" widgets: - empty: "This widget is currently empty." - not_available: "This widget is not available." + empty: "Tento widget je v současné době prázdný." + not_available: "Tento widget není k dispozici." subitems: title: "Dílčí položky" no_results: "There are no visible children." - view_all_subitems: "View all subitems" + view_all_subitems: "Zobrazit všechny dílčí položky" button_text: "Dílčí položky" members: title: "Členové" diff --git a/modules/job_status/config/locales/crowdin/af.yml b/modules/job_status/config/locales/crowdin/af.yml index 72444c4e11e..1a8c73aac2d 100644 --- a/modules/job_status/config/locales/crowdin/af.yml +++ b/modules/job_status/config/locales/crowdin/af.yml @@ -5,8 +5,7 @@ af: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Background job status' redirect: 'You are being redirected.' redirect_link: 'Please click here to continue.' diff --git a/modules/job_status/config/locales/crowdin/ar.yml b/modules/job_status/config/locales/crowdin/ar.yml index fbbe5816e9d..af2e40626f6 100644 --- a/modules/job_status/config/locales/crowdin/ar.yml +++ b/modules/job_status/config/locales/crowdin/ar.yml @@ -5,8 +5,7 @@ ar: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Background job status' redirect: 'You are being redirected.' redirect_link: 'Please click here to continue.' diff --git a/modules/job_status/config/locales/crowdin/az.yml b/modules/job_status/config/locales/crowdin/az.yml index b711f2ca0d0..5746b5d8c18 100644 --- a/modules/job_status/config/locales/crowdin/az.yml +++ b/modules/job_status/config/locales/crowdin/az.yml @@ -5,8 +5,7 @@ az: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Background job status' redirect: 'You are being redirected.' redirect_link: 'Please click here to continue.' diff --git a/modules/job_status/config/locales/crowdin/be.yml b/modules/job_status/config/locales/crowdin/be.yml index 264046c1704..de14ed0db09 100644 --- a/modules/job_status/config/locales/crowdin/be.yml +++ b/modules/job_status/config/locales/crowdin/be.yml @@ -5,8 +5,7 @@ be: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Background job status' redirect: 'You are being redirected.' redirect_link: 'Please click here to continue.' diff --git a/modules/job_status/config/locales/crowdin/bg.yml b/modules/job_status/config/locales/crowdin/bg.yml index a58ab9a24bb..84b198dedc7 100644 --- a/modules/job_status/config/locales/crowdin/bg.yml +++ b/modules/job_status/config/locales/crowdin/bg.yml @@ -5,8 +5,7 @@ bg: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Background job status' redirect: 'You are being redirected.' redirect_link: 'Моля, кликнете тук, за да продължите.' diff --git a/modules/job_status/config/locales/crowdin/ca.yml b/modules/job_status/config/locales/crowdin/ca.yml index 27274064a93..dffc3087bc0 100644 --- a/modules/job_status/config/locales/crowdin/ca.yml +++ b/modules/job_status/config/locales/crowdin/ca.yml @@ -5,8 +5,7 @@ ca: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'La descàrrega hauria d''iniciar-se automàticament' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Estat de l''operació de fons' redirect: 'Estàs sent redirigit.' redirect_link: 'Si us plau, fes clic aquí per continuar.' diff --git a/modules/job_status/config/locales/crowdin/ckb-IR.yml b/modules/job_status/config/locales/crowdin/ckb-IR.yml index e0eb3f551ef..1306c0173c6 100644 --- a/modules/job_status/config/locales/crowdin/ckb-IR.yml +++ b/modules/job_status/config/locales/crowdin/ckb-IR.yml @@ -5,8 +5,7 @@ ckb-IR: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Background job status' redirect: 'You are being redirected.' redirect_link: 'Please click here to continue.' diff --git a/modules/job_status/config/locales/crowdin/cs.yml b/modules/job_status/config/locales/crowdin/cs.yml index f9d33b291d1..ca71d624154 100644 --- a/modules/job_status/config/locales/crowdin/cs.yml +++ b/modules/job_status/config/locales/crowdin/cs.yml @@ -5,8 +5,7 @@ cs: description: "Seznam a stav úkolů na pozadí." job_status_dialog: download_starts: 'Stahování by mělo začít automaticky.' - link_to_download: 'Nebo %{link} ke stažení.' - click_here: 'klikněte zde' + click_to_download: 'Nebo [klikněte zde](download_url) pro stažení.' title: 'Stav úlohy na pozadí' redirect: 'Nyní jste přesměrováváni' redirect_link: 'Pro pokračování klikněte prosím zde.' diff --git a/modules/job_status/config/locales/crowdin/da.yml b/modules/job_status/config/locales/crowdin/da.yml index f792f8b4676..c8f3c589ddd 100644 --- a/modules/job_status/config/locales/crowdin/da.yml +++ b/modules/job_status/config/locales/crowdin/da.yml @@ -5,8 +5,7 @@ da: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Background job status' redirect: 'You are being redirected.' redirect_link: 'Please click here to continue.' diff --git a/modules/job_status/config/locales/crowdin/de.yml b/modules/job_status/config/locales/crowdin/de.yml index e97dce0fb34..a26180ae045 100644 --- a/modules/job_status/config/locales/crowdin/de.yml +++ b/modules/job_status/config/locales/crowdin/de.yml @@ -5,8 +5,7 @@ de: description: "Auflistung und Status der Hintergrundaufträge." job_status_dialog: download_starts: 'Der Download sollte automatisch starten.' - link_to_download: 'Oder %{link} zum Herunterladen.' - click_here: 'klicken Sie hier' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Status des Hintergrundauftrags' redirect: 'Sie werden weitergeleitet.' redirect_link: 'Bitte klicken Sie hier, um fortzufahren.' diff --git a/modules/job_status/config/locales/crowdin/el.yml b/modules/job_status/config/locales/crowdin/el.yml index 705421624af..9fe554f6b53 100644 --- a/modules/job_status/config/locales/crowdin/el.yml +++ b/modules/job_status/config/locales/crowdin/el.yml @@ -5,8 +5,7 @@ el: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'Η λήψη θα πρέπει να ξεκινήσει αυτόματα.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Κατάσταση εργασίας παρασκηνίου' redirect: 'Ανακατευθύνεστε.' redirect_link: 'Παρακαλώ κάντε κλικ εδώ για να συνεχίσετε.' diff --git a/modules/job_status/config/locales/crowdin/eo.yml b/modules/job_status/config/locales/crowdin/eo.yml index 75f34cb0ead..f6ae9cdbfa9 100644 --- a/modules/job_status/config/locales/crowdin/eo.yml +++ b/modules/job_status/config/locales/crowdin/eo.yml @@ -5,8 +5,7 @@ eo: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Fona laborstato' redirect: 'You are being redirected.' redirect_link: 'Please click here to continue.' diff --git a/modules/job_status/config/locales/crowdin/es.yml b/modules/job_status/config/locales/crowdin/es.yml index ef5192beee6..c3493890d4e 100644 --- a/modules/job_status/config/locales/crowdin/es.yml +++ b/modules/job_status/config/locales/crowdin/es.yml @@ -5,8 +5,7 @@ es: description: "Listado y estado de los trabajos en segundo plano." job_status_dialog: download_starts: 'La descarga debería iniciarse automáticamente.' - link_to_download: 'O, %{link} para descargar.' - click_here: 'haga clic aquí' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Estado de trabajo en segundo plano.' redirect: 'Se le está redirigiendo.' redirect_link: 'Haga clic aquí para continuar.' diff --git a/modules/job_status/config/locales/crowdin/et.yml b/modules/job_status/config/locales/crowdin/et.yml index 27809610d88..38fd8b9115a 100644 --- a/modules/job_status/config/locales/crowdin/et.yml +++ b/modules/job_status/config/locales/crowdin/et.yml @@ -5,8 +5,7 @@ et: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Background job status' redirect: 'You are being redirected.' redirect_link: 'Please click here to continue.' diff --git a/modules/job_status/config/locales/crowdin/eu.yml b/modules/job_status/config/locales/crowdin/eu.yml index 6bdd70fd26b..0e9c53deee0 100644 --- a/modules/job_status/config/locales/crowdin/eu.yml +++ b/modules/job_status/config/locales/crowdin/eu.yml @@ -5,8 +5,7 @@ eu: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'Deskargak automatikoki hasi beharko luke.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Atzeko lanen egoera' redirect: 'Berbideratzen ari da.' redirect_link: 'Jarraitzeko klikatu hemen, mesedez.' diff --git a/modules/job_status/config/locales/crowdin/fa.yml b/modules/job_status/config/locales/crowdin/fa.yml index 20fa8ee97b0..1a134022f4a 100644 --- a/modules/job_status/config/locales/crowdin/fa.yml +++ b/modules/job_status/config/locales/crowdin/fa.yml @@ -5,8 +5,7 @@ fa: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Background job status' redirect: 'You are being redirected.' redirect_link: 'Please click here to continue.' diff --git a/modules/job_status/config/locales/crowdin/fi.yml b/modules/job_status/config/locales/crowdin/fi.yml index 61c45a73c72..b836d9fc3fe 100644 --- a/modules/job_status/config/locales/crowdin/fi.yml +++ b/modules/job_status/config/locales/crowdin/fi.yml @@ -5,8 +5,7 @@ fi: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Background job status' redirect: 'You are being redirected.' redirect_link: 'Please click here to continue.' diff --git a/modules/job_status/config/locales/crowdin/fil.yml b/modules/job_status/config/locales/crowdin/fil.yml index 98e776a530d..dd402fff16e 100644 --- a/modules/job_status/config/locales/crowdin/fil.yml +++ b/modules/job_status/config/locales/crowdin/fil.yml @@ -5,8 +5,7 @@ fil: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Background job status' redirect: 'You are being redirected.' redirect_link: 'Please click here to continue.' diff --git a/modules/job_status/config/locales/crowdin/fr.yml b/modules/job_status/config/locales/crowdin/fr.yml index 0c756fd92d6..f88c34e62b9 100644 --- a/modules/job_status/config/locales/crowdin/fr.yml +++ b/modules/job_status/config/locales/crowdin/fr.yml @@ -5,8 +5,7 @@ fr: description: "Liste et état des tâches d'arrière-plan." job_status_dialog: download_starts: 'Le téléchargement devrait démarrer automatiquement.' - link_to_download: 'Ou %{link} pour télécharger.' - click_here: 'cliquez ici' + click_to_download: 'Ou, [cliquez ici](download_url) pour télécharger.' title: 'Statut de la tâche en arrière-plan' redirect: 'Vous allez être redirigé.' redirect_link: 'Veuillez cliquer ici pour continuer.' diff --git a/modules/job_status/config/locales/crowdin/he.yml b/modules/job_status/config/locales/crowdin/he.yml index 8f8eeaf6087..2f31d617544 100644 --- a/modules/job_status/config/locales/crowdin/he.yml +++ b/modules/job_status/config/locales/crowdin/he.yml @@ -5,8 +5,7 @@ he: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Background job status' redirect: 'You are being redirected.' redirect_link: 'נא ללחוץ כאן כדי להמשיך.' diff --git a/modules/job_status/config/locales/crowdin/hi.yml b/modules/job_status/config/locales/crowdin/hi.yml index b6b9344a643..0ab12581596 100644 --- a/modules/job_status/config/locales/crowdin/hi.yml +++ b/modules/job_status/config/locales/crowdin/hi.yml @@ -5,8 +5,7 @@ hi: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Background job status' redirect: 'You are being redirected.' redirect_link: 'Please click here to continue.' diff --git a/modules/job_status/config/locales/crowdin/hr.yml b/modules/job_status/config/locales/crowdin/hr.yml index 5901f8aa5c9..72e8d921d28 100644 --- a/modules/job_status/config/locales/crowdin/hr.yml +++ b/modules/job_status/config/locales/crowdin/hr.yml @@ -5,8 +5,7 @@ hr: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Background job status' redirect: 'You are being redirected.' redirect_link: 'Please click here to continue.' diff --git a/modules/job_status/config/locales/crowdin/hu.yml b/modules/job_status/config/locales/crowdin/hu.yml index 6e23d28cf98..d00ba71f598 100644 --- a/modules/job_status/config/locales/crowdin/hu.yml +++ b/modules/job_status/config/locales/crowdin/hu.yml @@ -5,8 +5,7 @@ hu: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'A letöltésnek automatikusan el kellene indulnia' - link_to_download: 'Vagy, %{link} letöltéshez.' - click_here: 'Kattints ide' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Háttér művelet állapota' redirect: 'Átirányítjuk...' redirect_link: 'Kattints ide a folytatáshoz' diff --git a/modules/job_status/config/locales/crowdin/id.yml b/modules/job_status/config/locales/crowdin/id.yml index 465d9d7379b..ac4110d2763 100644 --- a/modules/job_status/config/locales/crowdin/id.yml +++ b/modules/job_status/config/locales/crowdin/id.yml @@ -5,8 +5,7 @@ id: description: "Daftar dan status pekerjaan latar belakang." job_status_dialog: download_starts: 'Unduhan dimulai secara otomatis.' - link_to_download: 'Atau %{link} untuk mengunduh.' - click_here: 'klik di sini' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Latar belakang status pekerjaan' redirect: 'Anda akan diarahkan.' redirect_link: 'Silakan klik disini untuk melanjutkan.' diff --git a/modules/job_status/config/locales/crowdin/it.yml b/modules/job_status/config/locales/crowdin/it.yml index 6c0ffbc3e57..55c345c565c 100644 --- a/modules/job_status/config/locales/crowdin/it.yml +++ b/modules/job_status/config/locales/crowdin/it.yml @@ -5,8 +5,7 @@ it: description: "Elenco e stato dei job in background." job_status_dialog: download_starts: 'Il download dovrebbe iniziare automaticamente.' - link_to_download: 'Oppure, %{link} per scaricare.' - click_here: 'clicca qui' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Stato del lavoro in background' redirect: 'È in corso il reindirizzamento.' redirect_link: 'Clicca qui per continuare.' diff --git a/modules/job_status/config/locales/crowdin/ja.yml b/modules/job_status/config/locales/crowdin/ja.yml index 51add3efe3e..85326cb7095 100644 --- a/modules/job_status/config/locales/crowdin/ja.yml +++ b/modules/job_status/config/locales/crowdin/ja.yml @@ -5,8 +5,7 @@ ja: description: "バックグラウンドジョブのリストとステータス。" job_status_dialog: download_starts: 'ダウンロードは自動的に開始されます。' - link_to_download: 'Or, %{link} to download.' - click_here: 'ここをクリック' + click_to_download: 'Or, [click here](download_url) to download.' title: 'バックグラウンドジョブの状態' redirect: 'リダイレクトされています。' redirect_link: '続行するにはここをクリックしてください。' diff --git a/modules/job_status/config/locales/crowdin/ka.yml b/modules/job_status/config/locales/crowdin/ka.yml index af334af3db9..323aa0fd55b 100644 --- a/modules/job_status/config/locales/crowdin/ka.yml +++ b/modules/job_status/config/locales/crowdin/ka.yml @@ -5,8 +5,7 @@ ka: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Background job status' redirect: 'You are being redirected.' redirect_link: 'Please click here to continue.' diff --git a/modules/job_status/config/locales/crowdin/kk.yml b/modules/job_status/config/locales/crowdin/kk.yml index b5746e9546e..74d54a2895a 100644 --- a/modules/job_status/config/locales/crowdin/kk.yml +++ b/modules/job_status/config/locales/crowdin/kk.yml @@ -5,8 +5,7 @@ kk: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Background job status' redirect: 'You are being redirected.' redirect_link: 'Please click here to continue.' diff --git a/modules/job_status/config/locales/crowdin/ko.yml b/modules/job_status/config/locales/crowdin/ko.yml index 85932b4b53f..f0e0b1e2a9b 100644 --- a/modules/job_status/config/locales/crowdin/ko.yml +++ b/modules/job_status/config/locales/crowdin/ko.yml @@ -5,8 +5,7 @@ ko: description: "백그라운드 작업 목록 및 상태." job_status_dialog: download_starts: '자동으로 다운로드가 시작됩니다.' - link_to_download: '또는 %{link}에서 다운로드하세요.' - click_here: '여기를 클릭' + click_to_download: 'Or, [click here](download_url) to download.' title: '백그라운드 작업 상태' redirect: '리디렉션 중입니다.' redirect_link: '계속하려면 여기를 클릭하세요.' diff --git a/modules/job_status/config/locales/crowdin/lt.yml b/modules/job_status/config/locales/crowdin/lt.yml index da2752b4e3d..f6495422e22 100644 --- a/modules/job_status/config/locales/crowdin/lt.yml +++ b/modules/job_status/config/locales/crowdin/lt.yml @@ -5,8 +5,7 @@ lt: description: "Foninių darbų sąrašas ir būsena." job_status_dialog: download_starts: 'Parsisiuntimas turėtų prasidėti automatiškai.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Foninės užduoties būklė' redirect: 'Nukreipiame jūsų naršyklę.' redirect_link: 'Norėdami tęsti spauskite čia.' diff --git a/modules/job_status/config/locales/crowdin/lv.yml b/modules/job_status/config/locales/crowdin/lv.yml index 6dbc09b8047..b78a379dc1c 100644 --- a/modules/job_status/config/locales/crowdin/lv.yml +++ b/modules/job_status/config/locales/crowdin/lv.yml @@ -5,8 +5,7 @@ lv: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Background job status' redirect: 'You are being redirected.' redirect_link: 'Please click here to continue.' diff --git a/modules/job_status/config/locales/crowdin/mn.yml b/modules/job_status/config/locales/crowdin/mn.yml index d3361c9f759..b3561042a2d 100644 --- a/modules/job_status/config/locales/crowdin/mn.yml +++ b/modules/job_status/config/locales/crowdin/mn.yml @@ -5,8 +5,7 @@ mn: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'Татаж авах ажиллагаа автоматаар эхлэх ёстой.' - link_to_download: 'Эсвэл, татаж авах бол %{link}.' - click_here: 'энд дарна уу' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Суурь ажлын төлөв' redirect: 'Таныг дахин чиглүүлж байна.' redirect_link: 'Энд дарж үргэлжлүүлнэ үү.' diff --git a/modules/job_status/config/locales/crowdin/ms.yml b/modules/job_status/config/locales/crowdin/ms.yml index 670688d81b5..d5d3d489ebe 100644 --- a/modules/job_status/config/locales/crowdin/ms.yml +++ b/modules/job_status/config/locales/crowdin/ms.yml @@ -5,8 +5,7 @@ ms: description: "Senarai dan status latar belakang pekerjaan." job_status_dialog: download_starts: 'Proses muat turun akan bermula secara automatik.' - link_to_download: 'Atau, %{link} untuk memuat turun.' - click_here: 'klik sini' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Latar belakang status kerja' redirect: 'Anda sedang diubah hala.' redirect_link: 'Sila klik sini untuk teruskan.' diff --git a/modules/job_status/config/locales/crowdin/ne.yml b/modules/job_status/config/locales/crowdin/ne.yml index 77d48475a99..5fb5e6da068 100644 --- a/modules/job_status/config/locales/crowdin/ne.yml +++ b/modules/job_status/config/locales/crowdin/ne.yml @@ -5,8 +5,7 @@ ne: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Background job status' redirect: 'You are being redirected.' redirect_link: 'Please click here to continue.' diff --git a/modules/job_status/config/locales/crowdin/nl.yml b/modules/job_status/config/locales/crowdin/nl.yml index 0b6a864343b..3a710c7db53 100644 --- a/modules/job_status/config/locales/crowdin/nl.yml +++ b/modules/job_status/config/locales/crowdin/nl.yml @@ -5,8 +5,7 @@ nl: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'De download zou automatisch moeten starten.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Achtergrond-taak status' redirect: 'U wordt omgeleid.' redirect_link: 'Klik hier om door te gaan.' diff --git a/modules/job_status/config/locales/crowdin/no.yml b/modules/job_status/config/locales/crowdin/no.yml index 36357b55434..5b8ff6e7a74 100644 --- a/modules/job_status/config/locales/crowdin/no.yml +++ b/modules/job_status/config/locales/crowdin/no.yml @@ -5,8 +5,7 @@ description: "Oppføring og status for bakgrunnsjobber." job_status_dialog: download_starts: 'Nedlastingen skal starte automatisk.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Status på bakgrunnsjobb' redirect: 'Du blir nå videresendt.' redirect_link: 'Klikk her for å fortsette.' diff --git a/modules/job_status/config/locales/crowdin/pl.yml b/modules/job_status/config/locales/crowdin/pl.yml index b0da90a5cab..6d8f62b3a70 100644 --- a/modules/job_status/config/locales/crowdin/pl.yml +++ b/modules/job_status/config/locales/crowdin/pl.yml @@ -5,8 +5,7 @@ pl: description: "Lista i status zadań w tle." job_status_dialog: download_starts: 'Pobieranie powinno rozpocząć się automatycznie.' - link_to_download: 'Lub %{link}, aby pobrać.' - click_here: 'kliknij tutaj' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Status zadania w tle' redirect: 'Następuje przekierowanie.' redirect_link: 'Kliknij tutaj, aby kontynuować.' diff --git a/modules/job_status/config/locales/crowdin/pt-BR.yml b/modules/job_status/config/locales/crowdin/pt-BR.yml index 2059db7fee6..42ab4505548 100644 --- a/modules/job_status/config/locales/crowdin/pt-BR.yml +++ b/modules/job_status/config/locales/crowdin/pt-BR.yml @@ -5,8 +5,7 @@ pt-BR: description: "Listagem e situação dos trabalhos em segundo plano." job_status_dialog: download_starts: 'O download deverá começar automaticamente.' - link_to_download: 'Ou, %{link} para fazer o download.' - click_here: 'clique aqui' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Status do trabalho em segundo plano' redirect: 'Você está sendo redirecionado.' redirect_link: 'Clique aqui para continuar.' diff --git a/modules/job_status/config/locales/crowdin/pt-PT.yml b/modules/job_status/config/locales/crowdin/pt-PT.yml index f8e02a57276..3549acdfa61 100644 --- a/modules/job_status/config/locales/crowdin/pt-PT.yml +++ b/modules/job_status/config/locales/crowdin/pt-PT.yml @@ -5,8 +5,7 @@ pt-PT: description: "Listagem e estado dos trabalhos em segundo plano." job_status_dialog: download_starts: 'A transferência deve começar automaticamente.' - link_to_download: 'Ou, %{link} para descarregar.' - click_here: 'clique aqui' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Estado do trabalho em segundo plano' redirect: 'Está a ser redirecionado.' redirect_link: 'Clique aqui para continuar.' diff --git a/modules/job_status/config/locales/crowdin/ro.yml b/modules/job_status/config/locales/crowdin/ro.yml index f119720347e..32f06f2354d 100644 --- a/modules/job_status/config/locales/crowdin/ro.yml +++ b/modules/job_status/config/locales/crowdin/ro.yml @@ -5,8 +5,7 @@ ro: description: "Listare și stare lucrări de fundal." job_status_dialog: download_starts: 'Descărcarea ar trebui să înceapă automat.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Starea lucrului în fundal' redirect: 'Sunteți redirecționat.' redirect_link: 'Clic aici pentru a continua.' diff --git a/modules/job_status/config/locales/crowdin/ru.yml b/modules/job_status/config/locales/crowdin/ru.yml index 2aec196d137..72638f2e1c2 100644 --- a/modules/job_status/config/locales/crowdin/ru.yml +++ b/modules/job_status/config/locales/crowdin/ru.yml @@ -5,8 +5,7 @@ ru: description: "Список и статус фоновых заданий." job_status_dialog: download_starts: 'Загрузка начнется автоматически.' - link_to_download: 'Или загрузить %{link}.' - click_here: 'нажмите здесь' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Фоновый статус работы' redirect: 'Вы перенаправлены.' redirect_link: 'Пожалуйста, нажмите здесь, чтобы продолжить.' diff --git a/modules/job_status/config/locales/crowdin/rw.yml b/modules/job_status/config/locales/crowdin/rw.yml index 3286b9bd4d0..41de32d339c 100644 --- a/modules/job_status/config/locales/crowdin/rw.yml +++ b/modules/job_status/config/locales/crowdin/rw.yml @@ -5,8 +5,7 @@ rw: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Background job status' redirect: 'You are being redirected.' redirect_link: 'Please click here to continue.' diff --git a/modules/job_status/config/locales/crowdin/si.yml b/modules/job_status/config/locales/crowdin/si.yml index 0fcf1a5714e..2000c0dfc65 100644 --- a/modules/job_status/config/locales/crowdin/si.yml +++ b/modules/job_status/config/locales/crowdin/si.yml @@ -5,8 +5,7 @@ si: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Background job status' redirect: 'You are being redirected.' redirect_link: 'Please click here to continue.' diff --git a/modules/job_status/config/locales/crowdin/sk.yml b/modules/job_status/config/locales/crowdin/sk.yml index b9d10a5c5e6..cb1f07dcd62 100644 --- a/modules/job_status/config/locales/crowdin/sk.yml +++ b/modules/job_status/config/locales/crowdin/sk.yml @@ -5,8 +5,7 @@ sk: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Background job status' redirect: 'You are being redirected.' redirect_link: 'Please click here to continue.' diff --git a/modules/job_status/config/locales/crowdin/sl.yml b/modules/job_status/config/locales/crowdin/sl.yml index 259e56473b3..e85883a77f9 100644 --- a/modules/job_status/config/locales/crowdin/sl.yml +++ b/modules/job_status/config/locales/crowdin/sl.yml @@ -5,8 +5,7 @@ sl: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'Prenos naj bi se začel samodejno. ' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Status dela v ozadju' redirect: 'Preusmerjamo vas.' redirect_link: 'Za nadaljevanje kliknite tukaj.' diff --git a/modules/job_status/config/locales/crowdin/sr.yml b/modules/job_status/config/locales/crowdin/sr.yml index 7a84f929db4..578f90b1b2e 100644 --- a/modules/job_status/config/locales/crowdin/sr.yml +++ b/modules/job_status/config/locales/crowdin/sr.yml @@ -5,8 +5,7 @@ sr: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Background job status' redirect: 'You are being redirected.' redirect_link: 'Please click here to continue.' diff --git a/modules/job_status/config/locales/crowdin/sv.yml b/modules/job_status/config/locales/crowdin/sv.yml index 38f6b7bbd63..9bf8085946b 100644 --- a/modules/job_status/config/locales/crowdin/sv.yml +++ b/modules/job_status/config/locales/crowdin/sv.yml @@ -5,8 +5,7 @@ sv: description: "Lista och status för bakgrundsjobb." job_status_dialog: download_starts: 'Nedladdningen bör starta automatiskt.' - link_to_download: 'Eller, %{link} för att ladda ner.' - click_here: 'klicka här' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Status för bakgrundsjobb' redirect: 'Du blir omdirigerad.' redirect_link: 'Klicka här för att fortsätta.' diff --git a/modules/job_status/config/locales/crowdin/th.yml b/modules/job_status/config/locales/crowdin/th.yml index b1ff450024f..52ecd39c566 100644 --- a/modules/job_status/config/locales/crowdin/th.yml +++ b/modules/job_status/config/locales/crowdin/th.yml @@ -5,8 +5,7 @@ th: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Background job status' redirect: 'You are being redirected.' redirect_link: 'Please click here to continue.' diff --git a/modules/job_status/config/locales/crowdin/tr.yml b/modules/job_status/config/locales/crowdin/tr.yml index ca87c14a4ef..89ef390a02f 100644 --- a/modules/job_status/config/locales/crowdin/tr.yml +++ b/modules/job_status/config/locales/crowdin/tr.yml @@ -5,8 +5,7 @@ tr: description: "Arka plan işlerinin durumu listeleniyor." job_status_dialog: download_starts: 'İndirme işlemi otomatik olarak başlayacaktır.' - link_to_download: 'Veya indirmek için %{link}.' - click_here: 'buraya tıklayın' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Arka plan iş durumu' redirect: 'Yönlendiriliyorsunuz.' redirect_link: 'Devam etmek için lütfen buraya tıklayın.' diff --git a/modules/job_status/config/locales/crowdin/uk.yml b/modules/job_status/config/locales/crowdin/uk.yml index 3be8efb2264..6ac4eef7211 100644 --- a/modules/job_status/config/locales/crowdin/uk.yml +++ b/modules/job_status/config/locales/crowdin/uk.yml @@ -5,8 +5,7 @@ uk: description: "Список і статус фонових завдань." job_status_dialog: download_starts: 'Завантаження має початись автоматично.' - link_to_download: 'Або %{link} , щоб завантажити.' - click_here: 'натисніть тут' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Статус фонового завдання' redirect: 'Вас буде переспрямовано.' redirect_link: 'Натисніть тут, щоб продовжити.' diff --git a/modules/job_status/config/locales/crowdin/uz.yml b/modules/job_status/config/locales/crowdin/uz.yml index dd83e2199c8..75a110927aa 100644 --- a/modules/job_status/config/locales/crowdin/uz.yml +++ b/modules/job_status/config/locales/crowdin/uz.yml @@ -5,8 +5,7 @@ uz: description: "Listing and status of background jobs." job_status_dialog: download_starts: 'The download should start automatically.' - link_to_download: 'Or, %{link} to download.' - click_here: 'click here' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Background job status' redirect: 'You are being redirected.' redirect_link: 'Please click here to continue.' diff --git a/modules/job_status/config/locales/crowdin/vi.yml b/modules/job_status/config/locales/crowdin/vi.yml index 127a8178439..6e1a13be3d4 100644 --- a/modules/job_status/config/locales/crowdin/vi.yml +++ b/modules/job_status/config/locales/crowdin/vi.yml @@ -5,8 +5,7 @@ vi: description: "Danh sách và trạng thái của các công việc nền." job_status_dialog: download_starts: 'Quá trình tải xuống sẽ tự động bắt đầu.' - link_to_download: 'Hoặc %{link} để tải xuống.' - click_here: 'bấm vào đây' + click_to_download: 'Or, [click here](download_url) to download.' title: 'Trạng thái công việc nền' redirect: 'Bạn đang bị chuyển hướng.' redirect_link: 'Vui lòng nhấp vào đây để tiếp tục.' diff --git a/modules/job_status/config/locales/crowdin/zh-CN.yml b/modules/job_status/config/locales/crowdin/zh-CN.yml index c0cfed029dc..166857a56e8 100644 --- a/modules/job_status/config/locales/crowdin/zh-CN.yml +++ b/modules/job_status/config/locales/crowdin/zh-CN.yml @@ -5,8 +5,7 @@ zh-CN: description: "后台作业的列表和状态。" job_status_dialog: download_starts: '下载会自动开始。' - link_to_download: '或者,%{link} 以下载。' - click_here: '点击此处' + click_to_download: 'Or, [click here](download_url) to download.' title: '后台作业状态' redirect: '正在将您重定向。' redirect_link: '请点击此处继续。' diff --git a/modules/job_status/config/locales/crowdin/zh-TW.yml b/modules/job_status/config/locales/crowdin/zh-TW.yml index 17645a9787a..fe1472252e2 100644 --- a/modules/job_status/config/locales/crowdin/zh-TW.yml +++ b/modules/job_status/config/locales/crowdin/zh-TW.yml @@ -5,8 +5,7 @@ zh-TW: description: "背景工作列表及狀態" job_status_dialog: download_starts: '將自動開始下載' - link_to_download: '或 %{link} 下載。' - click_here: '點選此處' + click_to_download: 'Or, [click here](download_url) to download.' title: '背景工作狀態' redirect: '正在重新導向。' redirect_link: '請點擊此處繼續。' diff --git a/modules/ldap_groups/config/locales/crowdin/af.yml b/modules/ldap_groups/config/locales/crowdin/af.yml index 1526187b17b..5d6689cf0f9 100644 --- a/modules/ldap_groups/config/locales/crowdin/af.yml +++ b/modules/ldap_groups/config/locales/crowdin/af.yml @@ -47,7 +47,7 @@ af: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ af: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/ar.yml b/modules/ldap_groups/config/locales/crowdin/ar.yml index 6e6ca59a52b..a306adfd3f7 100644 --- a/modules/ldap_groups/config/locales/crowdin/ar.yml +++ b/modules/ldap_groups/config/locales/crowdin/ar.yml @@ -47,7 +47,7 @@ ar: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ ar: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/az.yml b/modules/ldap_groups/config/locales/crowdin/az.yml index 8c341c6ba44..5f16c971250 100644 --- a/modules/ldap_groups/config/locales/crowdin/az.yml +++ b/modules/ldap_groups/config/locales/crowdin/az.yml @@ -47,7 +47,7 @@ az: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ az: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/be.yml b/modules/ldap_groups/config/locales/crowdin/be.yml index 16561e39b27..1978a8ac08e 100644 --- a/modules/ldap_groups/config/locales/crowdin/be.yml +++ b/modules/ldap_groups/config/locales/crowdin/be.yml @@ -47,7 +47,7 @@ be: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ be: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/bg.yml b/modules/ldap_groups/config/locales/crowdin/bg.yml index 15dc1355484..9616e9bae27 100644 --- a/modules/ldap_groups/config/locales/crowdin/bg.yml +++ b/modules/ldap_groups/config/locales/crowdin/bg.yml @@ -47,7 +47,7 @@ bg: title: 'Премахване на синхронизирания филтър %{name}' confirmation: "Ако продължите, синхронизираният филтър %{name} и всички групи %{groups_count} , създадени чрез него, ще бъдат премахнати." removed_groups: "Предупреждение: Това ще премахне следните групи от OpenProject, и ще ги премахне от всички проекти!" - verification: "Въведете името на филтъра %{name} за да потвърдите изтриването." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Въведете атрибута на LDAP групата, използвана за задаване на името на OpenProject групата.' filter_string_text: 'Въведете филтъра RFC4515 LDAP, който връща групи в LDAP, за да се синхронизира с OpenProject.' @@ -59,7 +59,7 @@ bg: title: 'Премахване на синхронизирана група %{name}' confirmation: "Ако продължите, синхронизираната група %{name} и всички %{users_count} потребители синхронизирани чрез нея, ще бъдат премахнати." info: "Забележка: Група OpenProject и членовете, добавени извън LDAP синхронизацията, няма да бъдат премахнати." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/ca.yml b/modules/ldap_groups/config/locales/crowdin/ca.yml index 0f44b8db8a7..9cdb9cb86fe 100644 --- a/modules/ldap_groups/config/locales/crowdin/ca.yml +++ b/modules/ldap_groups/config/locales/crowdin/ca.yml @@ -47,7 +47,7 @@ ca: title: 'Elimina el filtre de sincronització %{name}' confirmation: "Si continues, el filtre de sincronització %{name} i tots els grups %{groups_count} creats seran eliminats." removed_groups: "Alerta: Aquest eliminarà els següents grups d'OpenProject i l'eliminarà de tots els projectes!" - verification: "Introdueix el nom del filtre %{name} per verificar l'eliminació." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Afegeix l''atribut del grup LDAP utilitzat per a la configuració del nom de grup d''OpenProject.' filter_string_text: 'Afegeix el filtre LDAP RFC4515 que retorna els grups en el teu LDAP per sincronitzar amb OpenProject.' @@ -59,7 +59,7 @@ ca: title: 'Elimina el grup de sincronització %{name}' confirmation: "Si continues, el grup de sincronització %{name} i tots els %{users_count} usuaris sincronitzats seran eliminats." info: "Nota: El grup d'OpenProject i els membres afegits fora d'aquesta sincronització de LDAP no seran eliminats." - verification: "Introdueix el nom del grup %{name} per verificar l'eliminació." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | Aquest mòdul et permet configurar sincronitzacions entre grups de LDAP i OpenProject. Depénent dels grups de LDAP s'ha d'utilitzar els atributs groupOfNames / memberOf configurats per poder treballar amb OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/ckb-IR.yml b/modules/ldap_groups/config/locales/crowdin/ckb-IR.yml index c82c38ba2c1..2b96af32de1 100644 --- a/modules/ldap_groups/config/locales/crowdin/ckb-IR.yml +++ b/modules/ldap_groups/config/locales/crowdin/ckb-IR.yml @@ -47,7 +47,7 @@ ckb-IR: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ ckb-IR: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/cs.yml b/modules/ldap_groups/config/locales/crowdin/cs.yml index c5369c73b2b..80ee3f11079 100644 --- a/modules/ldap_groups/config/locales/crowdin/cs.yml +++ b/modules/ldap_groups/config/locales/crowdin/cs.yml @@ -3,7 +3,7 @@ cs: upsell: ldap_groups: title: 'Synchronizace skupiny LDAP' - description: 'Synchronize LDAP groups with OpenProject groups to manage users, change their permissions and facilitate user management across groups.' + description: 'Synchronizujte skupiny LDAP se skupinami OpenProject a spravujte uživatele, měňte jejich oprávnění a usnadněte správu uživatelů napříč skupinami.' plugin_openproject_ldap_groups: name: "OpenProject LDAP skupiny" description: "Synchronizace členství ve skupině LDAP." @@ -47,7 +47,7 @@ cs: title: 'Odstranit synchronizovaný filtr %{name}' confirmation: "Pokud budete pokračovat, synchronizovaný filtr %{name} a všechny skupiny %{groups_count} vytvořené prostřednictvím tohoto filtru budou odstraněny." removed_groups: "Varování: Toto odstraní následující skupiny z OpenProject a odstraní je ze všech projektů!" - verification: "Zadejte název projektu %{name} pro potvrzení odstranění." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Zadejte atribut LDAP skupiny použité pro nastavení názvu OpenProject skupiny.' filter_string_text: 'Zadejte RFC4515 LDAP, který vrátí skupiny v LDAP pro synchronizaci s OpenProject.' @@ -59,7 +59,7 @@ cs: title: 'Odstranit synchronizovanou skupinu %{name}' confirmation: "Pokud budete pokračovat, synchronizovaná skupina %{name} a všichni uživatelé %{users_count} synchronizovaní přes ni budou odstraněni." info: "Poznámka: Samotná OpenProject skupina a členové přidaní mimo tuto LDAP synchronizaci nebudou odstraněni." - verification: "Zadejte název skupiny %{name} pro ověření odstranění." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | Tento modul umožňuje nastavit synchronizaci mezi LDAP a OpenProject skupinami. Závisí na LDAP skupinách musí použít atribut groupOfNames / memberOf nastavený pro práci s OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/da.yml b/modules/ldap_groups/config/locales/crowdin/da.yml index 17f6cf286aa..d6e5665d418 100644 --- a/modules/ldap_groups/config/locales/crowdin/da.yml +++ b/modules/ldap_groups/config/locales/crowdin/da.yml @@ -47,7 +47,7 @@ da: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ da: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/de.yml b/modules/ldap_groups/config/locales/crowdin/de.yml index 8a8ed06f82c..33befdf6a26 100644 --- a/modules/ldap_groups/config/locales/crowdin/de.yml +++ b/modules/ldap_groups/config/locales/crowdin/de.yml @@ -47,7 +47,7 @@ de: title: 'Synchronisierten LDAP-Filter %{name} entfernen' confirmation: "Wenn Sie fortfahren, wird der Filter %{name} und alle %{groups_count} Gruppen, die durch ihn synchronisiert wurden, entfernt." removed_groups: "Warnung: Die folgenden Gruppen werden aus OpenProject entfernt und aus allen Projekten entfernt!" - verification: "Geben Sie den Namen des Filters %{name} ein, um die Löschung zu bestätigen." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Geben Sie das Attribut der LDAP-Gruppe ein, die für das Setzen des Namens der zugehörigen OpenProject-Gruppe verwendet wird.' filter_string_text: 'Geben Sie den RFC4515 LDAP-Filter ein, der Gruppen in Ihrem LDAP zur Synchronisierung mit OpenProject zurückgibt.' @@ -59,7 +59,7 @@ de: title: 'Synchronisierte Gruppe %{name} entfernen' confirmation: "Wenn Sie fortfahren, werden die synchronisierte Gruppe %{name} und alle %{users_count} Benutzer, die durch sie synchronisiert wurden, entfernt." info: "Hinweis: Die OpenProject Gruppe selbst und die Mitglieder, die außerhalb dieser LDAP-Synchronisation hinzugefügt wurden, werden nicht entfernt." - verification: "Geben Sie den Namen der Gruppe %{name} ein, um die Löschung durchzuführen." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | Mit diesem Modul können Sie eine Synchronisation zwischen LDAP und OpenProject Gruppen einrichten. Es ist abhängig von LDAP-Gruppen müssen das groupOfNames / member Of Attribut verwenden, das für die Arbeit mit OpenProject eingestellt ist. diff --git a/modules/ldap_groups/config/locales/crowdin/el.yml b/modules/ldap_groups/config/locales/crowdin/el.yml index e9e8d9c06e5..10508dfb141 100644 --- a/modules/ldap_groups/config/locales/crowdin/el.yml +++ b/modules/ldap_groups/config/locales/crowdin/el.yml @@ -47,7 +47,7 @@ el: title: 'Αφαίρεση του συγχρονισμένου φίλτρου %{name}' confirmation: "Αν συνεχίσετε, το συγχρονισμένο φίλτρο %{name} και όλες οι ομάδες %{groups_count} που δημιουργήθηκαν μέσω αυτού θα αφαιρεθούν." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Εισάγετε το όνομα φίλτρου %{name} για να επαληθεύσετε τη διαγραφή." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Εισάγετε το φίλτρο RFC4515 LDAP που επιστρέφει τις ομάδες στο LDAP σας για συγχρονισμό με το OpenProject.' @@ -59,7 +59,7 @@ el: title: 'Αφαίρεση της συγχρονισμένης ομάδας %{name}' confirmation: "Αν συνεχίσετε, η συγχρονισμένη ομάδα %{name} και οι %{users_count} χρήστες που έχουν συγχρονιστεί μέσω αυτής θα αφαιρεθούν." info: "Σημείωση: Η ομάδας OpenProject και τα μέλη που προστέθηκαν εκτός του συγχρονισμού LDAP δεν θα αφαιρεθούν." - verification: "Εισάγετε το όνομα της ομάδας %{name} για να επιβεβαιώσετε τη διαγραφή." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | Αυτή η ενότητα σάς επιτρέπει να ρυθμίσετε συγχρονισμό μεταξύ ομάδων LDAP και OpenProject. Εξαρτάται από τις ομάδες LDAP που πρέπει να χρησιμοποιήσουν το σύνολο χαρακτηριστικών groupOfNames / memberOf που θα λειτουργούν με το OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/eo.yml b/modules/ldap_groups/config/locales/crowdin/eo.yml index 6c7fceadb43..14535bcf176 100644 --- a/modules/ldap_groups/config/locales/crowdin/eo.yml +++ b/modules/ldap_groups/config/locales/crowdin/eo.yml @@ -47,7 +47,7 @@ eo: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ eo: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/es.yml b/modules/ldap_groups/config/locales/crowdin/es.yml index d2e6486eb13..fc50f98d342 100644 --- a/modules/ldap_groups/config/locales/crowdin/es.yml +++ b/modules/ldap_groups/config/locales/crowdin/es.yml @@ -47,7 +47,7 @@ es: title: 'Quitar filtro sincronizado %{name}' confirmation: "Si continúa, el filtro sincronizado %{name} y los %{groups_count} grupos creados se eliminarán." removed_groups: "Advertencia: Se eliminarán los grupos siguientes de OpenProject y se quitarán de todos los proyectos." - verification: "Especifique el nombre del filtro %{name} para verificar la eliminación." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Especifique el atributo del grupo de LDAP usado para configurar el nombre del grupo de OpenProject.' filter_string_text: 'Especifique el filtro LDAP RFC4515 que muestra los grupos en su entorno de LDAP que se sincronizarán con OpenProject.' @@ -59,7 +59,7 @@ es: title: 'Quitar grupo sincronizado %{name}' confirmation: "Si continúa, se eliminarán el grupo sincronizado %{name} y %{users_count} usuarios sincronizados mediante este." info: "Nota: El grupo de OpenProject en sí y los miembros agregados fuera de esta sincronización de LDAP no se eliminarán." - verification: "Escriba el nombre del grupo %{name} para verificar la eliminación." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | Este módulo le permite configurar una sincronización entre los grupos LDAP y el proyecto abierto Depende de que los grupos LDAP que necesiten usar el groupOfNames / memberOf diff --git a/modules/ldap_groups/config/locales/crowdin/et.yml b/modules/ldap_groups/config/locales/crowdin/et.yml index 599cccffa3c..0928321c3b3 100644 --- a/modules/ldap_groups/config/locales/crowdin/et.yml +++ b/modules/ldap_groups/config/locales/crowdin/et.yml @@ -47,7 +47,7 @@ et: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ et: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/eu.yml b/modules/ldap_groups/config/locales/crowdin/eu.yml index efaa676b6ac..316972a5007 100644 --- a/modules/ldap_groups/config/locales/crowdin/eu.yml +++ b/modules/ldap_groups/config/locales/crowdin/eu.yml @@ -47,7 +47,7 @@ eu: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ eu: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/fa.yml b/modules/ldap_groups/config/locales/crowdin/fa.yml index 7a9da803589..69fea053f7d 100644 --- a/modules/ldap_groups/config/locales/crowdin/fa.yml +++ b/modules/ldap_groups/config/locales/crowdin/fa.yml @@ -47,7 +47,7 @@ fa: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ fa: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/fi.yml b/modules/ldap_groups/config/locales/crowdin/fi.yml index 846362b60d8..b76d904fc8f 100644 --- a/modules/ldap_groups/config/locales/crowdin/fi.yml +++ b/modules/ldap_groups/config/locales/crowdin/fi.yml @@ -47,7 +47,7 @@ fi: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ fi: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/fil.yml b/modules/ldap_groups/config/locales/crowdin/fil.yml index 896ce69e0f3..903a0926aa9 100644 --- a/modules/ldap_groups/config/locales/crowdin/fil.yml +++ b/modules/ldap_groups/config/locales/crowdin/fil.yml @@ -47,7 +47,7 @@ fil: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ fil: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/fr.yml b/modules/ldap_groups/config/locales/crowdin/fr.yml index d2c7f7023bd..124e19381c2 100644 --- a/modules/ldap_groups/config/locales/crowdin/fr.yml +++ b/modules/ldap_groups/config/locales/crowdin/fr.yml @@ -47,7 +47,7 @@ fr: title: 'Supprimer le filtre synchronisé %{name}' confirmation: "Si vous continuez, le filtre synchronisé %{name} et tous les groupes %{groups_count} créés seront supprimés." removed_groups: "Attention : ceci supprimera les groupes suivants d'OpenProject et le supprimera de tous les projets !" - verification: "Saisissez le nom du filtre %{name} pour valider la suppression." + verification_html: "Saisissez le nom du filtre %{name} pour valider la suppression." form: group_name_attribute_text: 'Saisissez l''attribut du groupe LDAP utilisé pour définir le nom du groupe OpenProject.' filter_string_text: 'Entrez le filtre RFC4515 LDAP qui renvoie les groupes dans votre LDAP pour les synchroniser avec OpenProject.' @@ -59,7 +59,7 @@ fr: title: 'Supprimer le groupe synchronisé %{name}' confirmation: "Si vous continuez, le groupe synchronisé %{name} et tous les utilisateurs %{users_count} synchronisés par le biais de celui-ci seront supprimés." info: "Remarque : Le groupe OpenProject lui-même et les membres ajoutés en dehors de cette synchronisation LDAP ne seront pas supprimés." - verification: "Saisissez le nom du groupe %{name} pour valider la suppression." + verification_html: "Saisissez le nom du groupe %{name} pour valider la suppression." help_text_html: | Ce module vous permet de configurer une synchronisation entre les groupes LDAP et OpenProject. Les groupes LDAP doivent avoir l'attribut groupOfNames / memberOf défini pour fonctionner avec OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/he.yml b/modules/ldap_groups/config/locales/crowdin/he.yml index c59a252f20b..9f1d4c2b774 100644 --- a/modules/ldap_groups/config/locales/crowdin/he.yml +++ b/modules/ldap_groups/config/locales/crowdin/he.yml @@ -47,7 +47,7 @@ he: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ he: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/hi.yml b/modules/ldap_groups/config/locales/crowdin/hi.yml index 8acc7e59c07..7d2fad428bb 100644 --- a/modules/ldap_groups/config/locales/crowdin/hi.yml +++ b/modules/ldap_groups/config/locales/crowdin/hi.yml @@ -47,7 +47,7 @@ hi: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ hi: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/hr.yml b/modules/ldap_groups/config/locales/crowdin/hr.yml index 11085d96ccc..8eae5164ffe 100644 --- a/modules/ldap_groups/config/locales/crowdin/hr.yml +++ b/modules/ldap_groups/config/locales/crowdin/hr.yml @@ -47,7 +47,7 @@ hr: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ hr: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/hu.yml b/modules/ldap_groups/config/locales/crowdin/hu.yml index 41c90c24228..8b3f866e829 100644 --- a/modules/ldap_groups/config/locales/crowdin/hu.yml +++ b/modules/ldap_groups/config/locales/crowdin/hu.yml @@ -47,7 +47,7 @@ hu: title: 'Szinkronizált szűrő eltávolítása %{name}' confirmation: "Az összes szinkronizált szűrő%{name} és az összes csoport %{groups_count} amit létrehozott törölve lesz, ha folytatja." removed_groups: "Figyelmeztetés: Ez eltávolítja a következő csoportokat az OpenProject -ből, és eltávolítja az összes projektből!\n" - verification: "A törlés ellenőrzéséhez adja meg a %{name} szűrőnevet." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: "Adja meg az OpenProject csoportnév beállításához használt LDAP csoport attribútumát.\n" filter_string_text: "Adja meg az RFC4515 LDAP szűrőt, amely visszaadja az LDAP csoportjait, hogy szinkronizálja őket az OpenProject szolgáltatással.\n" @@ -59,7 +59,7 @@ hu: title: 'Szinkronizált csoport %{name} visszavonása' confirmation: "Az összes szinkronizált csoport%{name} és az összes %{users_count} amit létrehozott törölve lesz, ha folytatja." info: "Megjegyzés: Maga az OpenProject csoport és az ezen az LDAP szinkronizáláson kívül hozzáadott tagok nem kerülnek eltávolításra." - verification: "Adja meg a csoport nevét %{name} a törlés megerősítéséhez." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | Ez a modul lehetővé teszi az LDAP és az OpenProject csoportok közötti szinkronizálást. Attól függ, hogy az LDAP-csoportoknak az OpenProject használatához a groupOfNames / memberOf attribútumot kell használniuk. diff --git a/modules/ldap_groups/config/locales/crowdin/id.yml b/modules/ldap_groups/config/locales/crowdin/id.yml index c7bcce5c765..8cc22feb6d4 100644 --- a/modules/ldap_groups/config/locales/crowdin/id.yml +++ b/modules/ldap_groups/config/locales/crowdin/id.yml @@ -47,7 +47,7 @@ id: title: 'Hapus filter tersinkronisasi %{name}' confirmation: "Jika Anda melanjutkan, filter tersinkronisasi %{name} dan semua grup %{groups_count} yang dibuat melaluinya akan dihapus." removed_groups: "Peringatan: Ini akan menghapus grup berikut dari OpenProject dan menghapusnya dari semua proyek!" - verification: "Masukkan nama filter %{name} untuk memverifikasi penghapusan." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Masukkan atribut grup LDAP yang digunakan untuk mengatur nama grup OpenProject.' filter_string_text: 'Masukkan filter LDAP RFC4515 yang mengembalikan grup di LDAP Anda untuk disinkronkan dengan OpenProject.' @@ -59,7 +59,7 @@ id: title: 'Hapus grup tersinkronisasi %{name}' confirmation: "Jika Anda melanjutkan, grup yang disinkronkan %{name} dan semua %{users_count} pengguna yang disinkronkan melaluinya akan dihapus." info: "Catatan: Grup OpenProject itu sendiri dan anggota yang ditambahkan di luar sinkronisasi LDAP ini tidak akan dihapus." - verification: "Masukkan nama grup %{name} untuk memverifikasi penghapusan." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | Modul ini memungkinkan Anda mengatur sinkronisasi antara grup LDAP dan OpenProject. Itu tergantung pada grup LDAP yang perlu menggunakan atribut groupOfNames / memberOf yang disetel untuk bekerja dengan OpenProject.
Grup disinkronkan setiap jam melalui tugas cron. Lihat dokumentasi kami tentang topik ini. no_results: 'Tidak ditemukan grup tersinkronisasi.' diff --git a/modules/ldap_groups/config/locales/crowdin/it.yml b/modules/ldap_groups/config/locales/crowdin/it.yml index cd9945ac5d0..abac9feea28 100644 --- a/modules/ldap_groups/config/locales/crowdin/it.yml +++ b/modules/ldap_groups/config/locales/crowdin/it.yml @@ -47,7 +47,7 @@ it: title: 'Rimuovi filtro sincronizzato %{name}' confirmation: "Se continui, il filtro sincronizzato %{name} e tutti i gruppi %{groups_count} creati attraverso di esso verranno rimossi." removed_groups: "Attenzione: Questo rimuoverà i seguenti gruppi da OpenProject e lo rimuoverà da tutti i progetti!" - verification: "Inserisci il nome del filtro %{name} per verificare l'eliminazione." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Inserisci l''attributo del gruppo LDAP usato per impostare il nome del gruppo OpenProject.' filter_string_text: 'Inserisci il filtro LDAP RFC4515 che restituisce i gruppi nel tuo LDAP per sincronizzare con OpenProject.' @@ -59,7 +59,7 @@ it: title: 'Rimuovi gruppo sincronizzato %{name}' confirmation: "Se continui, il gruppo sincronizzato %{name} e tutti i %{users_count} utenti sincronizzati con esso verranno rimossi." info: "Nota: il gruppo OpenProject stesso e i membri aggiunti al di fuori di questa sincronizzazione LDAP non verranno rimossi." - verification: "Immetti il nome del gruppo %{name} per verificare l'eliminazione." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | Questo modulo permette di impostare una sincronizzazione tra l'LDAP e i gruppi di OpenProject. Dipende dall'impostazione dell'attributo groupOfNames / memberOf nei gruppi LDAP la possibilità di funzionare correttamente con OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/ja.yml b/modules/ldap_groups/config/locales/crowdin/ja.yml index ce29ae7df7c..b106dd6699c 100644 --- a/modules/ldap_groups/config/locales/crowdin/ja.yml +++ b/modules/ldap_groups/config/locales/crowdin/ja.yml @@ -47,7 +47,7 @@ ja: title: '同期されたフィルター %{name} を削除' confirmation: "続行すると、同期フィルター %{name} とそれを通して作成されたすべてのグループ %{groups_count} が削除されます。" removed_groups: "警告: 以下のグループを OpenProject から削除し、すべてのプロジェクトから削除します!" - verification: "確認のため、削;除するフィルタ名 %{name} を入力します。" + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'OpenProject グループ名の設定に使用する LDAP グループの属性を入力します。' filter_string_text: 'OpenProject と同期するための LDAP グループを返すRFC4515 LDAP フィルタを入力します。' @@ -59,7 +59,7 @@ ja: title: '同期済グループ %{name} を削除' confirmation: "続行すると、同期済グループ %{name} と、それを通じて同期された %{users_count} ユーザーがすべて削除されます。" info: "注: OpenProject グループ自体と、この LDAP 同期外で追加されたメンバーは削除されません。" - verification: "削除を確認するため、グループの名前 %{name} を入力してください。" + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | このモジュールは LDAP グループと Op​​enProject グループ間の同期を可能にします。 これは LDAPグループ が OpenProject で動作するように設定された groupOfNames / memberOf 属性を使用する必要があるかどうかに依存します。 diff --git a/modules/ldap_groups/config/locales/crowdin/ka.yml b/modules/ldap_groups/config/locales/crowdin/ka.yml index 45ff3021527..c095dcf66cb 100644 --- a/modules/ldap_groups/config/locales/crowdin/ka.yml +++ b/modules/ldap_groups/config/locales/crowdin/ka.yml @@ -47,7 +47,7 @@ ka: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ ka: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/kk.yml b/modules/ldap_groups/config/locales/crowdin/kk.yml index 7ed07a2fd2b..fcd5a67cddf 100644 --- a/modules/ldap_groups/config/locales/crowdin/kk.yml +++ b/modules/ldap_groups/config/locales/crowdin/kk.yml @@ -47,7 +47,7 @@ kk: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ kk: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/ko.yml b/modules/ldap_groups/config/locales/crowdin/ko.yml index dd19c8b82de..2e788ba207f 100644 --- a/modules/ldap_groups/config/locales/crowdin/ko.yml +++ b/modules/ldap_groups/config/locales/crowdin/ko.yml @@ -47,7 +47,7 @@ ko: title: '동기화된 필터 %{name} 제거' confirmation: "계속하는 경우, 동기화된 필터 %{name} 및 이를 통해 생성된 모든 그룹 %{groups_count}개가 제거됩니다." removed_groups: "경고: 이렇게 하면 OpenProject에서 다음 그룹이 제거되고 모든 프로젝트에서 이것이 제거됩니다." - verification: "삭제를 확인하려면 필터 이름 %{name}(을)를 입력하세요." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'OpenProject 그룹 이름 설정에 사용된 LDAP 그룹의 특성을 입력하세요.' filter_string_text: 'OpenProject와 동기화하려면 해당 LDAP에서 그룹을 반환하는 RFC4515 LDAP 필터를 입력하세요.' @@ -59,7 +59,7 @@ ko: title: '동기화된 그룹 %{name} 제거' confirmation: "계속하는 경우, 동기화된 그룹 %{name} 및 이를 통해 동기화된 %{users_count}명의 사용자 모두가 제거됩니다." info: "참고: OpenProject 그룹 자체 그리고 이 LDAP 동기화 이외에서 추가된 멤버는 제거되지 않습니다." - verification: "삭제를 확인하려면 프로젝트 이름 %{name}(을)를 입력하십시오." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | 이 모듈을 통해 LDAP 및 OpenProject 그룹 간에 동기화를 설정할 수 있습니다. LDAP 그룹은 OpenProject와 작동하도록 설정된 groupOfNames / memberOf 특성을 사용해야 합니다. diff --git a/modules/ldap_groups/config/locales/crowdin/lt.yml b/modules/ldap_groups/config/locales/crowdin/lt.yml index 70a2c18a845..12a97d0d1cd 100644 --- a/modules/ldap_groups/config/locales/crowdin/lt.yml +++ b/modules/ldap_groups/config/locales/crowdin/lt.yml @@ -47,7 +47,7 @@ lt: title: 'Panaikinti sinchronizavimo filtrą %{name}' confirmation: "Jei tęsite, sinchronizavimo filtras %{name} ir visos grupės (%{groups_count}), kurias jis sukūrė, bus panaikintos." removed_groups: "Dėmesio: Tai OpenProjecte panaikins tokias grupes ir ištrins jas iš visų projektų!" - verification: "Naikinimo patvirtinimui įveskite filtro vardą %{name}." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Įveskite LDAP grupės atributą, kuris bus naudojamas nustatant OpenProject grupės pavadinimą.' filter_string_text: 'Įveskite RFC4515 LDAP filtrą, kuris iš jūsų LDAP grąžina sinchronizavimui su OpenProjectu reikalingas grupes.' @@ -59,7 +59,7 @@ lt: title: 'Išimti sinchronizuotą grupę %{name}' confirmation: "Jei tęsite, sinchronizuota grupė %{name} ir visi %{users_count} per ją sinchronizuotų naudotojų bus pašalinti." info: "Pastaba: OpenProject grupė pati ir nariai, pridėti už šios LDAP sinchronizacijos, nebus pašalinti." - verification: "Įveskite grupės pavadinimą %{name}, kad patvirtintumėte naikinimą." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | Šis modulis leidžia jums nustatyti sinchronizavimą tarp LDAP ir OpenProject grupių. Jis remiasi tuo, kad LDAP grupės turi naudoti groupOfNames / memberOf atributų rinkinį, kad dirbtų su OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/lv.yml b/modules/ldap_groups/config/locales/crowdin/lv.yml index b2966bcc082..51b1f5ded85 100644 --- a/modules/ldap_groups/config/locales/crowdin/lv.yml +++ b/modules/ldap_groups/config/locales/crowdin/lv.yml @@ -47,7 +47,7 @@ lv: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ lv: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/mn.yml b/modules/ldap_groups/config/locales/crowdin/mn.yml index 5c0eb27221e..36099535039 100644 --- a/modules/ldap_groups/config/locales/crowdin/mn.yml +++ b/modules/ldap_groups/config/locales/crowdin/mn.yml @@ -47,7 +47,7 @@ mn: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ mn: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/ms.yml b/modules/ldap_groups/config/locales/crowdin/ms.yml index 0933b4d24b9..6df95909b69 100644 --- a/modules/ldap_groups/config/locales/crowdin/ms.yml +++ b/modules/ldap_groups/config/locales/crowdin/ms.yml @@ -47,7 +47,7 @@ ms: title: 'Buang saringan yang diselaraskan %{name}' confirmation: "Jika anda teruskan, saringan yang diselaraskan %{name} dan semua kumpulan %{groups_count} yang dicipta melaluinya akan dikeluarkan." removed_groups: "Amaran: Ini akan mengeluarkan kumpulan berikut daripada OpenProject dan mengeluarkannya daripada semua projek!" - verification: "Masukkan nama penyaring %{name} untuk mengesahkan pembuangan." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Masukkan atribut kumpulan LDAP yang digunakan untuk tetapkan nama kumpulan OpenProject.' filter_string_text: 'Masukkan penyaring LDAP RFC4515 yang kembalikan kumpulan dalam LDAP anda untuk diselaraskan dengan OpenProject.' @@ -59,7 +59,7 @@ ms: title: 'Keluarkan kumpulan yang diselaraskan %{name}' confirmation: "Jika anda teruskan, kumpulan yang diselaraskan %{name} dan semua %{users_count} pengguna yang diselaraskan melaluinya akan dikeluarkan." info: "Perhatian: Kumpulan OpenProject sendiri dan ahli-ahli yang ditambah di luar sinkronisasi LDAP tidak akan dikeluarkan." - verification: "Masukkan nama kumpulan %{name} untuk mengesahkan pembuangan." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | Modul ini membenarkan anda untuk menyediakan sinkronisasi antara LDAP dan kumpulan-kumpulan OpenProject. Ia bergantung kepada keperluan kumpulan LDAP untuk menggunakan kumpulanNama / ahliKepada
set atribut untuk bekerjasama dengan OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/ne.yml b/modules/ldap_groups/config/locales/crowdin/ne.yml index 4dfd68392f5..f8d7cd46254 100644 --- a/modules/ldap_groups/config/locales/crowdin/ne.yml +++ b/modules/ldap_groups/config/locales/crowdin/ne.yml @@ -47,7 +47,7 @@ ne: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ ne: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/nl.yml b/modules/ldap_groups/config/locales/crowdin/nl.yml index 4c14b6c52ce..2df26cd716c 100644 --- a/modules/ldap_groups/config/locales/crowdin/nl.yml +++ b/modules/ldap_groups/config/locales/crowdin/nl.yml @@ -47,7 +47,7 @@ nl: title: 'Gesynchroniseerd filter %{name} verwijderen' confirmation: "Als u doorgaat, zal het gesynchroniseerde filter %{name} en alle groepen %{groups_count} die erdoor zijn aangemaakt worden verwijderd." removed_groups: "Waarschuwing: Dit verwijdert de volgende groepen uit OpenProject en verwijdert deze uit alle projecten!" - verification: "Voer de filternaam %{name} in om de verwijdering te verifiëren." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Voer het attribuut in van de LDAP-groep die wordt gebruikt voor het instellen van de naam van de OpenProject groep.' filter_string_text: 'Voer het RFC4515 LDAP filter in dat terugstuurt groepen in je LDAP om te synchroniseren met OpenProject.' @@ -59,7 +59,7 @@ nl: title: 'Verwijder gesynchroniseerde groep %{name}' confirmation: "Als u doorgaat zal de gesynchroniseerde groep %{name} en alle %{users_count} gebruikers erdoor gesynchroniseerd verwijderd worden." info: "Nota: De OpenProject groep zelf en leden toegevoegd buiten deze LDAP synchronisatie zullen niet verwijderd worden." - verification: "Voer de projectnaam %{name} in om de verwijdering te verifiëren." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | Deze module laat u toe synchronisatie tussen LDAP en OpenProject groepen in te stellen. Het hangt af van LDAP groepen nood om het groupOfNames / memberOf attribuut te gebruiken ingesteld om te werken met OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/no.yml b/modules/ldap_groups/config/locales/crowdin/no.yml index 07b87e1b5ca..706b297ec38 100644 --- a/modules/ldap_groups/config/locales/crowdin/no.yml +++ b/modules/ldap_groups/config/locales/crowdin/no.yml @@ -47,7 +47,7 @@ title: 'Fjern synkronisert filter %{name}' confirmation: "Hvis du fortsetter, fjernes det synkroniserte filteret %{name} og alle gruppene %{groups_count} opprettet gjennom det." removed_groups: "Advarsel: Dette fjerner følgende grupper fra OpenProject og fjerner dem fra alle prosjekter!" - verification: "Skriv inn filternavnet %{name} for å bekrefte slettingen." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Skriv inn attributten til LDAP-gruppen som brukes til å sette gruppenavn i OpenProject.' filter_string_text: 'Skriv inn RFC4515 LDAP-filteret som returnerer grupper i din LDAP for å synkronisere med OpenProject.' @@ -59,7 +59,7 @@ title: 'Fjern synkronisert gruppe %{name}' confirmation: "Hvis du fortsetter, fjernes den synkroniserte gruppen %{name} og alle %{users_count} brukere som er synkronisert gjennom den." info: "Merk: Selve OpenProject-gruppen og medlemmer lagt til utenfor denne LDAP-synkroniseringen vil ikke bli fjernet." - verification: "Skriv inn gruppens navn %{name} for å bekrefte slettingen." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | Denne modulen lar deg sette opp en synkronisering mellom LDAP og OpenProject-grupper. Det avhenger av at LDAP-grupper bruker groupOfNames/memberOf-attributten for å fungere med OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/pl.yml b/modules/ldap_groups/config/locales/crowdin/pl.yml index 79ab0e684a5..cdaa4eea779 100644 --- a/modules/ldap_groups/config/locales/crowdin/pl.yml +++ b/modules/ldap_groups/config/locales/crowdin/pl.yml @@ -47,7 +47,7 @@ pl: title: 'Usuń synchronizowany filtr %{name}' confirmation: "W razie kontynuacji usunięty zostanie synchronizowany filtr %{name} i wszystkie grupy (%{groups_count}) utworzone przy jego użyciu." removed_groups: "Ostrzeżenie: w ten sposób usuniesz następujące grupy z OpenProject i ze wszystkich projektów!" - verification: "Wprowadź nazwę filtru %{name}, aby potwierdzić usunięcie." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Wprowadź atrybut grupy LDAP używany do ustawiania nazwy grupy OpenProject.' filter_string_text: 'Wprowadź filtr LDAP RFC4515, który zwraca grupy z LDAP w celu ich zsynchronizowania z OpenProject.' @@ -59,7 +59,7 @@ pl: title: 'Usuń synchronizowaną grupę %{name}' confirmation: "W przypadku kontynuacji usunięta zostanie synchronizowana grupa %{name} i wszyscy użytkownicy (%{users_count}) synchronizowani za jej pośrednictwem." info: "Uwaga: nie zostanie usunięta sama grupa OpenProject ani członkowie dodani poza tą synchronizacją LDAP." - verification: "Wprowadź nazwę grupy %{name}, aby potwierdzić usunięcie." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | Ten moduł umożliwia skonfigurowanie synchronizacji między grupami LDAP i OpenProject. Zależy to od tego, czy grupy LDAP muszą do pracy z OpenProject używać ustawionego atrybutu groupOfNames / memberOf. diff --git a/modules/ldap_groups/config/locales/crowdin/pt-BR.yml b/modules/ldap_groups/config/locales/crowdin/pt-BR.yml index f8f6ba9f70f..6d35c763e34 100644 --- a/modules/ldap_groups/config/locales/crowdin/pt-BR.yml +++ b/modules/ldap_groups/config/locales/crowdin/pt-BR.yml @@ -47,7 +47,7 @@ pt-BR: title: 'Remover filtro sincronizado %{name}' confirmation: "Se você continuar, o filtro sincronizado %{name} e todos os grupos %{groups_count} criados por meio dele serão removidos." removed_groups: "Aviso: Isto removerá os seguintes grupos do OpenProject e removê-los de todos os projetos!" - verification: "Digite o nome do filtro %{name} para verificar a exclusão." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Insira o atributo de grupo LDAP usado para configurações do nome de grupo do OpenProject.' filter_string_text: 'Insira o filtro RFC4515 LDAP que retorna grupos em seu LDAP para sincronizar com o OpenProject.' @@ -59,7 +59,7 @@ pt-BR: title: 'Remover grupo sincronizado %{name}' confirmation: "Se você continuar, o grupo sincronizado %{name} e todos os %{users_count} usuários sincronizados por meio dele serão removidos." info: "Nota: O próprio grupo OpenProject e membros adicionados fora desta sincronização LDAP não serão removidos." - verification: "Digite o nome do grupo %{name} para verificar a exclusão." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | Este módulo permite que você configure uma sincronização entre os grupos LDAP e OpenProject. Depende dos grupos LDAP que precisam usar o atributo groupOfNames / memberOf para trabalhar com o OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/pt-PT.yml b/modules/ldap_groups/config/locales/crowdin/pt-PT.yml index 94a0edba0ed..81ec0e83e18 100644 --- a/modules/ldap_groups/config/locales/crowdin/pt-PT.yml +++ b/modules/ldap_groups/config/locales/crowdin/pt-PT.yml @@ -47,7 +47,7 @@ pt-PT: title: 'Remover filtro sincronizado %{name}' confirmation: "Se continuar, o filtro sincronizado %{name} e todos os grupos %{groups_count} criados por meio dele serão removidos." removed_groups: "Aviso: Isto removerá os seguintes grupos do OpenProject e removê-los de todos os projetos!" - verification: "Insira o nome do filtro %{name} para verificar a eliminação." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Insira o atributo de grupo LDAP usado para configurações do nome de grupo do OpenProject.' filter_string_text: 'Insira o filtro RFC4515 LDAP que devolve grupos no seu LDAP para sincronizar com o OpenProject.' @@ -59,7 +59,7 @@ pt-PT: title: 'Remover grupo sincronizado %{name}' confirmation: "Se continuar, o grupo sincronizado %{name} e todos os utilizadores sincronizados com %{users_count} serão removidos." info: "Nota: O próprio grupo OpenProject e membros adicionados fora desta sincronização LDAP não serão removidos." - verification: "Insira o nome do grupo %{name} para verificar a eliminação." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | Este módulo permite-lhe configurar uma sincronização entre os grupos LDAP e OpenProject. Está dependente dos grupos LDAP que precisam de utilizar o atributo groupOfNames / memberOf para trabalhar com o OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/ro.yml b/modules/ldap_groups/config/locales/crowdin/ro.yml index f11c8a84ee9..c3f33126cc5 100644 --- a/modules/ldap_groups/config/locales/crowdin/ro.yml +++ b/modules/ldap_groups/config/locales/crowdin/ro.yml @@ -47,7 +47,7 @@ ro: title: 'Elimină filtrul sincronizat %{name}' confirmation: "Dacă continuați, filtrul sincronizat %{name} și toate grupurile %{groups_count} create prin intermediul acestuia vor fi eliminate." removed_groups: "Avertisment: Acest lucru va elimina următoarele grupuri din OpenProject și le va elimina din toate proiectele!" - verification: "Introdu numele filtrului %{name} pentru a verifica ștergerea." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Introdu atributul grupului LDAP utilizat pentru a seta numele grupului OpenProject.' filter_string_text: 'Introdu filtrul LDAP RFC4515 care returnează grupurile din LDAP pentru a le sincroniza cu OpenProject.' @@ -59,7 +59,7 @@ ro: title: 'Îndepărtați grupul sincronizat %{name}' confirmation: "Dacă, continui, grupul sincronizat %{name} și toți utilizatorii %{users_count} sincronizați prin intermediul acestuia vor fi eliminați." info: "Notă: Grupul OpenProject în sine și membrii adăugați în afara acestei sincronizări LDAP nu vor fi eliminați." - verification: "Introdu numele grupului %{name} pentru a verifica ștergerea." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | Acest modul vă permite să configurați o sincronizare între grupurile LDAP și OpenProject. Depinde de grupurile LDAP trebuie să utilizeze setul de atribute groupOfNames / memberOf pentru a funcționa cu OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/ru.yml b/modules/ldap_groups/config/locales/crowdin/ru.yml index eb05e72a923..7f2374ed6e9 100644 --- a/modules/ldap_groups/config/locales/crowdin/ru.yml +++ b/modules/ldap_groups/config/locales/crowdin/ru.yml @@ -47,7 +47,7 @@ ru: title: 'Удалить синхронизированный фильтр %{name}' confirmation: "Если вы продолжите, синхронизированный фильтр %{name} и все группы %{groups_count} , созданные через него, будут удалены." removed_groups: "Предупреждение: Это удалит следующие группы из OpenProject и удалит их из всех проектов!" - verification: "Введите имя фильтра %{name} для проверки удаления." + verification_html: "Введите имя фильтра %{name} для проверки удаления." form: group_name_attribute_text: 'Введите атрибут группы LDAP, используемой для установки имени группы OpenProject.' filter_string_text: 'Введите фильтр RFC4515 LDAP, который возвращает группы в ваш LDAP для синхронизации с OpenProject.' @@ -59,7 +59,7 @@ ru: title: 'Удалить синхронизированную группу %{name}' confirmation: "Если продолжите, синхронизированная группа %{name} и все %{users_count} пользователи синхронизированые через нее будут удалены." info: "Примечание: сама группа OpenProject и члены, добавленные за пределами этой синхронизации LDAP, удалены не будут." - verification: "Введите имя группы %{name} для проверки удаления." + verification_html: "Введите имя группы %{name} для проверки удаления." help_text_html: | Этот модуль позволяет настроить синхронизацию между группами LDAP и OpenProject. Для работы с OpenProject в зависимости от групп LDAP необходимо использовать набор атрибутов groupOfNames / memberOf. diff --git a/modules/ldap_groups/config/locales/crowdin/rw.yml b/modules/ldap_groups/config/locales/crowdin/rw.yml index 19c8933c6a8..7323e60bf23 100644 --- a/modules/ldap_groups/config/locales/crowdin/rw.yml +++ b/modules/ldap_groups/config/locales/crowdin/rw.yml @@ -47,7 +47,7 @@ rw: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ rw: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/si.yml b/modules/ldap_groups/config/locales/crowdin/si.yml index d8ae783ec81..3a427bb0c21 100644 --- a/modules/ldap_groups/config/locales/crowdin/si.yml +++ b/modules/ldap_groups/config/locales/crowdin/si.yml @@ -47,7 +47,7 @@ si: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ si: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/sk.yml b/modules/ldap_groups/config/locales/crowdin/sk.yml index ad2e0c78a98..b25537e09f7 100644 --- a/modules/ldap_groups/config/locales/crowdin/sk.yml +++ b/modules/ldap_groups/config/locales/crowdin/sk.yml @@ -47,7 +47,7 @@ sk: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ sk: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/sl.yml b/modules/ldap_groups/config/locales/crowdin/sl.yml index 4d9a791a3d7..c7ce7c0d148 100644 --- a/modules/ldap_groups/config/locales/crowdin/sl.yml +++ b/modules/ldap_groups/config/locales/crowdin/sl.yml @@ -47,7 +47,7 @@ sl: title: 'Odstrani sinhronizirani filter %{name}' confirmation: "Če nadaljujete, bo sinhronizirani filter %{name} in vse skupine %{groups_count}, ustvarjene prek njega, odstranjene.\n" removed_groups: "Opozorilo: S tem odstranite naslednje skupine iz OpenProject-a in ga odstranite iz vseh projektov!" - verification: "Vnesite ime filtra %{name}, da preverite izbris." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: "Vnesite atribut skupine LDAP, ki se uporablja za nastavitev imena skupine OpenProject.\n" filter_string_text: 'Vnesite filter RFC4515 LDAP, ki vrne skupine v vašem LDAP za sinhronizacijo z OpenProject.' @@ -59,7 +59,7 @@ sl: title: 'Odstrani sinhronizirano skupino %{name}' confirmation: "Če nadaljujete, bo sinhronizirana skupina %{name} in vsi %{users_count} uporabniki, ki so bili sinhronizirani prek nje, odstranjeni." info: "Opozorilo: Sama skupina OpenProject in člani, dodani zunaj te sinhronizacije LDAP, ne bodo odstranjeni." - verification: "Vnesite ime skupine %{name}, da preverite izbris." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | Ta modul vam omogoča, da nastavite sinhronizacijo med skupinama LDAP in OpenProject. Odvisno od tega, ali morajo skupine LDAP uporabiti atributskupinaOdIme / članOd , ki deluje za OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/sr.yml b/modules/ldap_groups/config/locales/crowdin/sr.yml index 510fca08b42..dd709c1437b 100644 --- a/modules/ldap_groups/config/locales/crowdin/sr.yml +++ b/modules/ldap_groups/config/locales/crowdin/sr.yml @@ -47,7 +47,7 @@ sr: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ sr: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/sv.yml b/modules/ldap_groups/config/locales/crowdin/sv.yml index d749cdd1e4f..43c10a836de 100644 --- a/modules/ldap_groups/config/locales/crowdin/sv.yml +++ b/modules/ldap_groups/config/locales/crowdin/sv.yml @@ -47,7 +47,7 @@ sv: title: 'Ta bort synkroniserat filter %{name}' confirmation: "Om du fortsätter kommer det synkroniserade filtret %{name} och alla grupper %{groups_count} som skapats genom det att tas bort." removed_groups: "Varning: Detta kommer att ta bort följande grupper från OpenProject och ta bort den från alla projekt!" - verification: "Ange filternamnet %{name} för att bekräfta raderingen." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Ange attribut för LDAP-gruppen som används för att ange namnet på OpenProject-gruppen.' filter_string_text: 'Ange RFC4515 LDAP-filtret som returnerar grupper i din LDAP för att synkronisera med OpenProject.' @@ -59,7 +59,7 @@ sv: title: 'Ta bort synkroniserad grupp %{name}' confirmation: "Om du fortsätter kommer den synkroniserade gruppen %{name} och alla %{users_count} användare som synkroniserats genom den att tas bort." info: "Obs: OpenProject-gruppen själv och medlemmar som lagts till utanför denna LDAP-synkronisering kommer inte att tas bort." - verification: "Ange gruppens namn %{name} för att verifiera raderingen." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | Modulen låter dig konfigurera en synkronisering mellan LDAP och OpenProject-grupper. Det beror på LDAP-grupper måste använda groupOfNames / memberOf attributset för att arbeta med OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/th.yml b/modules/ldap_groups/config/locales/crowdin/th.yml index d2febe03e06..706a51472b0 100644 --- a/modules/ldap_groups/config/locales/crowdin/th.yml +++ b/modules/ldap_groups/config/locales/crowdin/th.yml @@ -47,7 +47,7 @@ th: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ th: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/tr.yml b/modules/ldap_groups/config/locales/crowdin/tr.yml index 3237c600fcf..9fee72f3778 100644 --- a/modules/ldap_groups/config/locales/crowdin/tr.yml +++ b/modules/ldap_groups/config/locales/crowdin/tr.yml @@ -47,7 +47,7 @@ tr: title: '%{name} senkronize filtresini kaldır' confirmation: "Devam ederseniz, senkronize edilmiş %{name} filtresi ve bu kanaldan oluşturulan %{groups_count} tüm gruplar kaldırılacak." removed_groups: "Uyarı: Bu işlem aşağıdaki grupları OpenProject'ten kaldıracak ve tüm projelerden kaldıracaktır!" - verification: "Silme işlemini doğrulamak için %{name} filtre adını girin." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'OpenProject grup adını ayarlamak için kullanılan LDAP grubunun niteliğini girin.' filter_string_text: 'OpenProject ile senkronize etmek için LDAP''nizdeki grupları döndüren RFC4515 LDAP filtresini girin.' @@ -59,7 +59,7 @@ tr: title: '%{name} adlı senkronize grubu kaldır' confirmation: "Devam ederseniz, %{name}} ile senkronize edilmiş grup ve içinden senkronize olan tüm %{users_count} kullanıcısı kaldırılacak." info: "Not: OpenProject grubunun kendisi ve bu LDAP senkronizasyonunun dışına eklenen üyeler kaldırılmaz." - verification: "Silme işlemini doğrulamak için grubun adını %{name} girin." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | Bu modül, LDAP ve OpenProject grupları arasında bir senkronizasyon ayarlamanıza izin verir. Bu, LDAP gruplarının OpenProject ile çalışmak için ayarlanmış groupOfNames / memberOf özelliğini kullanması gerektiğine bağlıdır. diff --git a/modules/ldap_groups/config/locales/crowdin/uk.yml b/modules/ldap_groups/config/locales/crowdin/uk.yml index 6d02e4c6089..767f9f57db1 100644 --- a/modules/ldap_groups/config/locales/crowdin/uk.yml +++ b/modules/ldap_groups/config/locales/crowdin/uk.yml @@ -47,7 +47,7 @@ uk: title: 'Вилучити синхронізований фільтр %{name}' confirmation: "Якщо ви продовжите, синхронізований фільтр %{name} і всі групи (%{groups_count}), створені через нього, буде вилучено." removed_groups: "Увага! Це призведе до вилучення наведених нижче груп з OpenProject і з усіх проєктів!" - verification: "Введіть назву фільтра %{name}, щоб підтвердити видалення." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Введіть атрибут групи LDAP, що використовується для встановлення назви групи OpenProject.' filter_string_text: 'Введіть LDAP-фільтр RFC4515, який повертає групи у ваш протокол LDAP, щоб виконати синхронізацію з OpenProject.' @@ -59,7 +59,7 @@ uk: title: 'Вилучити синхронізовану групу %{name}' confirmation: "Якщо ви продовжите, синхронізовану групу %{name} і всіх користувачі (%{users_count}), синхронізованих через неї, буде вилучено." info: "Примітка: групу OpenProject і учасників, доданих з-поза меж цієї синхронізації LDAP, не буде вилучено." - verification: "Введіть назву групи %{name}, щоб підтвердити видалення." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | Цей модуль дає змогу налаштувати синхронізацію між групами LDAP і OpenProject. Це залежить від того, чи має LDAP-група використовувати набір атрибутів groupOfNames / memberOf для роботи з OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/uz.yml b/modules/ldap_groups/config/locales/crowdin/uz.yml index 66dda6567f4..c80e44a6027 100644 --- a/modules/ldap_groups/config/locales/crowdin/uz.yml +++ b/modules/ldap_groups/config/locales/crowdin/uz.yml @@ -47,7 +47,7 @@ uz: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -59,7 +59,7 @@ uz: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed." - verification: "Enter the group's name %{name} to verify the deletion." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | This module allows you to set up a synchronization between LDAP and OpenProject groups. It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/vi.yml b/modules/ldap_groups/config/locales/crowdin/vi.yml index fd69f21f458..b0abdb65cf1 100644 --- a/modules/ldap_groups/config/locales/crowdin/vi.yml +++ b/modules/ldap_groups/config/locales/crowdin/vi.yml @@ -47,7 +47,7 @@ vi: title: 'Xóa bộ lọc đã đồng bộ hóa %{name}' confirmation: "Nếu bạn tiếp tục, bộ lọc đã đồng bộ hóa %{name} và tất cả các nhóm %{groups_count} được tạo thông qua bộ lọc đó sẽ bị xóa." removed_groups: "Cảnh báo: Thao tác này sẽ xóa các nhóm sau khỏi OpenProject và xóa nó khỏi tất cả các dự án!" - verification: "Nhập tên bộ lọc %{name} để xác minh việc xóa." + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: 'Nhập thuộc tính của nhóm LDAP được sử dụng để đặt tên nhóm OpenProject.' filter_string_text: 'Nhập bộ lọc LDAP RFC4515 trả về các nhóm trong LDAP của bạn để đồng bộ hóa với OpenProject.' @@ -59,7 +59,7 @@ vi: title: 'Xóa nhóm đã đồng bộ hóa %{name}' confirmation: "Nếu bạn tiếp tục, nhóm được đồng bộ hóa %{name} và tất cả người dùng %{users_count} được đồng bộ hóa thông qua nhóm đó sẽ bị xóa." info: "Lưu ý: Bản thân nhóm OpenProject và các thành viên được thêm vào bên ngoài quá trình đồng bộ hóa LDAP này sẽ không bị xóa." - verification: "Nhập tên nhóm %{name} để xác minh việc xóa." + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | Mô-đun này cho phép bạn thiết lập đồng bộ hóa giữa các nhóm LDAP và OpenProject. Nó phụ thuộc vào các nhóm LDAP cần sử dụng thuộc tính groupOfNames / memberOf để hoạt động với OpenProject. diff --git a/modules/ldap_groups/config/locales/crowdin/zh-CN.yml b/modules/ldap_groups/config/locales/crowdin/zh-CN.yml index de9f185509c..cfc2e4fd8c5 100644 --- a/modules/ldap_groups/config/locales/crowdin/zh-CN.yml +++ b/modules/ldap_groups/config/locales/crowdin/zh-CN.yml @@ -47,7 +47,7 @@ zh-CN: title: '移除同步的筛选器 %{name}' confirmation: "如果您继续,将移除同步的筛选器 %{name} 和通过该筛选器创建的全部 %{groups_count} 个组。" removed_groups: "警告:这将从 OpenProject 中移除以下组并将该筛选器从所有项目中移除!" - verification: "输入筛选器名称 %{name} 以验证删除。" + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: '输入用于设置 OpenProject 组名称的 LDAP 组的属性。' filter_string_text: '输入 RFC4515 LDAP 筛选器,该筛选器将返回 LDAP 中的组以与 OpenProject 同步。' @@ -59,7 +59,7 @@ zh-CN: title: '移除同步组 %{name}' confirmation: "如果您继续,将移除同步组 %{name} 和通过该组同步的全部 %{users_count} 个用户。" info: "注意:OpenProject 组本身以及在 LDAP 同步之外添加的成员将不会被移除。" - verification: "输入组名称 %{name} 以验证删除。" + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | 此模块允许您在 LDAP 与 OpenProject 组之间设置同步。 它要求 LDAP 组使用 groupOfNames / memberOf 属性集才能与 OpenProject 一起使用。 diff --git a/modules/ldap_groups/config/locales/crowdin/zh-TW.yml b/modules/ldap_groups/config/locales/crowdin/zh-TW.yml index 15ce71c0dc6..e04f7fcabdb 100644 --- a/modules/ldap_groups/config/locales/crowdin/zh-TW.yml +++ b/modules/ldap_groups/config/locales/crowdin/zh-TW.yml @@ -47,7 +47,7 @@ zh-TW: title: '移除同步篩選條件 %{name}' confirmation: "如果繼續,本同步篩選 %{name} 和藉此創建的群組 %{groups_count} 將會刪除" removed_groups: "警告: 將從OpenProject和專案中移除以下群組" - verification: "輸入篩選名稱 %{name} 以確定刪除" + verification_html: "Enter the filter name %{name} to verify the deletion." form: group_name_attribute_text: '輸入用於設定OpenProject群組名的LDAP群組屬性' filter_string_text: '輸入 RFC4515 LDAP 篩選條件以取得LDAP 中的群組。' @@ -59,7 +59,7 @@ zh-TW: title: '移除同步群組 %{name}' confirmation: "如繼續,將移除同步的群組 %{name} 和所有透過該群組同步的全部 %{users_count} 個用戶。" info: "注意:OpenProject 群組本身以及在 LDAP 同步之外添加的成員將不會被移除。" - verification: "輸入專案的名稱 %{name} 來確認刪除" + verification_html: "Enter the group's name %{name} to verify the deletion." help_text_html: | 此模組允許您在 LDAP 與 OpenProject 群組之間設置同步。 它要求 LDAP 群組使用 groupOfNames / memberOf 屬性集才能與 OpenProject 一起使用。 diff --git a/modules/meeting/config/locales/crowdin/cs.yml b/modules/meeting/config/locales/crowdin/cs.yml index 9b7169ccdb0..9eda72ff881 100644 --- a/modules/meeting/config/locales/crowdin/cs.yml +++ b/modules/meeting/config/locales/crowdin/cs.yml @@ -44,7 +44,7 @@ cs: start_date: "Datum" start_time: "Čas zahájení" start_time_hour: "Čas zahájení" - sharing: "Sharing" + sharing: "Sdílení" meeting_agenda_item: title: "Název" author: "Autor" @@ -67,14 +67,14 @@ cs: meeting_participant: invited: "Pozvané" attended: "Zúčastnil se" - participation_status: "Participation status" + participation_status: "Stav účasti" errors: models: meeting_participant: - user_invalid: "is not a valid participant." + user_invalid: "není platným účastníkem." meeting_agenda_item: - section_not_belong_to_meeting: "Section does not belong to the same meeting." - user_invalid: "is not a valid participant." + section_not_belong_to_meeting: "Sekce nepatří do stejné schůze." + user_invalid: "není platným účastníkem." recurring_meeting_interim_response: not_an_occurrence: "is not a valid occurrence time for this recurring meeting" recurring_meeting: @@ -123,18 +123,18 @@ cs: error_notification_with_errors: "Odeslání oznámení se nezdařilo. Následující příjemci nelze upozornit: %{recipients}" label_meeting: "Schůzka" label_meeting_plural: "Schůzky" - label_meeting_templates: "Templates" - label_meeting_template: "Template" - label_meeting_template_new: "New template" - label_meeting_template_create: "Create template" - label_meeting_template_delete: "Delete template" - label_meeting_template_edit: "Edit template" - label_meeting_create_from_template: "Create meeting from template" + label_meeting_templates: "Šablony" + label_meeting_template: "Šablona" + label_meeting_template_new: "Nová šablona" + label_meeting_template_create: "Vytvořit šablonu" + label_meeting_template_delete: "Smazat šablonu" + label_meeting_template_edit: "Upravit šablonu" + label_meeting_create_from_template: "Vytvoření schůzky ze šablony" label_meeting_new: "Nová schůzka" label_meeting_new_dynamic: "Nová jednorázová schůzka" label_meeting_new_recurring: "Nová opakovaná schůzka" label_meeting_create: "Vytvořit schůzku" - label_meeting_duplicate: "Duplicate meeting" + label_meeting_duplicate: "Duplikovat schůzku" label_meeting_edit: "Upravit schůzku" label_meeting_agenda: "Agenda" label_meeting_minutes: "Zápisy" @@ -146,8 +146,8 @@ cs: label_meeting_date_time: "Datum/Čas" label_meeting_date_and_time: "Datum a čas" label_meeting_diff: "Rozdíl" - label_meeting_send_updates: "Send email calendar invite and updates" - label_meeting_send_updates_caption: "Send out email invites to all participants of this meeting" + label_meeting_send_updates: "Odeslat pozvánku a aktualizace e-mailem" + label_meeting_send_updates_caption: "Odeslat pozvánku všem účastníkům této schůzky" label_recurring_meeting: "Opakující se schůzka" label_recurring_meeting_part_of: "Část série schůzek\n" label_recurring_meeting_new: "Nová opakovaná schůzka" @@ -155,13 +155,13 @@ cs: label_template: "Šablona" label_recurring_meeting_view: "Zobrazit sérii schůzek" label_recurring_meeting_create: "Otevřít" - label_recurring_meeting_duplicate: "Duplicate as a one-time meeting" + label_recurring_meeting_duplicate: "Duplikovat jako jednorázovou schůzku" label_recurring_meeting_cancel: "Zrušit toto opakování" label_recurring_meeting_delete: "Odstranit výskyt" label_recurring_meeting_restore: "Obnovit tento výskyt" label_recurring_meeting_schedule: "Rozvrh" label_recurring_meeting_next_occurrence: "Další výskyt" - label_recurring_meeting_no_end_date: "There are more scheduled meetings (%{schedule})." + label_recurring_meeting_no_end_date: "Jsou zde další naplánované schůzky (%{schedule})." label_recurring_meeting_more: one: "There is one more scheduled meeting (%{schedule})." few: "Dalších %{count} naplánovaných schůzek (%{schedule})." @@ -182,7 +182,7 @@ cs: one: "Proběhne ještě jedna schůzka." few: "There are %{count} more meetings." many: "There are %{count} more meetings." - other: "There are %{count} more meetings." + other: "Proběhne ještě %{count} dalších schůzek." label_my_meetings: "Moje schůzky" label_all_meetings: "Všechny schůzky" label_upcoming_meetings: "Nadcházející schůzky" @@ -205,7 +205,7 @@ cs: label_time_zone: "Časové pásmo" label_start_date: "Datum zahájení" label_subscribe_icalendar: "Přihlásit kalendář k odběru" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_meeting_template_select: "Vyberte šablonu pro automatické zkopírování bodů programu schůzky" caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: @@ -250,8 +250,8 @@ cs: summary: "%{actor} has invited you to a new meeting series '%{title}'" series_updated: title: "[%{project_name}] Meeting series '%{title}' has been updated" - summary: "Meeting series '%{title}' has been updated by %{actor}" - old_schedule: "Old schedule" + summary: "Řada schůzek '%{title}' byla upravena uživatelem %{actor}" + old_schedule: "Starý rozvrh" new_schedule: "New schedule" invited: summary: "%{actor} has sent you an invitation for the meeting '%{title}'" @@ -269,24 +269,24 @@ cs: summary: "%{actor} added %{participant} to the meeting '%{title}'" summary_series: "%{actor} added %{participant} to the meeting series '%{title}'" participant_removed: - header: "Meeting '%{title}' - Participant removed" - header_series: "Meeting series '%{title}' - Participant removed" - summary: "%{actor} removed %{participant} from the meeting '%{title}'" + header: "Schůzka '%{title}' - Účastník byl odebrán" + header_series: "Řada schůzek '%{title}' - Uživatel byl odebrán" + summary: "%{actor} odebral uživatele %{participant} ze schůzky '%{title}'" summary_series: "%{actor} removed %{participant} from the meeting series '%{title}'" ended: header_series: "Ended: Meeting series '%{title}'" summary_series: "Meeting series '%{title}' has been ended by %{actor}" updated: - header: "Meeting '%{title}' has been updated" - summary: "Meeting '%{title}' has been updated by %{actor}" - body: "The meeting '%{title}' has been updated by %{actor}." + header: "Schůzka '%{title}' byla upravena" + summary: "Schůzka '%{title}' byla upravena uživatelem %{actor}" + body: "Schůzka '%{title}' byla upravena uživatelem %{actor}." old_title: "Old title" new_title: "New title" old_date_time: "Staré datum/čas" new_date_time: "Nové datum/čas" - old_location: "Old location" - new_location: "New location" - label_mail_all_participants: "Send email invite to participants" + old_location: "Stará lokace" + new_location: "Nová lokace" + label_mail_all_participants: "Poslat e-mailovou pozvánku všem účastníkům" types: one_time: "Jednorázový" recurring: "Opakované" @@ -316,9 +316,9 @@ cs: desc: "You can create a new meeting or change filter criteria" label_export_pdf: "Exportovat PDF" export: - your_meeting_export: "Meeting is being exported" + your_meeting_export: "Schůzka se exportuje" minutes: - footer_page_numbers: "P. %{current_page} of %{total_pages}" + footer_page_numbers: "S. %{current_page} z %{total_pages}" author: "Autor" date: "Datum" time: "Čas" @@ -326,11 +326,11 @@ cs: title: "Zápisy" export_pdf_dialog: title: Exportovat PDF - description: Generate a printable PDF file of this meeting at the current state. + description: Vygenerovat tisknutelný soubor PDF této schůzky v aktuálním stavu. templates: default: label: Výchozí - caption: The default template is suitable for most meetings and represent the current state. + caption: Výchozí šablona je vhodná pro většinu schůzek a představuje aktuální stav. minutes: label: Zápisy caption: The minutes template is suitable for closed and archived meetings. @@ -341,20 +341,20 @@ cs: label: Autor caption: The author of the minutes will be displayed in the subtitle. include_participants: - label: Include list of participants + label: Zahrnout seznam účastníků caption: A list of participants will be preset above the meeting agenda. include_attachments: - label: Include list of attachments + label: Zahrnout seznam příloh caption: A list containing the filenames of attachments will be appended at the end. include_backlog: label: Include backlog caption: Backlog elements are not normally considered part of a meeting occurrence but you can choose to include them. include_outcomes: - label: Include agenda outcomes + label: Zahrnout výsledky programu caption: If your agenda outcomes contain confidential information, you can choose to not include them in the export. footer_text: label: Text záhlaví - caption: This text will appear on every page at the center of the footer. + caption: Tento text se zobrazí na každé stránce uprostřed zápatí. submit_button: Stáhnout notifications: sidepanel: @@ -408,7 +408,7 @@ cs: no_items_flash: "There are no agenda items to present." ical_response: update_failed: "Could not update participation status." - meeting_not_found: "Meeting not found for the given UID." + meeting_not_found: "Schůzka pro daný UID nebyla nalezena." meeting_section: untitled_title: "Sekce bez názvu" delete_confirmation: "Smazáním sekce také smažete všechny body agendy. Opravdu to chcete udělat?" @@ -416,11 +416,11 @@ cs: empty_text: "Přetáhněte položky sem nebo vytvořte nové" meeting_participant: participation_status: - needs_action: "No response" - accepted: "Accepted" - declined: "Declined" - tentative: "Maybe" - unknown: "Unknown" + needs_action: "Bez odpovědi" + accepted: "Přijata" + declined: "Odmítnuta" + tentative: "Možná" + unknown: "Neznámá" recurring_meeting: time_zone_difference_banner: title: "Time zone difference" @@ -484,7 +484,7 @@ cs: planned: title: "Plánováno" subtitle: > - The following meetings are planned in the recurring meeting schedule but are not open yet. Every time a planned meeting starts, the next one will automatically be opened for you. You can also open planned meetings manually to import the template and start editing the agenda. + Následující schůzky jsou plánovány v harmonogramu opakovaných schůzek, ale zatím nejsou otevřeny. Pokaždé, když začne plánovaná schůzka, automaticky se vám otevře další. Naplánované schůzky můžete otevřít také ručně, abyste mohli importovat šablonu a začít upravovat program. blankslate: title: "Žádné další plánované schůzky" desc: > @@ -508,7 +508,7 @@ cs: end_series_dialog: title: "Ukončení série schůzek" notice_successful_notification: "Email calendar update sent to all participants" - notice_meeting_template_created: "Template successfully created" + notice_meeting_template_created: "Šablona byla úspěšně vytvořena" notice_timezone_missing: Není nastaveno žádné časové pásmo a předpokládá se %{zone} . Chcete-li vybrat časové pásmo, klikněte prosím zde. notice_meeting_updated: "Tato stránka byla aktualizována někým jiným. Pro zobrazení změn znovu načtena." permission_create_meetings: "Vytvořit schůzku\n" @@ -518,25 +518,25 @@ cs: permission_manage_agendas: "Správa zápisů" permission_manage_agendas_explanation: "Allows creating, editing and removing agenda items" permission_manage_outcomes: "Spravovat výsledky" - permission_send_meeting_invites_and_outcomes: "Send meeting invites and outcomes to participants" + permission_send_meeting_invites_and_outcomes: "Odeslat pozvánky a výsledky všem účastníkům této schůzky" project_module_meetings: "Schůzky" text_duration_in_hours: "Doba trvání v hodinách" text_in_hours: "v hodinách" text_meeting_agenda_for_meeting: 'Agenda schůzky "%{meeting}"' - text_meeting_template_blank_slate_heading: "There are no templates to display" - text_meeting_template_blank_slate: "You can create a new template for one-time meetings" + text_meeting_template_blank_slate_heading: "Nejsou k dispozici žádné šablony pro zobrazení" + text_meeting_template_blank_slate: "Můžete vytvořit novou šablonu pro jednorázové schůzky" text_meeting_series_end_early_heading: "Vymazat budoucí výskyty?" - text_meeting_series_end_early: "Ending the series will delete any future open or scheduled meeting occurrences" + text_meeting_series_end_early: "Ukončením série se odstraní všechny budoucí otevřené nebo plánované schůzky" text_meeting_closing_are_you_sure: "Jste si jisti, že chcete ukončit program schůzky?" text_meeting_agenda_open_are_you_sure: "Toto přepíše všechny změny v zápisech! Chcete pokračovat?" text_meeting_minutes_for_meeting: 'zápis pro schůzku "%{meeting}"' text_notificiation_invited: "Tento e-mail obsahuje ics záznam pro následující setkání:" text_meeting_ics_description: >- - Link to meeting: %{url} + Odkaz na schůzku: %{url} text_meeting_ics_meeting_series_description: >- - Link to meeting series: %{url} + Odkaz na sérii schůzek: %{url} text_meeting_occurrence_ics_description: >- - Link to meeting occurrence: %{url} Link to meeting series: %{series_url} + Odkaz na tuto událost schůzky: %{url} Odkaz na sérii schůzek: %{series_url} text_meeting_empty_heading: "Vaše schůzka je prázdná" text_meeting_empty_description1: "Začněte přidáním bodů programu schůzky níže. Každá položka může být tak jednoduchá jako jen název, ale můžete také přidat další podrobnosti jako doba trvání a poznámky." text_meeting_empty_description2: 'Můžete také přidat odkazy na existující pracovní balíčky. Pokud tak učiníte, související poznámky budou automaticky viditelné v záložce "Schůzky" pracovního balíčku.' @@ -610,47 +610,47 @@ cs: label_meeting_series_details: "Detaily série schůzek" label_meeting_details_edit: "Upravit podrobnosti schůzky" label_meeting_state: "Stav schůzky" - label_meeting_state_draft: "Draft" - label_meeting_state_open: "Otevřít" - label_meeting_state_closed: "Uzavřený" + label_meeting_state_draft: "Koncept" + label_meeting_state_open: "Otevřena" + label_meeting_state_closed: "Uzavřena" label_meeting_state_agenda_created: "Program byl vytvořen" label_meeting_state_planned: "Plánováno" label_meeting_state_cancelled: "Zrušeno" - label_meeting_state_skipped: "Přeskočeno" - label_meeting_state_in_progress: "Probíhá" + label_meeting_state_skipped: "Přeskočena" + label_meeting_state_in_progress: "Probíhající" label_meeting_reopen_action: "Znovu otevřít schůzku" label_meeting_close_action: "Ukončit schůzku" label_meeting_in_progress_action: "Zahájit schůzku" - label_meeting_open_action: "Open meeting" - text_meeting_draft_description: "Prepare your agenda in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." - text_meeting_open_description: "You can add/remove agenda items and participants. Once the agenda is ready, mark it as in progress to document outcomes." + label_meeting_open_action: "Otevřít schůzku" + text_meeting_draft_description: "Připravte si program v režimu návrhu. Tato schůzka nebude odesílat žádné aktualizace kalendáře ani pozvánky, a to ani v případě, že změníte podrobnosti schůzky nebo přidáte/odstraníte účastníky." + text_meeting_open_description: "Můžete přidávat a odebírat položky programu a účastníky. Jakmile je program připraven, označte jej jako probíhající, abyste zdokumentovali výsledky." text_meeting_closed_description: "Tato schůzka je ukončena. Položky agendy již nelze přidávat/odstranit." - text_meeting_in_progress_description: "You can modify the agenda, document outcomes for each item and track attendance for participants. Once the meeting is complete, you can mark it as closed to lock it." - text_meeting_open_dropdown_description: "Any existing outcomes will remain but users will not be able to add new outcomes." + text_meeting_in_progress_description: "Můžete upravovat program jednání, dokumentovat výsledky jednotlivých bodů a sledovat účast účastníků. Po dokončení schůzky ji můžete označit jako uzavřenou, čímž se uzamkne." + text_meeting_open_dropdown_description: "Všechny stávající výsledky zůstanou zachovány, ale uživatelé nebudou moci přidávat nové výsledky." text_meeting_in_progress_dropdown_description: "Document outcomes like information needs or decisions taken during the meeting." text_meeting_closed_dropdown_description: "This meeting is closed. You cannot modify agenda items or outcomes anymore." - text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." - text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." - text_onetime_meeting_template_empty_heading: "This meeting template is empty" + text_meeting_draft_banner: "Aktuálně se nacházíte v režimu konceptu. Tato schůzka nebude odesílat žádné aktualizace kalendáře ani pozvánky, a to ani v případě, že změníte podrobnosti schůzky nebo přidáte/odstraníte účastníky." + text_onetime_meeting_template_banner: "Právě upravujete šablonu schůzky. Tuto šablonu můžete použít k vytvoření jednorázových schůzek s předdefinovaným programem. Změny neovlivní již vytvořené schůzky." + text_onetime_meeting_template_empty_heading: "Tato šablona schůzky je prázdná" text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" text_exit_draft_mode_dialog_template_subtitle: "You cannot return to draft mode after this." - label_meeting_template_sharing: "Sharing" - label_meeting_template_sharing_none: "Only this project" - label_meeting_template_sharing_descendants: "Subprojects" - label_meeting_template_sharing_system: "All projects" - text_meeting_template_sharing_description: "This template can be shared with subprojects or other projects in this instance. Only the agenda items and attachments will be copied." + label_meeting_template_sharing: "Sdílení" + label_meeting_template_sharing_none: "Pouze tento projekt" + label_meeting_template_sharing_descendants: "Podprojekty" + label_meeting_template_sharing_system: "Všechny projekty" + text_meeting_template_sharing_description: "Tuto šablonu lze sdílet s podprojekty nebo jinými projekty v této instanci. Budou zkopírovány pouze body a přílohy pořadu jednání." text_meeting_not_editable_anymore: "Tato schůzka již není upravitelná." text_meeting_not_present_anymore: "Tato schůzka byla odstraněna. Vyberte prosím jinou schůzku." - label_add_work_package_to_meeting_dialog_title: "Select meeting" + label_add_work_package_to_meeting_dialog_title: "Zvolte schůzku" label_add_work_package_to_meeting_section_label: "Sekce" label_add_work_package_to_meeting_dialog_button: "Přidat do schůzky" - label_meeting_selection_caption: "It is only possible to add this work package to an upcoming or an ongoing meeting." + label_meeting_selection_caption: "Tento pracovní balíček je možné přidat pouze na nadcházející nebo probíhající schůzku." label_section_selection_caption: "Choose a particular section of the agenda or add it to the backlog." - placeholder_section_select_meeting_first: "Meeting selection is required first" - text_add_work_package_to_meeting_form: "The work package will be added to the selected meeting or backlog as an agenda item." + placeholder_section_select_meeting_first: "Nejprve je nutné provést výběr schůzky" + text_add_work_package_to_meeting_form: "Pracovní balíček bude přidán do vybrané schůzky nebo backlogu jako položka pořadu jednání." text_add_work_package_to_meeting_description: "Pracovní balíček může být přidán na jedno nebo více jednání k diskusi." text_agenda_item_no_notes: "Nebyly poskytnuty žádné poznámky" text_agenda_item_not_editable_anymore: "Tento bod pořadu jednání již není upravitelný." @@ -663,7 +663,7 @@ cs: text_agenda_item_dialog_skipping_cancelled_one: "Note: Skipping cancelled occurrence on %{date}." text_agenda_item_dialog_skipping_cancelled_many: "Note: Skipping %{count} cancelled occurrences." text_work_package_add_to_meeting_hint: 'Použijte tlačítko "Přidat do schůzky" pro přidání tohoto pracovního balíčku na nadcházející schůzku.' - text_work_package_has_no_past_meeting_agenda_items: "This work package was not added as an agenda item in a past meeting." + text_work_package_has_no_past_meeting_agenda_items: "Tento pracovní balíček nebyl na minulém zasedání zařazen jako bod programu." text_email_updates_muted: "Email calendar updates are muted. Participants will not receive updated invites via email when you make changes." text_email_updates_enabled: "Email calendar updates are enabled. All participants will receive updated invites via email when you make changes." my_account: @@ -688,8 +688,8 @@ cs: created_dialog: token/ical_meeting: title: "An iCal meeting subscription token has been generated" - body: "Treat the following URL as you would a password. Anyone who has access to it can view all your meetings." + body: "S následující adresou URL zacházejte jako s heslem. Každý, kdo k němu má přístup, může zobrazit všechny vaše schůzky." revocation: token/ical_meeting: - notice_success: "The iCalendar meeting subscription has been revoked successfully." - notice_failure: "Failed to revoke iCalendar meeting subscription: %{error}" + notice_success: "Odběr schůzek iCalendar byl úspěšně zrušen." + notice_failure: "Nepodařilo se zrušit odběr schůzek iCalendar: %{error}" diff --git a/modules/meeting/config/locales/crowdin/ja.yml b/modules/meeting/config/locales/crowdin/ja.yml index 4c390388639..1ff4299f265 100644 --- a/modules/meeting/config/locales/crowdin/ja.yml +++ b/modules/meeting/config/locales/crowdin/ja.yml @@ -117,8 +117,8 @@ ja: error_notification_with_errors: "通知を送信できませんでした。次の受信者には通知できませんでした: %{recipients}" label_meeting: "会議" label_meeting_plural: "会議" - label_meeting_templates: "Templates" - label_meeting_template: "Template" + label_meeting_templates: "テンプレート" + label_meeting_template: "テンプレート" label_meeting_template_new: "New template" label_meeting_template_create: "Create template" label_meeting_template_delete: "Delete template" diff --git a/modules/openid_connect/config/locales/crowdin/af.yml b/modules/openid_connect/config/locales/crowdin/af.yml index b988dee013d..c8849a3e643 100644 --- a/modules/openid_connect/config/locales/crowdin/af.yml +++ b/modules/openid_connect/config/locales/crowdin/af.yml @@ -49,9 +49,9 @@ af: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/ar.yml b/modules/openid_connect/config/locales/crowdin/ar.yml index 515d95ce23a..ecfda23c986 100644 --- a/modules/openid_connect/config/locales/crowdin/ar.yml +++ b/modules/openid_connect/config/locales/crowdin/ar.yml @@ -49,9 +49,9 @@ ar: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/az.yml b/modules/openid_connect/config/locales/crowdin/az.yml index 1d5fb9e3695..05ad065bcd7 100644 --- a/modules/openid_connect/config/locales/crowdin/az.yml +++ b/modules/openid_connect/config/locales/crowdin/az.yml @@ -49,9 +49,9 @@ az: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/be.yml b/modules/openid_connect/config/locales/crowdin/be.yml index 637e3262898..354162444a6 100644 --- a/modules/openid_connect/config/locales/crowdin/be.yml +++ b/modules/openid_connect/config/locales/crowdin/be.yml @@ -49,9 +49,9 @@ be: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/bg.yml b/modules/openid_connect/config/locales/crowdin/bg.yml index 18f5494ac8e..e076a6ca43b 100644 --- a/modules/openid_connect/config/locales/crowdin/bg.yml +++ b/modules/openid_connect/config/locales/crowdin/bg.yml @@ -49,9 +49,9 @@ bg: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/ca.yml b/modules/openid_connect/config/locales/crowdin/ca.yml index 6926bf5cb11..d17cdff90ee 100644 --- a/modules/openid_connect/config/locales/crowdin/ca.yml +++ b/modules/openid_connect/config/locales/crowdin/ca.yml @@ -49,9 +49,9 @@ ca: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/ckb-IR.yml b/modules/openid_connect/config/locales/crowdin/ckb-IR.yml index bfd2f8de826..22be515d076 100644 --- a/modules/openid_connect/config/locales/crowdin/ckb-IR.yml +++ b/modules/openid_connect/config/locales/crowdin/ckb-IR.yml @@ -49,9 +49,9 @@ ckb-IR: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/cs.yml b/modules/openid_connect/config/locales/crowdin/cs.yml index 20bfd7933e2..f6b73c56f82 100644 --- a/modules/openid_connect/config/locales/crowdin/cs.yml +++ b/modules/openid_connect/config/locales/crowdin/cs.yml @@ -49,9 +49,9 @@ cs: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Zadejte název poskytovatele %{name} pro potvrzení odstranění. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Odstranění poskytovatele SSO je nevratná akce. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Odstranit poskytovatele ze seznamu dostupných poskytovatelů. delete_result_user_count: zero: Tohoto poskytovatele v současné době nepoužívají žádní uživatelé. Není třeba podnikat žádné další kroky. diff --git a/modules/openid_connect/config/locales/crowdin/da.yml b/modules/openid_connect/config/locales/crowdin/da.yml index e9c75d18446..8187e57b5d3 100644 --- a/modules/openid_connect/config/locales/crowdin/da.yml +++ b/modules/openid_connect/config/locales/crowdin/da.yml @@ -49,9 +49,9 @@ da: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/de.yml b/modules/openid_connect/config/locales/crowdin/de.yml index f6da3ddb2a5..49bf1e6f088 100644 --- a/modules/openid_connect/config/locales/crowdin/de.yml +++ b/modules/openid_connect/config/locales/crowdin/de.yml @@ -49,9 +49,9 @@ de: non_object_attribute: "definiert kein JSON-Objekt unter %{attribute}." provider: delete_warning: - input_delete_confirmation: Geben Sie den Namen des SSO-Anbieters %{name} ein, um die Löschung zu bestätigen. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Das Löschen eines SSO-Anbieters ist eine unwiderrufliche Aktion. - provider: 'Sind Sie sicher, dass Sie den SSO-Anbieter %{name} löschen möchten? Um diese Aktion zu bestätigen, geben Sie bitte den Namen des Anbieters in das untenstehende Feld ein. Das hat folgendende Effekte:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Entfernt diese SSO-Anmeldemöglichkeit aus der Liste der verfügbaren Anbieter. delete_result_user_count: zero: Derzeit verwenden keine Benutzer diesen SSO-Anbieter. Es sind keine weiteren Maßnahmen erforderlich. diff --git a/modules/openid_connect/config/locales/crowdin/el.yml b/modules/openid_connect/config/locales/crowdin/el.yml index 1b51410d894..f42831bf106 100644 --- a/modules/openid_connect/config/locales/crowdin/el.yml +++ b/modules/openid_connect/config/locales/crowdin/el.yml @@ -49,9 +49,9 @@ el: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/eo.yml b/modules/openid_connect/config/locales/crowdin/eo.yml index a53f307ac38..33a31b76153 100644 --- a/modules/openid_connect/config/locales/crowdin/eo.yml +++ b/modules/openid_connect/config/locales/crowdin/eo.yml @@ -49,9 +49,9 @@ eo: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/es.yml b/modules/openid_connect/config/locales/crowdin/es.yml index ba522217a7c..df405c602d1 100644 --- a/modules/openid_connect/config/locales/crowdin/es.yml +++ b/modules/openid_connect/config/locales/crowdin/es.yml @@ -49,9 +49,9 @@ es: non_object_attribute: "no define un objeto JSON en %{attribute}." provider: delete_warning: - input_delete_confirmation: Escriba el nombre del proveedor %{name} para confirmar la eliminación. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: La eliminación de un proveedor SSO es una acción irreversible. - provider: '¿Seguro que quiere eliminar el proveedor SSO %{name}? Para confirmar esta acción, introduzca el nombre del proveedor en el campo de abajo, esto hará lo siguiente:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Elimine al proveedor de la lista de proveedores disponibles. delete_result_user_count: zero: Ningún usuario utiliza actualmente este proveedor. No se requiere ninguna acción adicional. diff --git a/modules/openid_connect/config/locales/crowdin/et.yml b/modules/openid_connect/config/locales/crowdin/et.yml index e63a38a39b9..51a6ea2a426 100644 --- a/modules/openid_connect/config/locales/crowdin/et.yml +++ b/modules/openid_connect/config/locales/crowdin/et.yml @@ -49,9 +49,9 @@ et: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/eu.yml b/modules/openid_connect/config/locales/crowdin/eu.yml index 8303dab4aa6..56caead5ffa 100644 --- a/modules/openid_connect/config/locales/crowdin/eu.yml +++ b/modules/openid_connect/config/locales/crowdin/eu.yml @@ -49,9 +49,9 @@ eu: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/fa.yml b/modules/openid_connect/config/locales/crowdin/fa.yml index e69efb69a70..e637a98c401 100644 --- a/modules/openid_connect/config/locales/crowdin/fa.yml +++ b/modules/openid_connect/config/locales/crowdin/fa.yml @@ -49,9 +49,9 @@ fa: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/fi.yml b/modules/openid_connect/config/locales/crowdin/fi.yml index b38d410ea7c..fcb917d04b5 100644 --- a/modules/openid_connect/config/locales/crowdin/fi.yml +++ b/modules/openid_connect/config/locales/crowdin/fi.yml @@ -49,9 +49,9 @@ fi: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/fil.yml b/modules/openid_connect/config/locales/crowdin/fil.yml index c09a5c5c6f2..bfb7a779be4 100644 --- a/modules/openid_connect/config/locales/crowdin/fil.yml +++ b/modules/openid_connect/config/locales/crowdin/fil.yml @@ -49,9 +49,9 @@ fil: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/fr.yml b/modules/openid_connect/config/locales/crowdin/fr.yml index 2da69dd11ac..0f65f6ba5ed 100644 --- a/modules/openid_connect/config/locales/crowdin/fr.yml +++ b/modules/openid_connect/config/locales/crowdin/fr.yml @@ -49,9 +49,9 @@ fr: non_object_attribute: "ne définit pas d'objet JSON à l'adresse %{attribute}." provider: delete_warning: - input_delete_confirmation: Saisissez le nom du fournisseur %{name} pour confirmer la suppression. + input_delete_confirmation_html: Saisissez le nom du fournisseur %{name} pour confirmer la suppression. irreversible_notice: La suppression d'un fournisseur SSO est une action irréversible. - provider: 'Voulez-vous vraiment supprimer le fournisseur SSO %{name} ? Pour confirmer cette action, veuillez saisir le nom du fournisseur dans le champ ci-dessous :' + provider_html: 'Voulez-vous vraiment supprimer le fournisseur SSO %{name} ? Pour confirmer cette action, veuillez saisir le nom du fournisseur dans le champ ci-dessous :' delete_result_1: Supprimez le fournisseur de la liste des fournisseurs disponibles. delete_result_user_count: zero: Aucun utilisateur n'utilise actuellement ce fournisseur. Aucune action supplémentaire n'est requise. diff --git a/modules/openid_connect/config/locales/crowdin/he.yml b/modules/openid_connect/config/locales/crowdin/he.yml index 590fa51a610..01507533a42 100644 --- a/modules/openid_connect/config/locales/crowdin/he.yml +++ b/modules/openid_connect/config/locales/crowdin/he.yml @@ -49,9 +49,9 @@ he: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/hi.yml b/modules/openid_connect/config/locales/crowdin/hi.yml index 16ff74b2055..3f305c0e725 100644 --- a/modules/openid_connect/config/locales/crowdin/hi.yml +++ b/modules/openid_connect/config/locales/crowdin/hi.yml @@ -49,9 +49,9 @@ hi: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/hr.yml b/modules/openid_connect/config/locales/crowdin/hr.yml index 0853b741761..8011bd98e22 100644 --- a/modules/openid_connect/config/locales/crowdin/hr.yml +++ b/modules/openid_connect/config/locales/crowdin/hr.yml @@ -49,9 +49,9 @@ hr: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/hu.yml b/modules/openid_connect/config/locales/crowdin/hu.yml index 4e774a7abc1..4ce03ea9607 100644 --- a/modules/openid_connect/config/locales/crowdin/hu.yml +++ b/modules/openid_connect/config/locales/crowdin/hu.yml @@ -49,9 +49,9 @@ hu: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/id.yml b/modules/openid_connect/config/locales/crowdin/id.yml index 27d57dc9904..75a2b782b96 100644 --- a/modules/openid_connect/config/locales/crowdin/id.yml +++ b/modules/openid_connect/config/locales/crowdin/id.yml @@ -49,9 +49,9 @@ id: non_object_attribute: "tidak mendefinisikan objek JSON di %{attribute}." provider: delete_warning: - input_delete_confirmation: Masukkan nama penyedia %{name} untuk mengonfirmasi penghapusan. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Menghapus penyedia SSO adalah tindakan yang tidak dapat dibatalkan. - provider: 'Apakah Anda yakin ingin menghapus penyedia SSO %{name}? Untuk mengonfirmasi tindakan ini, silakan masukkan nama penyedia di bidang di bawah ini, hal ini akan:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/it.yml b/modules/openid_connect/config/locales/crowdin/it.yml index f96121060ae..ddd8978f969 100644 --- a/modules/openid_connect/config/locales/crowdin/it.yml +++ b/modules/openid_connect/config/locales/crowdin/it.yml @@ -49,9 +49,9 @@ it: non_object_attribute: "non definisce un oggetto JSON in %{attribute}." provider: delete_warning: - input_delete_confirmation: Inserisci il nome del fornitore %{name} per confermare l'eliminazione. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: L'eliminazione di un fornitore SSO è un'operazione irreversibile. - provider: 'Vuoi davvero eliminare il fornitore SSO %{name}? Per confermare questa azione, inserisci il nome del fornitore nel campo sottostante. Ciò facendo:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Rimuovi il fornitore dall'elenco dei fornitori disponibili. delete_result_user_count: zero: Nessun utente sta attualmente utilizzando questo fornitore. Non sono necessarie ulteriori azioni. diff --git a/modules/openid_connect/config/locales/crowdin/ja.yml b/modules/openid_connect/config/locales/crowdin/ja.yml index c4a11ba68eb..a387cd75943 100644 --- a/modules/openid_connect/config/locales/crowdin/ja.yml +++ b/modules/openid_connect/config/locales/crowdin/ja.yml @@ -49,9 +49,9 @@ ja: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: 確認のため、削除するフィルタ名 %{name} を入力します。 + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: ワークパッケージの削除は復元できない操作です。 - provider: 'SSO プロバイダー %{name}を削除してもよろしいですか? このアクションを確認するには、以下のフィールドにプロバイダの名前を入力してください。' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: 利用可能なプロバイダのリストからプロバイダを削除します。 delete_result_user_count: zero: 現在、このプロバイダを使用しているユーザーはいません。これ以上の操作は必要ありません。 diff --git a/modules/openid_connect/config/locales/crowdin/ka.yml b/modules/openid_connect/config/locales/crowdin/ka.yml index b7dee714177..5530893c647 100644 --- a/modules/openid_connect/config/locales/crowdin/ka.yml +++ b/modules/openid_connect/config/locales/crowdin/ka.yml @@ -49,9 +49,9 @@ ka: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/kk.yml b/modules/openid_connect/config/locales/crowdin/kk.yml index b02b8b0f769..df9c6d07bf4 100644 --- a/modules/openid_connect/config/locales/crowdin/kk.yml +++ b/modules/openid_connect/config/locales/crowdin/kk.yml @@ -49,9 +49,9 @@ kk: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/ko.yml b/modules/openid_connect/config/locales/crowdin/ko.yml index 590298033aa..9122a62bca4 100644 --- a/modules/openid_connect/config/locales/crowdin/ko.yml +++ b/modules/openid_connect/config/locales/crowdin/ko.yml @@ -49,9 +49,9 @@ ko: non_object_attribute: "- %{attribute}에서 JSON 개체를 정의하지 않습니다." provider: delete_warning: - input_delete_confirmation: 삭제를 확인하려면 공급자 이름 %{name}(을)를 입력하세요. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: SSO 공급자를 삭제하면 되돌릴 수 없습니다. - provider: 'SSO 공급자 %{name}을(를) 삭제하시겠습니까? 이 작업을 확인하려면 아래 필드에 공급자 이름을 입력하세요. 이렇게 하면 다음과 같이 됩니다.' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: 사용 가능한 공급자 목록에서 공급자를 제거합니다. delete_result_user_count: zero: 현재 이 공급자를 사용하는 사용자가 없습니다. 추가 조치가 필요하지 않습니다. diff --git a/modules/openid_connect/config/locales/crowdin/lt.yml b/modules/openid_connect/config/locales/crowdin/lt.yml index 1111137ec97..1a812d78534 100644 --- a/modules/openid_connect/config/locales/crowdin/lt.yml +++ b/modules/openid_connect/config/locales/crowdin/lt.yml @@ -49,9 +49,9 @@ lt: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/lv.yml b/modules/openid_connect/config/locales/crowdin/lv.yml index 368d06f20bd..fbb6130ba25 100644 --- a/modules/openid_connect/config/locales/crowdin/lv.yml +++ b/modules/openid_connect/config/locales/crowdin/lv.yml @@ -49,9 +49,9 @@ lv: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/mn.yml b/modules/openid_connect/config/locales/crowdin/mn.yml index 02498050588..961765b719f 100644 --- a/modules/openid_connect/config/locales/crowdin/mn.yml +++ b/modules/openid_connect/config/locales/crowdin/mn.yml @@ -49,9 +49,9 @@ mn: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/ms.yml b/modules/openid_connect/config/locales/crowdin/ms.yml index d7de66dbbb7..8886699ff34 100644 --- a/modules/openid_connect/config/locales/crowdin/ms.yml +++ b/modules/openid_connect/config/locales/crowdin/ms.yml @@ -49,9 +49,9 @@ ms: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Masukkan nama pembekal %{name} untuk mengesahkan pemadaman. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Memadamkan pembekal SSO ialah tindakan yang tidak boleh diubah. - provider: 'Adakah anda pasti mahu memadamkan pembekal SSO %{name}? Untuk mengesahkan tindakan ini sila masukkan nama pembekal dalam medan di bawah, ini akan:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Alih keluar pembekal daripada senarai pembekal yang tersedia. delete_result_user_count: zero: Tiada pengguna yang menggunakan penyedia ini pada masa ini. Tiada tindakan lanjut diperlukan. diff --git a/modules/openid_connect/config/locales/crowdin/ne.yml b/modules/openid_connect/config/locales/crowdin/ne.yml index ae1e0d61065..cd6f4b9719b 100644 --- a/modules/openid_connect/config/locales/crowdin/ne.yml +++ b/modules/openid_connect/config/locales/crowdin/ne.yml @@ -49,9 +49,9 @@ ne: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/nl.yml b/modules/openid_connect/config/locales/crowdin/nl.yml index 04bd11791a1..035644327ed 100644 --- a/modules/openid_connect/config/locales/crowdin/nl.yml +++ b/modules/openid_connect/config/locales/crowdin/nl.yml @@ -49,9 +49,9 @@ nl: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Voer de providernaam %{name} in om de verwijdering te bevestigen. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Het verwijderen van een SSO provider is een onomkeerbare actie. - provider: 'Weet u zeker dat u de SSO provider %{name} wilt verwijderen? Voer de naam van de provider in het onderstaande veld in om deze actie te bevestigen, dit wil:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Verwijder de provider uit de lijst met beschikbare providers. delete_result_user_count: zero: Er zijn momenteel geen gebruikers die deze provider gebruiken. Er is geen verdere actie vereist. diff --git a/modules/openid_connect/config/locales/crowdin/no.yml b/modules/openid_connect/config/locales/crowdin/no.yml index 3edc1417716..82da600205e 100644 --- a/modules/openid_connect/config/locales/crowdin/no.yml +++ b/modules/openid_connect/config/locales/crowdin/no.yml @@ -49,9 +49,9 @@ non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/pl.yml b/modules/openid_connect/config/locales/crowdin/pl.yml index a6c01a6fb12..2f2edfa58cb 100644 --- a/modules/openid_connect/config/locales/crowdin/pl.yml +++ b/modules/openid_connect/config/locales/crowdin/pl.yml @@ -49,9 +49,9 @@ pl: non_object_attribute: "nie definiuje obiektu JSON w %{attribute}." provider: delete_warning: - input_delete_confirmation: Wprowadź nazwę dostawcy %{name}, aby potwierdzić usunięcie. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Usunięcie dostawcy SSO jest działaniem nieodwracalnym. - provider: 'Czy na pewno chcesz usunąć dostawcę SSO %{name}? Aby potwierdzić to działanie, wprowadź nazwę dostawcy w polu poniżej, spowoduje to:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Usunięcie dostawcy z listy dostępnych dostawców. delete_result_user_count: zero: Żaden użytkownik nie korzysta obecnie z tego dostawcy. Nie są wymagane żadne dalsze działania. diff --git a/modules/openid_connect/config/locales/crowdin/pt-BR.yml b/modules/openid_connect/config/locales/crowdin/pt-BR.yml index 2c8e4ad5b4f..44bb3acd19b 100644 --- a/modules/openid_connect/config/locales/crowdin/pt-BR.yml +++ b/modules/openid_connect/config/locales/crowdin/pt-BR.yml @@ -49,9 +49,9 @@ pt-BR: non_object_attribute: "não define um objeto JSON em %{attribute}." provider: delete_warning: - input_delete_confirmation: Digite o nome do provedor %{name} para confirmar a exclusão. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Excluir um provedor SSO é uma ação irreversível. - provider: 'Tem certeza de que deseja excluir o provedor SSO %{name}? Para confirmar essa ação, insira o nome do provedor no campo abaixo. Isso irá:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remover o provedor da lista de provedores disponíveis. delete_result_user_count: zero: Nenhum usuário está utilizando este provedor no momento. Não é necessária nenhuma ação adicional. diff --git a/modules/openid_connect/config/locales/crowdin/pt-PT.yml b/modules/openid_connect/config/locales/crowdin/pt-PT.yml index 059d4a3f962..523a796de32 100644 --- a/modules/openid_connect/config/locales/crowdin/pt-PT.yml +++ b/modules/openid_connect/config/locales/crowdin/pt-PT.yml @@ -49,9 +49,9 @@ pt-PT: non_object_attribute: "não define um objeto JSON em %{attribute}." provider: delete_warning: - input_delete_confirmation: Insira o nome do fornecedor %{name} para confirmar a eliminação. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: A eliminação de um fornecedor SSO é uma ação irreversível. - provider: 'Tem a certeza de que pretende eliminar o fornecedor SSO %{name}? Para confirmar esta ação, introduza o nome do fornecedor no campo abaixo, isto irá:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remova o fornecedor da lista de fornecedores disponíveis. delete_result_user_count: zero: Nenhum utilizador está atualmente a utilizar este fornecedor. Não é necessária mais nenhuma ação. diff --git a/modules/openid_connect/config/locales/crowdin/ro.yml b/modules/openid_connect/config/locales/crowdin/ro.yml index 887176bd696..3b9d319101a 100644 --- a/modules/openid_connect/config/locales/crowdin/ro.yml +++ b/modules/openid_connect/config/locales/crowdin/ro.yml @@ -49,9 +49,9 @@ ro: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/ru.yml b/modules/openid_connect/config/locales/crowdin/ru.yml index 3b401f630fb..a4033e4a383 100644 --- a/modules/openid_connect/config/locales/crowdin/ru.yml +++ b/modules/openid_connect/config/locales/crowdin/ru.yml @@ -49,9 +49,9 @@ ru: non_object_attribute: "не определяет JSON объект в %{attribute}." provider: delete_warning: - input_delete_confirmation: Введите имя провайдера %{name} для подтверждения удаления. + input_delete_confirmation_html: Введите имя провайдера %{name} для подтверждения удаления. irreversible_notice: Удаление SSO провайдера является необратимым действием. - provider: 'Вы уверены, что хотите удалить провайдера SSO %{name}? Чтобы подтвердить это действие, пожалуйста, введите имя провайдера в поле ниже, это позволит:' + provider_html: 'Вы уверены, что хотите удалить провайдера SSO %{name}? Чтобы подтвердить это действие, пожалуйста, введите имя провайдера в поле ниже, это позволит:' delete_result_1: Удалить провайдера из списка доступных провайдеров. delete_result_user_count: zero: Нет пользователей в настоящее время с этим провайдером. Никаких дальнейших действий не требуется. diff --git a/modules/openid_connect/config/locales/crowdin/rw.yml b/modules/openid_connect/config/locales/crowdin/rw.yml index 9a7172acab6..887dada48fc 100644 --- a/modules/openid_connect/config/locales/crowdin/rw.yml +++ b/modules/openid_connect/config/locales/crowdin/rw.yml @@ -49,9 +49,9 @@ rw: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/si.yml b/modules/openid_connect/config/locales/crowdin/si.yml index e7542fd2a4c..449e146dc57 100644 --- a/modules/openid_connect/config/locales/crowdin/si.yml +++ b/modules/openid_connect/config/locales/crowdin/si.yml @@ -49,9 +49,9 @@ si: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/sk.yml b/modules/openid_connect/config/locales/crowdin/sk.yml index daa9b7fcdb0..49f8ac013cd 100644 --- a/modules/openid_connect/config/locales/crowdin/sk.yml +++ b/modules/openid_connect/config/locales/crowdin/sk.yml @@ -49,9 +49,9 @@ sk: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/sl.yml b/modules/openid_connect/config/locales/crowdin/sl.yml index 4572865bf0d..21ac020622a 100644 --- a/modules/openid_connect/config/locales/crowdin/sl.yml +++ b/modules/openid_connect/config/locales/crowdin/sl.yml @@ -49,9 +49,9 @@ sl: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/sr.yml b/modules/openid_connect/config/locales/crowdin/sr.yml index 9d5815bcb10..f091aca95c2 100644 --- a/modules/openid_connect/config/locales/crowdin/sr.yml +++ b/modules/openid_connect/config/locales/crowdin/sr.yml @@ -49,9 +49,9 @@ sr: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/sv.yml b/modules/openid_connect/config/locales/crowdin/sv.yml index f4378d62621..4a54cf7e595 100644 --- a/modules/openid_connect/config/locales/crowdin/sv.yml +++ b/modules/openid_connect/config/locales/crowdin/sv.yml @@ -49,9 +49,9 @@ sv: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/th.yml b/modules/openid_connect/config/locales/crowdin/th.yml index 88f59d14d8c..a3949a10f98 100644 --- a/modules/openid_connect/config/locales/crowdin/th.yml +++ b/modules/openid_connect/config/locales/crowdin/th.yml @@ -49,9 +49,9 @@ th: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/tr.yml b/modules/openid_connect/config/locales/crowdin/tr.yml index 3b4f8fd1106..791af0732cc 100644 --- a/modules/openid_connect/config/locales/crowdin/tr.yml +++ b/modules/openid_connect/config/locales/crowdin/tr.yml @@ -49,9 +49,9 @@ tr: non_object_attribute: "%{attribute}adresinde bir JSON nesnesi tanımlamaz." provider: delete_warning: - input_delete_confirmation: Silme işlemini onaylamak için sağlayıcı %{name} ismini girin. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: SSO sağlayıcısını silme geri alınamaz bir işlemdir. - provider: 'SSO sağlayıcısı %{name} silmek istediğinize emin misiniz? İşlemi onaylamak için lütfen sağlayıcının adını aşağıdaki alana giriniz:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Sağlayıcının adını mevcut sağlayıcılardan kaldır. delete_result_user_count: zero: Bu sağlayıcıyı hiçbir kullanıcı kullanmıyor. Ek bir işleme gerek yok. diff --git a/modules/openid_connect/config/locales/crowdin/uk.yml b/modules/openid_connect/config/locales/crowdin/uk.yml index d5853636f3b..d778c946bb9 100644 --- a/modules/openid_connect/config/locales/crowdin/uk.yml +++ b/modules/openid_connect/config/locales/crowdin/uk.yml @@ -49,9 +49,9 @@ uk: non_object_attribute: "не визначає об’єкт JSON в атрибуті «%{attribute}»." provider: delete_warning: - input_delete_confirmation: Введіть ім’я постачальника послуг %{name}, щоб підтвердити видалення. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Видалення постачальника послуг SSO не можна скасувати. - provider: 'Справді видалити постачальника послуг SSO %{name}? Щоб підтвердити цю дію, введіть ім’я постачальника в поле нижче. Після цього:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Вилучіть постачальника послуг зі списку доступних постачальників. delete_result_user_count: zero: Зараз у цього постачальника послуг немає користувачів. Нічого робити не потрібно. diff --git a/modules/openid_connect/config/locales/crowdin/uz.yml b/modules/openid_connect/config/locales/crowdin/uz.yml index 16d609ce522..4557a008186 100644 --- a/modules/openid_connect/config/locales/crowdin/uz.yml +++ b/modules/openid_connect/config/locales/crowdin/uz.yml @@ -49,9 +49,9 @@ uz: non_object_attribute: "does not define a JSON object at %{attribute}." provider: delete_warning: - input_delete_confirmation: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Deleting an SSO provider is an irreversible action. - provider: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Remove the provider from the list of available providers. delete_result_user_count: zero: No users are currently using this provider. No further action is required. diff --git a/modules/openid_connect/config/locales/crowdin/vi.yml b/modules/openid_connect/config/locales/crowdin/vi.yml index 29b1b5db50a..5eb2400cbc9 100644 --- a/modules/openid_connect/config/locales/crowdin/vi.yml +++ b/modules/openid_connect/config/locales/crowdin/vi.yml @@ -49,9 +49,9 @@ vi: non_object_attribute: "không xác định đối tượng JSON tại %{attribute}." provider: delete_warning: - input_delete_confirmation: Nhập tên nhà cung cấp %{name} để xác nhận xóa. + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: Xóa nhà cung cấp SSO là hành động không thể thay đổi được. - provider: 'Bạn có chắc chắn muốn xóa nhà cung cấp SSO %{name} không? Để xác nhận hành động này, vui lòng nhập tên của nhà cung cấp vào trường bên dưới, điều này sẽ:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: Xóa nhà cung cấp khỏi danh sách các nhà cung cấp có sẵn. delete_result_user_count: zero: Không có người dùng hiện đang sử dụng nhà cung cấp này. Không cần thực hiện thêm hành động nào. diff --git a/modules/openid_connect/config/locales/crowdin/zh-CN.yml b/modules/openid_connect/config/locales/crowdin/zh-CN.yml index 4c79f24c7ae..5a68b2965ef 100644 --- a/modules/openid_connect/config/locales/crowdin/zh-CN.yml +++ b/modules/openid_connect/config/locales/crowdin/zh-CN.yml @@ -49,9 +49,9 @@ zh-CN: non_object_attribute: "未在 %{attribute} 中定义 JSON 对象。" provider: delete_warning: - input_delete_confirmation: 输入占位符名称 %{name} 以确认删除。 + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: 删除项目是一个不可逆转的操作。 - provider: '您确定要删除 SSO 提供商 %{name} 吗?要确认此操作,请在下面的字段中输入提供商的名称:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: 从可用的提供商列表中删除提供商。 delete_result_user_count: zero: 目前没有用户正在使用此提供商。无需采取进一步操作。 diff --git a/modules/openid_connect/config/locales/crowdin/zh-TW.yml b/modules/openid_connect/config/locales/crowdin/zh-TW.yml index 77ff2931630..833ddd0d347 100644 --- a/modules/openid_connect/config/locales/crowdin/zh-TW.yml +++ b/modules/openid_connect/config/locales/crowdin/zh-TW.yml @@ -49,9 +49,9 @@ zh-TW: non_object_attribute: "沒有定義 JSON 物件 %{attribute}。" provider: delete_warning: - input_delete_confirmation: 輸入提供者名稱 %{name} 確認刪除。 + input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. irreversible_notice: 刪除 SSO 提供者是不可逆轉的動作。 - provider: '您確定要刪除 SSO 提供者 %{name}? 要確認此動作,請在下面的欄位中輸入提供者的名稱,這將:' + provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:' delete_result_1: 從可用提供者清單中移除提供者。 delete_result_user_count: zero: 目前沒有使用者使用此供應商。不需要採取進一步的行動。 diff --git a/modules/storages/config/locales/crowdin/af.yml b/modules/storages/config/locales/crowdin/af.yml index b28bb59ee62..32cca820a0c 100644 --- a/modules/storages/config/locales/crowdin/af.yml +++ b/modules/storages/config/locales/crowdin/af.yml @@ -203,6 +203,11 @@ af: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ af: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ af: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -407,8 +412,7 @@ af: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -516,7 +520,7 @@ af: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/ar.yml b/modules/storages/config/locales/crowdin/ar.yml index 748f12662da..c688aae3b21 100644 --- a/modules/storages/config/locales/crowdin/ar.yml +++ b/modules/storages/config/locales/crowdin/ar.yml @@ -203,6 +203,11 @@ ar: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ ar: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -403,7 +408,7 @@ ar: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -415,8 +420,7 @@ ar: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -524,7 +528,7 @@ ar: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/az.yml b/modules/storages/config/locales/crowdin/az.yml index 99a1caa5947..d0bda8aaeb9 100644 --- a/modules/storages/config/locales/crowdin/az.yml +++ b/modules/storages/config/locales/crowdin/az.yml @@ -203,6 +203,11 @@ az: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ az: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ az: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -407,8 +412,7 @@ az: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -516,7 +520,7 @@ az: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/be.yml b/modules/storages/config/locales/crowdin/be.yml index 8bd71dbceb2..15f048ec23b 100644 --- a/modules/storages/config/locales/crowdin/be.yml +++ b/modules/storages/config/locales/crowdin/be.yml @@ -203,6 +203,11 @@ be: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ be: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -399,7 +404,7 @@ be: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -411,8 +416,7 @@ be: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -520,7 +524,7 @@ be: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/bg.yml b/modules/storages/config/locales/crowdin/bg.yml index 1f7e130df70..8fe584095aa 100644 --- a/modules/storages/config/locales/crowdin/bg.yml +++ b/modules/storages/config/locales/crowdin/bg.yml @@ -203,6 +203,11 @@ bg: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ bg: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ bg: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -407,8 +412,7 @@ bg: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -516,7 +520,7 @@ bg: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/ca.yml b/modules/storages/config/locales/crowdin/ca.yml index a06891cbc2e..74d30cd1f2b 100644 --- a/modules/storages/config/locales/crowdin/ca.yml +++ b/modules/storages/config/locales/crowdin/ca.yml @@ -203,6 +203,11 @@ ca: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ ca: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ ca: host: Si us plau, afegeix l'adreça d'allotjament del teu emmagatzematge incloent el https://. No pot més llarg de 255 caràcters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Dona un nom al teu emmagatzematge per tal que els usuaris el puguin diferenciar d'altres. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Administració Nextcloud / OpenProject @@ -407,8 +412,7 @@ ca: no_specific_folder: Per defecte, cada usuari començarà a la seva carpeta d'inici en carregar un fitxer. no_storage_set_up: No hi ha emmagatzematges de fitxers configurats encara. not_logged_into_storage: Per seleccionar una carpeta de projecte, si us plau inicia sessió primer. - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -516,7 +520,7 @@ ca: members_connection_status: Members connection status new: Afegeix un emmagatzematge de fitxers a aquest projecte project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/ckb-IR.yml b/modules/storages/config/locales/crowdin/ckb-IR.yml index 813a87713e2..84515e69565 100644 --- a/modules/storages/config/locales/crowdin/ckb-IR.yml +++ b/modules/storages/config/locales/crowdin/ckb-IR.yml @@ -203,6 +203,11 @@ ckb-IR: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ ckb-IR: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ ckb-IR: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -407,8 +412,7 @@ ckb-IR: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -516,7 +520,7 @@ ckb-IR: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/cs.yml b/modules/storages/config/locales/crowdin/cs.yml index 052866f7691..bb2b4731fc1 100644 --- a/modules/storages/config/locales/crowdin/cs.yml +++ b/modules/storages/config/locales/crowdin/cs.yml @@ -24,7 +24,7 @@ cs: storages/sharepoint_storage: host: Sharepoint Site URL library: Library ID - name: 'Název:' + name: Název site: Site ID storages/storage: authentication_method: Authentication Method @@ -115,7 +115,7 @@ cs: rename_project_folder: 'Přejmenovat spravovanou složku projektu:' sharepoint_sync_service: create_folder: 'Managed Project Folder Creation:' - ensure_root_folder_permissions: 'Nastavit základní oprávnění složky:' + ensure_root_folder_permissions: 'Nastavit oprávnění základní složky:' hide_inactive_folders: 'Hide Inactive Folders Step:' remote_folders: 'Read contents of the drive root folder:' rename_project_folder: 'Přejmenovat spravovanou složku projektu:' @@ -146,7 +146,7 @@ cs: permission_not_set: nelze nastavit oprávnění na %{path}. remote_folders: not_allowed: The %{username} doesn't have access to the %{group_folder} folder. Please check the folder permissions on Nextcloud. - not_found: "%{group_folder} folder wasn't found. Please check your Nextcloud setup." + not_found: "Složka %{group_folder} nebyla nalezena. Zkontrolujte prosím nastavení Nextcloudu." remove_user_from_group: conflict: 'The user %{user} could not be removed from the %{group} group for the following reason: %{reason}' failed_to_remove: 'The user %{user} could not be removed from the %{group} group for the following reason: %{reason}' @@ -160,7 +160,7 @@ cs: group_does_not_exist: "%{group} neexistuje. Zkontrolujte konfiguraci vaší instance Nextcloudu." insufficient_privileges: OpenProject does not have enough privileges to add %{user} to %{group}. Check you group settings in Nextcloud. not_allowed: Nextcloud blokuje požadavek. - not_found: OpenProject could not find the file on the Nextcloud Storage Provider. Please check if it wasn't deleted. + not_found: OpenProject nemohl najít soubor v úložišti Nextcloud Storage Provider. Zkontrolujte, zda nebyl odstraněn. unauthorized: OpenProject nelze synchronizovat s Nextcloudem. Zkontrolujte prosím konfiguraci úložiště a Nextcloudu. user_does_not_exist: "%{user} neexistuje v Nextcloudu." one_drive_sync_service: @@ -190,19 +190,24 @@ cs: hide_inactive_folders: permission_not_set: nelze nastavit oprávnění na %{path}. rename_project_folder: - conflict: OpenProject nemůže přejmenovat složku %{current_path} na %{project_folder_name} jako složku se stejným názvem již existuje + conflict: OpenProject nemohl přejmenovat složku %{current_path} na %{project_folder_name}, protože složka se stejným názvem již existuje forbidden: OpenProject does not have access to %{current_path} in order to rename it. - not_found: "%{current_path} nebyl nalezen." + not_found: "%{current_path} nebylo nalezeno." set_folders_permissions: - permission_not_set: nelze nastavit oprávnění na %{path}. + permission_not_set: nepodařilo se nastavit oprávnění na %{path}. error: An unexpected error occurred. Please ensure that OneDrive is reachable and check OpenProject worker logs for more information not_allowed: Aplikaci OpenProject nebyl povolen přístup k vaší jednotce OneDrive. Zkontrolujte prosím oprávnění nastavená v aplikaci Azure. not_found: OpenProject could not access your library %{drive_name}. Please check you Sharepoint site document libraries. - unauthorized: OpenProject se nepodařilo synchronizovat s OneDrive. Zkontrolujte prosím konfiguraci úložiště a aplikace Azure + unauthorized: Aplikaci OpenProject se nepodařilo synchronizovat s OneDrive. Zkontrolujte prosím konfiguraci úložiště a aplikace Azure. user_does_not_exist: "%{user} neexistuje v Nextcloudu." upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Hotovo, pokračovat open_storage: Otevřít soubor v úložišti @@ -221,13 +226,13 @@ cs: confirm_replace_oauth_application: Tato akce obnoví aktuální OAuth přihlašovací údaje. Po potvrzení budete muset znovu zadat přihlašovací údaje u poskytovatele úložiště a všichni vzdálení uživatelé budou muset znovu autorizovat proti OpenProject Jste si jisti, že chcete pokračovat? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -238,7 +243,7 @@ cs: error_invalid_provider_type: Vyberte prosím platného poskytovatele úložiště. file_storage_view: access_management: - automatic_management: Enable automatically-managed access and folders + automatic_management: Povolit automaticky spravovaný přístup a složky automatic_management_description: Each project will be able to decide, when a storage is added to it, whether they want the automatically-managed or the manual approach to folder and access management. description: OpenProject can automatically create and manage project folders when a file storage is added to a project. This can result in a more organized folder structure and straightforward access management that guarantees access to all relevant users. manual_management: Only allow manually-managed access and folders @@ -399,7 +404,7 @@ cs: host: Přidejte prosím adresu hostitele vašeho úložiště obsahující https://. Nemělo by být delší než 255 znaků. managed_project_folders_application_password_caption: 'Povolit automatické spravování složek kopírováním této hodnoty z: %{provider_type_link}.' name: Dejte svému úložišti jméno, aby uživatelé mohli rozlišovat mezi více úložišti. - new_storage: Přečtěte si dokumentaci na nastavení integrace %{provider_name} úložiště souborů pro více informací. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: aplikace „Integration OpenProject“ integration: Nextcloud Administrace / OpenProject @@ -411,8 +416,7 @@ cs: no_specific_folder: Ve výchozím nastavení bude každý uživatel ve své vlastní domovské složce, když nahrajou soubor. no_storage_set_up: Dosud nejsou nastaveny žádné úložiště souborů. not_logged_into_storage: Pro výběr složky projektu se prosím nejprve přihlaste - oauth_application_details: Tajná hodnota klienta nebude po zavření tohoto okna přístupná. Zkopírujte prosím tyto hodnoty do %{oauth_application_details_link}. - oauth_application_details_link_text: Nastavení Nextcloud OpenProject integrace + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Kopírovat URI přesměrování @@ -519,7 +523,7 @@ cs: members_connection_status: Stav připojení členů new: Přidat úložiště souborů k tomuto projektu project_storage_members: - subtitle: Zkontrolujte stav připojení úložiště %{storage_name_link} všech členů projektu. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Stav připojení členů project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/da.yml b/modules/storages/config/locales/crowdin/da.yml index 90153e877a4..593158a48da 100644 --- a/modules/storages/config/locales/crowdin/da.yml +++ b/modules/storages/config/locales/crowdin/da.yml @@ -203,6 +203,11 @@ da: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ da: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ da: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -407,8 +412,7 @@ da: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -516,7 +520,7 @@ da: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/de.yml b/modules/storages/config/locales/crowdin/de.yml index 52a0cf0a924..d684d711e5b 100644 --- a/modules/storages/config/locales/crowdin/de.yml +++ b/modules/storages/config/locales/crowdin/de.yml @@ -203,6 +203,11 @@ de: upload_link_service: not_found: Der Zielordner %{folder} konnte nicht auf %{storage_name} gefunden werden. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Fertig, Fortfahren open_storage: Dateispeicher öffnen @@ -221,13 +226,13 @@ de: confirm_replace_oauth_application: Diese Aktion setzt die aktuellen OAuth-Anmeldedaten zurück. Nach der Bestätigung müssen Sie die Anmeldedaten beim Speicheranbieter erneut eingeben und alle Remote-Benutzer müssen sich erneut gegenüber OpenProject autorisieren. Sind Sie sicher, dass Sie fortfahren möchten? confirm_replace_oauth_client: Diese Aktion setzt die aktuellen OAuth-Anmeldedaten zurück. Nach der Bestätigung müssen Sie neue Anmeldedaten vom Speicheranbieter eingeben und alle Benutzer müssen sich erneut für %{provider_type} autorisieren. Sind Sie sicher, dass Sie fortfahren möchten? delete_warning: - project_storage: Sind Sie sicher, dass Sie %{file_storage} löschen möchten? project_storage_delete_result_1: Alle Links zu den entsprechenden Dateien und Ordnern werden entfernt project_storage_delete_result_2: Der automatisch verwaltete Projektordner und alle darin enthaltenen Dateien werden gelöscht - storage: Sind Sie sicher, dass Sie %{file_storage} als externen Dateispeicher löschen möchten? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: Der Speicher wird aus allen Projekten, die ihn derzeit verwenden, entfernt storage_delete_result_2: Alle Links zu den entsprechenden Dateien und Ordnern werden entfernt storage_delete_result_3: Der automatisch verwaltete Projektordner und alle darin enthaltenen Dateien werden gelöscht + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Teamordner @@ -395,7 +400,7 @@ de: host: Bitte ergänzen Sie die Host-Adresse Ihres Speichers (einschließlich https://). Sie sollte nicht länger als 255 Zeichen sein. managed_project_folders_application_password_caption: 'Automatisch verwaltete Ordner aktivieren, indem Sie diesen Wert kopieren: %{provider_type_link}.' name: Geben Sie Ihrem Speicher einen Namen, damit Benutzer zwischen mehreren Speichern unterscheiden können. - new_storage: Lesen Sie unsere Dokumentation zur Konfiguration eines %{provider_name} Dateispeichers für weitere Informationen. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: Anwendung „OpenProject Integration“ integration: Nextcloud Administration / OpenProject @@ -407,8 +412,7 @@ de: no_specific_folder: Standardmäßig startet jeder Benutzer in seinem eigenen Home-Ordner, wenn er eine Datei hochlädt. no_storage_set_up: Es sind noch keine Dateispeicher eingerichtet. not_logged_into_storage: Bitte melden Sie sich zunächst an, um einen Projektordner auszuwählen - oauth_application_details: 'Der geheime Client-Schlüssel wird nach dem Schließen dieses Fensters nicht mehr zugänglich sein. Bitte kopieren Sie diese Werte hierher: %{oauth_application_details_link}.' - oauth_application_details_link_text: Nextcloud OpenProject Integrationseinstellungen + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure-Portal copy_redirect_uri: Umleitungs-URI kopieren @@ -515,7 +519,7 @@ de: members_connection_status: Verbindungsstatus der Mitglieder new: Einen Dateispeicher zum Projekt hinzufügen project_storage_members: - subtitle: Überprüfen Sie den Verbindungsstatus für den Speicher- %{storage_name_link} aller Projektmitglieder. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Verbindungsstatus der Mitglieder project_storages: delete: Dateispeicher aus dem Projekt entfernen? diff --git a/modules/storages/config/locales/crowdin/el.yml b/modules/storages/config/locales/crowdin/el.yml index 12b2669b557..3309e7bdd33 100644 --- a/modules/storages/config/locales/crowdin/el.yml +++ b/modules/storages/config/locales/crowdin/el.yml @@ -203,6 +203,11 @@ el: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ el: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ el: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -407,8 +412,7 @@ el: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -516,7 +520,7 @@ el: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/eo.yml b/modules/storages/config/locales/crowdin/eo.yml index 6f0ad947e98..423f9ad4f14 100644 --- a/modules/storages/config/locales/crowdin/eo.yml +++ b/modules/storages/config/locales/crowdin/eo.yml @@ -203,6 +203,11 @@ eo: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ eo: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ eo: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -407,8 +412,7 @@ eo: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -516,7 +520,7 @@ eo: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/es.yml b/modules/storages/config/locales/crowdin/es.yml index 5d8e0c2e60b..0fc207cdd2e 100644 --- a/modules/storages/config/locales/crowdin/es.yml +++ b/modules/storages/config/locales/crowdin/es.yml @@ -203,6 +203,11 @@ es: upload_link_service: not_found: No se ha podido encontrar la carpeta de destino %{folder} en %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Hecho, continuar open_storage: Abrir almacenamiento de archivos @@ -221,13 +226,13 @@ es: confirm_replace_oauth_application: Esta acción restablecerá las credenciales OAuth actuales. Después de confirmar tendrá que volver a introducir las credenciales en el proveedor de almacenamiento y todos los usuarios remotos tendrán que autorizarse contra OpenProject de nuevo. ¿Seguro que desea continuar? confirm_replace_oauth_client: Esta acción restablecerá las credenciales OAuth actuales. Después de confirmar tendrá que introducir nuevas credenciales del proveedor de almacenamiento y todos los usuarios tendrán que autorizarse contra %{provider_type} de nuevo. ¿Seguro que desea continuar? delete_warning: - project_storage: '¿Seguro que deseas eliminar %{file_storage} de este proyecto?' project_storage_delete_result_1: Se eliminarán todos los enlaces a los archivos y carpetas correspondientes project_storage_delete_result_2: La carpeta del proyecto gestionada automáticamente y todos los archivos que contiene se eliminarán - storage: '¿Seguro que deseas eliminar %{file_storage} como almacenamiento externo de archivos?' + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: El almacenamiento se eliminará de todos los proyectos que lo utilizan actualmente storage_delete_result_2: Se eliminarán todos los enlaces a los archivos y carpetas correspondientes storage_delete_result_3: La carpeta del proyecto gestionada automáticamente y todos los archivos que contiene se eliminarán + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Carpetas de equipo @@ -395,7 +400,7 @@ es: host: Por favor añade la dirección de host de tu almacenamiento incluyendo el https://. No debe tener más de 255 caracteres. managed_project_folders_application_password_caption: 'Habilitar carpetas gestionadas automáticamente copiando este valor de: %{provider_type_link}.' name: Dale un nombre a tu almacenamiento para que los usuarios puedan diferenciar entre múltiples almacenamientos. - new_storage: Lea nuestra documentación sobre crear una integración de almacenamiento de archivos de %{provider_name} para más información. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: aplicación “Integración OpenProject” integration: Administración de Nextcloud / OpenProject @@ -407,8 +412,7 @@ es: no_specific_folder: Por defecto, cada usuario comenzará en su propia carpeta de inicio cuando cargue un archivo. no_storage_set_up: Aún no se han configurado los almacenamientos de archivos. not_logged_into_storage: Para seleccionar una carpeta de proyecto, inicie primero la sesión - oauth_application_details: La clave secreta de cliente no será accesible una vez se cierre esta ventana. Por favor, copie estos valores en la configuración de %{oauth_application_details_link} - oauth_application_details_link_text: Configuración de integración de OpenProject Nextcloud + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Portal de Azure copy_redirect_uri: Copiar URI de redirección @@ -515,7 +519,7 @@ es: members_connection_status: Estado de conexión de los miembros new: Añadir un almacenamiento de archivos a este proyecto project_storage_members: - subtitle: Compruebe el estado de conexión del almacenamiento %{storage_name_link} de todos los miembros del proyecto. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Estado de conexión de los miembros project_storages: delete: '¿Quitar el almacenamiento de archivos del proyecto?' diff --git a/modules/storages/config/locales/crowdin/et.yml b/modules/storages/config/locales/crowdin/et.yml index 04e14a57ece..9ba885c19f5 100644 --- a/modules/storages/config/locales/crowdin/et.yml +++ b/modules/storages/config/locales/crowdin/et.yml @@ -203,6 +203,11 @@ et: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ et: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ et: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -407,8 +412,7 @@ et: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -516,7 +520,7 @@ et: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/eu.yml b/modules/storages/config/locales/crowdin/eu.yml index 71b214592a8..1576df64b71 100644 --- a/modules/storages/config/locales/crowdin/eu.yml +++ b/modules/storages/config/locales/crowdin/eu.yml @@ -203,6 +203,11 @@ eu: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ eu: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ eu: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -407,8 +412,7 @@ eu: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -516,7 +520,7 @@ eu: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/fa.yml b/modules/storages/config/locales/crowdin/fa.yml index 345e54afedd..9d4a397d7c7 100644 --- a/modules/storages/config/locales/crowdin/fa.yml +++ b/modules/storages/config/locales/crowdin/fa.yml @@ -203,6 +203,11 @@ fa: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ fa: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ fa: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -407,8 +412,7 @@ fa: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -516,7 +520,7 @@ fa: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/fi.yml b/modules/storages/config/locales/crowdin/fi.yml index d03517b3564..8cfe69e82ed 100644 --- a/modules/storages/config/locales/crowdin/fi.yml +++ b/modules/storages/config/locales/crowdin/fi.yml @@ -203,6 +203,11 @@ fi: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ fi: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ fi: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -407,8 +412,7 @@ fi: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -516,7 +520,7 @@ fi: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/fil.yml b/modules/storages/config/locales/crowdin/fil.yml index e4313441255..205cd36cca5 100644 --- a/modules/storages/config/locales/crowdin/fil.yml +++ b/modules/storages/config/locales/crowdin/fil.yml @@ -203,6 +203,11 @@ fil: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ fil: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ fil: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -407,8 +412,7 @@ fil: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -516,7 +520,7 @@ fil: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/fr.yml b/modules/storages/config/locales/crowdin/fr.yml index 0bd06148587..ec59255bf98 100644 --- a/modules/storages/config/locales/crowdin/fr.yml +++ b/modules/storages/config/locales/crowdin/fr.yml @@ -203,6 +203,11 @@ fr: upload_link_service: not_found: Le dossier de destination %{folder} n'a pas été trouvé sur %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Synchroniser maintenant + sync_queued: Synchronisation en attente. buttons: done_continue: Terminé, continuer open_storage: Ouvrir le stockage de fichiers @@ -221,13 +226,13 @@ fr: confirm_replace_oauth_application: Cette action réinitialisera les informations d'identification OAuth actuelles. Après confirmation, vous devrez saisir de nouvelles informations d'identification auprès du fournisseur de stockage et tous les utilisateurs devront à nouveau s'authentifier sur OpenProject. Êtes-vous sûr de vouloir continuer ? confirm_replace_oauth_client: Cette action réinitialisera les informations d'identification OAuth actuelles. Après confirmation, vous devrez saisir de nouvelles informations d'identification auprès du fournisseur de stockage et tous les utilisateurs devront à nouveau s'authentifier auprès de %{provider_type} . Êtes-vous sûr de vouloir continuer ? delete_warning: - project_storage: Êtes-vous sûr de vouloir retirer %{file_storage} de ce projet ? project_storage_delete_result_1: Tous les liens vers les fichiers et dossiers correspondants seront supprimés project_storage_delete_result_2: Le dossier du projet géré automatiquement et tous les fichiers qu'il contient seront supprimés - storage: Êtes-vous sûr de vouloir supprimer %{file_storage} en tant que stockage de fichiers externes ? + project_storage_html: Êtes-vous sûr de vouloir retirer %{file_storage} de ce projet ? storage_delete_result_1: Le stockage sera retiré de tous les projets qui l'utilisent actuellement. storage_delete_result_2: Tous les liens vers les fichiers et dossiers correspondants seront supprimés storage_delete_result_3: Le dossier du projet géré automatiquement et tous les fichiers qu'il contient seront supprimés. + storage_html: Êtes-vous sûr de vouloir supprimer %{file_storage} en tant que stockage de fichiers externes ? dependencies: nextcloud: group_folders_app: Dossiers d'équipe @@ -324,10 +329,10 @@ fr: nc_oauth_request_not_found: Le point de terminaison pour récupérer l'utilisateur actuellement connecté n'a pas été trouvé. Veuillez vérifier les journaux du serveur pour obtenir plus d'informations. nc_oauth_request_unauthorized: L'utilisateur actuel n'est pas autorisé à accéder à l'espace de stockage de fichiers distant. Veuillez consulter les journaux du serveur pour obtenir plus d'informations. nc_oauth_token_missing: OpenProject ne peut pas tester la communication au niveau utilisateur avec Nextcloud, car l'utilisateur n'a pas encore lié son compte Nextcloud. - nc_project_folder_missing: The previously created project folder for project "%{project}" could not be found. + nc_project_folder_missing: Le dossier de projet précédemment créé pour le projet "%{project}" n'a pas pu être trouvé. nc_team_folder_not_found: Le dossier de l'équipe est introuvable. - nc_unexpected_files: 'Unexpected files found in the managed team folder. For example: %{sample}' - nc_unlinked_project_folders: Not all project folders have been created yet (%{actual} / %{expected}). This can indicate errors during the AMPF background synchronization. + nc_unexpected_files: 'Fichiers inattendus trouvés dans le dossier de l''équipe gérée. Par exemple : %{sample}' + nc_unlinked_project_folders: Tous les dossiers de projet n'ont pas encore été créés (%{actual} / %{expected}). Cela peut indiquer des erreurs lors de la synchronisation en arrière-plan de l'AMPF. nc_userless_access_denied: Le mot de passe de l'application configurée n'est pas valide. not_configured: La connexion n'a pas pu être validée. Veuillez d'abord terminer la configuration. od_client_cant_delete_folder: Le client rencontre des difficultés pour supprimer des dossiers. Veuillez consulter la documentation d'installation de votre espace de stockage. @@ -395,7 +400,7 @@ fr: host: Veuillez ajouter l'adresse d'hôte de votre stockage, y compris le https://. Il ne doit pas dépasser 255 caractères. managed_project_folders_application_password_caption: 'Activez les dossiers gérés automatiquement en copiant cette valeur depuis : %{provider_type_link}.' name: Donnez à votre espace de stockage un nom pour permettre aux utilisateurs de le différencier des autres espaces de stockage. - new_storage: Lisez notre documentation sur la configuration d'une intégration avec %{provider_name} pour le stockage de fichiers pour plus d'informations. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application « Intégration OpenProject» integration: Administration Nextcloud / OpenProject @@ -407,8 +412,7 @@ fr: no_specific_folder: Par défaut, chaque utilisateur démarrera dans son propre dossier d'accueil lorsqu'il téléversera un fichier. no_storage_set_up: Aucun espace de stockage de fichiers n'a été configuré pour le moment. not_logged_into_storage: Pour sélectionner un dossier de projet, veuillez d'abord vous connecter - oauth_application_details: La clé secrète du client ne sera plus accessible après la fermeture de cette fenêtre. Veuillez copier ces valeurs dans %{oauth_application_details_link}. - oauth_application_details_link_text: Paramètres d'intégration avec Nextcloud + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Portal Azure copy_redirect_uri: Copier l'URI de redirection @@ -515,7 +519,7 @@ fr: members_connection_status: Statut de connexion des membres new: Ajouter un stockage de fichiers à ce projet project_storage_members: - subtitle: Vérifiez l'état de la connexion pour l'espace de stockage %{storage_name_link} de tous les membres du projet. + subtitle_html: Vérifiez l'état de la connexion pour l'espace de stockage %{storage_name_link} de tous les membres du projet. title: Statut de connexion des membres project_storages: delete: Supprimer le stockage de fichiers d'un projet ? diff --git a/modules/storages/config/locales/crowdin/he.yml b/modules/storages/config/locales/crowdin/he.yml index ef759a21e2d..7d76941fcb8 100644 --- a/modules/storages/config/locales/crowdin/he.yml +++ b/modules/storages/config/locales/crowdin/he.yml @@ -203,6 +203,11 @@ he: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ he: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -399,7 +404,7 @@ he: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -411,8 +416,7 @@ he: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -520,7 +524,7 @@ he: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/hi.yml b/modules/storages/config/locales/crowdin/hi.yml index 297c71b0cc3..cfc9842adc9 100644 --- a/modules/storages/config/locales/crowdin/hi.yml +++ b/modules/storages/config/locales/crowdin/hi.yml @@ -203,6 +203,11 @@ hi: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ hi: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ hi: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -407,8 +412,7 @@ hi: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -516,7 +520,7 @@ hi: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/hr.yml b/modules/storages/config/locales/crowdin/hr.yml index f10343005e9..bf2bdd09e43 100644 --- a/modules/storages/config/locales/crowdin/hr.yml +++ b/modules/storages/config/locales/crowdin/hr.yml @@ -203,6 +203,11 @@ hr: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ hr: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -397,7 +402,7 @@ hr: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -409,8 +414,7 @@ hr: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -518,7 +522,7 @@ hr: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/hu.yml b/modules/storages/config/locales/crowdin/hu.yml index 45366821369..9d063db5792 100644 --- a/modules/storages/config/locales/crowdin/hu.yml +++ b/modules/storages/config/locales/crowdin/hu.yml @@ -203,6 +203,11 @@ hu: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ hu: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ hu: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -407,8 +412,7 @@ hu: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -516,7 +520,7 @@ hu: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/id.yml b/modules/storages/config/locales/crowdin/id.yml index 41a4cd5d2b9..d48f4c8fc0a 100644 --- a/modules/storages/config/locales/crowdin/id.yml +++ b/modules/storages/config/locales/crowdin/id.yml @@ -203,6 +203,11 @@ id: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ id: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -393,7 +398,7 @@ id: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -405,8 +410,7 @@ id: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -514,7 +518,7 @@ id: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/it.yml b/modules/storages/config/locales/crowdin/it.yml index a8d4059080f..b0f7f22554a 100644 --- a/modules/storages/config/locales/crowdin/it.yml +++ b/modules/storages/config/locales/crowdin/it.yml @@ -203,6 +203,11 @@ it: upload_link_service: not_found: Impossibile trovare la cartella di destinazione %{folder} su %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Fatto, continua open_storage: Apri archivio file @@ -221,13 +226,13 @@ it: confirm_replace_oauth_application: Questa azione reimposterà le credenziali OAuth correnti. Dopo la conferma sarà necessario reinserire le credenziali presso il provider di archiviazione e tutti gli utenti remoti dovranno autorizzarsi nuovamente nei confronti di OpenProject. Vuoi davvero procedere? confirm_replace_oauth_client: Questa azione reimposterà le credenziali OAuth correnti. Dopo la conferma dovrai inserire nuove credenziali dal provider di archiviazione e tutti gli utenti dovranno autorizzare nuovamente %{provider_type}. Vuoi davvero procedere? delete_warning: - project_storage: Vuoi davvero rimuovere %{file_storage} dal progetto? project_storage_delete_result_1: Tutti i link ai file e alle cartelle corrispondenti saranno rimossi project_storage_delete_result_2: La cartella di progetto gestita automaticamente e tutti i file in essa contenuti verranno eliminati - storage: Vuoi davvero eliminare %{file_storage} come archivio file esterno? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: L'archivio verrà rimosso da tutti i progetti che lo stanno usando storage_delete_result_2: Tutti i link ai file e alle cartelle corrispondenti saranno rimossi storage_delete_result_3: La cartella di progetto gestita automaticamente e tutti i file in essa contenuti verranno eliminati + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Cartelle di team @@ -395,7 +400,7 @@ it: host: Aggiungi l'indirizzo host del tuo spazio di archiviazione incluso https://. Non dovrebbe essere più lungo di 255 caratteri. managed_project_folders_application_password_caption: 'Abilita le cartelle gestite automaticamente copiando questo valore da: %{provider_type_link}.' name: Dai al tuo archivio un nome in modo che gli utenti lo possano distinguere tra più archivi. - new_storage: Leggi la nostra documentazione su come creare un'integrazione %{provider_name} di archiviazione file per maggiori informazioni. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: applicazione "Integrazione OpenProject" integration: Nextcloud Administration / OpenProject @@ -407,8 +412,7 @@ it: no_specific_folder: Di default, ogni utente inizierà alla propria cartella home, al caricamento di un file. no_storage_set_up: Ancora nessuna archiviazione di file configurata. not_logged_into_storage: Per selezionare la cartella di un progetto, sei prim pregato di accedere - oauth_application_details: Il valore segreto del client non sarà nuovamente accessibile dopo aver chiuso questa finestra. Copia questi valori nelle %{oauth_application_details_link} - oauth_application_details_link_text: Impostazioni di integrazione Nextcloud OpenProject + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: portale Azure copy_redirect_uri: Copia URI di reindirizzamento @@ -516,7 +520,7 @@ it: members_connection_status: Stato della connessione dei membri new: Aggiungi un archivio file al progetto project_storage_members: - subtitle: Controlla lo stato della connessione per lo spazio di archiviazione %{storage_name_link} di tutti i membri del progetto. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Stato della connessione dei membri project_storages: delete: Rimuovere l'archivio file dal progetto? diff --git a/modules/storages/config/locales/crowdin/ja.yml b/modules/storages/config/locales/crowdin/ja.yml index 3b9839f81ab..f3f8129b2c2 100644 --- a/modules/storages/config/locales/crowdin/ja.yml +++ b/modules/storages/config/locales/crowdin/ja.yml @@ -203,6 +203,11 @@ ja: upload_link_service: not_found: 宛先フォルダ %{folder} が %{storage_name}に見つかりませんでした。 storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: 完了しました。続ける open_storage: ファイルストレージを開く @@ -221,13 +226,13 @@ ja: confirm_replace_oauth_application: この操作で、現在の OAuth 認証情報がリセットされます。確認後、ストレージプロバイダで認証情報を再入力する必要があり、すべてのリモートユーザは OpenProject に対して再度認証する必要があります。本当に進めますか? confirm_replace_oauth_client: この操作により、現在のOAuth認証情報がリセットされます。確認後、ストレージプロバイダから新しい認証情報を入力する必要があり、すべてのユーザーは %{provider_type} に対して再度認証する必要があります。本当に進めますか? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -393,7 +398,7 @@ ja: host: https://を含むストレージのホストアドレスを追加してください。255文字以内にしてください。 managed_project_folders_application_password_caption: '%{provider_type_link} からこの値をコピーすることで、自動管理フォルダを有効にします。' name: ユーザーが複数のストレージを区別できるように、ストレージに名前を付けます。 - new_storage: 詳しくは、 %{provider_name} ファイルストレージ統合の設定に関するドキュメントをお読みください。 + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: アプリケーション "Integration OpenProject" integration: Nextcloudの管理 / OpenProject @@ -405,8 +410,7 @@ ja: no_specific_folder: デフォルトでは、各ユーザーはファイルをアップロードしたときに自分のホームフォルダから開始します。 no_storage_set_up: まだ設定されているファイルストレージがありません。 not_logged_into_storage: プロジェクトフォルダを選択するには、最初にログインしてください - oauth_application_details: クライアントシークレットの値は、このウィンドウを閉じた後は二度とアクセスできなくなります。これらの値を %{oauth_application_details_link}にコピーしてください。 - oauth_application_details_link_text: Nextcloud OpenProjectインテグレーション設定 + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure Portal copy_redirect_uri: リダイレクトURIをコピーする @@ -514,7 +518,7 @@ ja: members_connection_status: 会員の接続状況 new: このプロジェクトにファイルストレージを追加する project_storage_members: - subtitle: 全プロジェクトメンバーのストレージ %{storage_name_link} の接続状態を確認する。 + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: 会員の接続状況 project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/ka.yml b/modules/storages/config/locales/crowdin/ka.yml index c5fbcf72786..c205e205257 100644 --- a/modules/storages/config/locales/crowdin/ka.yml +++ b/modules/storages/config/locales/crowdin/ka.yml @@ -203,6 +203,11 @@ ka: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ ka: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ ka: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -407,8 +412,7 @@ ka: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure-ის პორტალი copy_redirect_uri: Copy redirect URI @@ -516,7 +520,7 @@ ka: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/kk.yml b/modules/storages/config/locales/crowdin/kk.yml index 44e49d37233..b8e0e6388f3 100644 --- a/modules/storages/config/locales/crowdin/kk.yml +++ b/modules/storages/config/locales/crowdin/kk.yml @@ -203,6 +203,11 @@ kk: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ kk: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ kk: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -407,8 +412,7 @@ kk: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -516,7 +520,7 @@ kk: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/ko.yml b/modules/storages/config/locales/crowdin/ko.yml index 5740e8dfe55..4e6864efa56 100644 --- a/modules/storages/config/locales/crowdin/ko.yml +++ b/modules/storages/config/locales/crowdin/ko.yml @@ -203,6 +203,11 @@ ko: upload_link_service: not_found: '%{storage_name}에서 대상 폴더 %{folder}을(를) 찾을 수 없습니다.' storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: 완료, 계속 open_storage: 파일 저장소 열기 @@ -221,13 +226,13 @@ ko: confirm_replace_oauth_application: 이 작업은 현재 OAuth 자격 증명을 재설정합니다. 확인 후 저장소 공급자에서 자격 증명을 다시 입력해야 하며 모든 원격 사용자는 OpenProject에 대해 다시 인증해야 합니다. 계속하시겠습니까? confirm_replace_oauth_client: 이 작업은 현재 OAuth 자격 증명을 재설정합니다. 확인 후 저장소 공급자의 새로운 자격 증명을 입력해야 하며 모든 사용자는 %{provider_type}에 대해 다시 인증해야 합니다. 계속하시겠습니까? delete_warning: - project_storage: 이 프로젝트에서 %{file_storage}을(를) 제거하시겠습니까? project_storage_delete_result_1: 해당 파일 및 폴더에 대한 모든 링크가 제거됩니다 project_storage_delete_result_2: 자동으로 관리되는 프로젝트 폴더 및 이 폴더 내 모든 파일이 삭제됩니다 - storage: 외부 파일 저장소로 사용 중인 %{file_storage}을(를) 삭제하시겠습니까? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: 저장소를 현재 사용 중인 모든 프로젝트에서 이 저장소가 제거됩니다 storage_delete_result_2: 해당 파일 및 폴더에 대한 모든 링크가 제거됩니다 storage_delete_result_3: 자동으로 관리되는 프로젝트 폴더 및 이 폴더 내 모든 파일이 삭제됩니다 + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: 팀 폴더 @@ -393,7 +398,7 @@ ko: host: https://를 포함하여 저장소의 호스트 주소를 추가하세요. 255자 이하여야 합니다. managed_project_folders_application_password_caption: '다음에서 이 값을 복사하여 자동으로 관리되는 폴더 활성화: %{provider_type_link}.' name: 사용자가 여러 저장소 간에 구별할 수 있도록 저장소에 이름을 지정하세요. - new_storage: 자세한 내용은 %{provider_name} 파일 저장소 설정 통합에 대한 문서를 참조하세요. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: 애플리케이션 “Integration OpenProject” integration: Nextcloud 관리/OpenProject @@ -405,8 +410,7 @@ ko: no_specific_folder: 기본적으로 각 사용자는 파일을 업로드할 때 고유한 홈 폴더에서 시작합니다. no_storage_set_up: 아직 파일 저장소가 설정되지 않았습니다. not_logged_into_storage: 프로젝트 폴더를 선택하려면 먼저 로그인하세요 - oauth_application_details: 이 창을 닫으면 클라이언트 비밀 값에 다시 액세스할 수 없습니다. 다음 값을 %{oauth_application_details_link}에 복사하세요. - oauth_application_details_link_text: Nextcloud OpenProject 통합 설정 + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure 포털 copy_redirect_uri: 리디렉션 URI 복사 @@ -513,7 +517,7 @@ ko: members_connection_status: 멤버 연결 상태 new: 이 프로젝트에 파일 저장소 추가 project_storage_members: - subtitle: 모든 프로젝트 멤버의 저장소 %{storage_name_link}에 대한 연결 상태를 확인하세요. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: 멤버 연결 상태 project_storages: delete: 프로젝트에서 파일 저장소를 제거하시겠습니까? diff --git a/modules/storages/config/locales/crowdin/lt.yml b/modules/storages/config/locales/crowdin/lt.yml index 8d2fffc5287..ae749bd6e0c 100644 --- a/modules/storages/config/locales/crowdin/lt.yml +++ b/modules/storages/config/locales/crowdin/lt.yml @@ -203,6 +203,11 @@ lt: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Baigta, tęsti open_storage: Open file storage @@ -221,13 +226,13 @@ lt: confirm_replace_oauth_application: Atlikus šį veiksmą bus iš naujo nustatyti dabartiniai OAuth įgaliojimai. Patvirtinę turėsite iš naujo įvesti įgaliojimus saugyklos teikėjo klientui, o visi nuotoliniai naudotojai turės iš naujo autorizuotis OpenProject. Ar tikrai norite tęsti? confirm_replace_oauth_client: Atlikus šį veiksmą bus iš naujo nustatyti dabartiniai OAuth įgaliojimai. Patvirtinę turėsite įvesti naujus saugojimo paslaugų teikėjo įgaliojimus, o visi naudotojai turės iš naujo atlikti autorizaciją %{provider_type} . Ar tikrai norite tęsti? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -399,7 +404,7 @@ lt: host: Prašome pridėti jūsų saugyklos stoties adresą, įskaitant https://. Jis turi būti ne ilgesnis už 255 simbolius. managed_project_folders_application_password_caption: 'Įjunkite automatiškai valdomus aplankus nukopijuodami šią reikšmę iš: %{provider_type_link}' name: Suteikite jūsų saugyklai pavadinimą, kad naudotojai galėtų atskirti tarp skirtingų saugyklų. - new_storage: Daugiau informacijos rasite mūsų dokumentacijoje apie %{provider_name} failų saugyklos nustatymą ir integraciją. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: aplikacija „Integration OpenProject“ integration: Nextclout Administravimas / OpenProject @@ -411,8 +416,7 @@ lt: no_specific_folder: Pagal nutylėjimą visi naudotojai įkeldami naujus failus pradės savo namų aplanke. no_storage_set_up: Dar nėra nustatyta nei viena failų saugykla. not_logged_into_storage: Prieš parinkdami projekto aplanką turite prisijungti - oauth_application_details: 'Kliento slapta reikšmė daugiau nebebus prieinama po to, kai uždarysite šį langą. Prašome nukopijuoti šias reikšmes į %{oauth_application_details_link}:' - oauth_application_details_link_text: Nextcloud OpenProject integracijos nustatymai + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portalas copy_redirect_uri: Kopijuoti peradresavimo ID @@ -519,7 +523,7 @@ lt: members_connection_status: Narių jungties būsena new: Pridėti failų saugyklą šiam projektui project_storage_members: - subtitle: Patikrinkite saugyklos %{storage_name_link} jungties būseną visiems projekto nariams. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Narių jungties būsena project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/lv.yml b/modules/storages/config/locales/crowdin/lv.yml index df157562a29..444fb112b1a 100644 --- a/modules/storages/config/locales/crowdin/lv.yml +++ b/modules/storages/config/locales/crowdin/lv.yml @@ -203,6 +203,11 @@ lv: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ lv: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -397,7 +402,7 @@ lv: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -409,8 +414,7 @@ lv: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -518,7 +522,7 @@ lv: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/mn.yml b/modules/storages/config/locales/crowdin/mn.yml index 500878f5d56..ed81a152ee1 100644 --- a/modules/storages/config/locales/crowdin/mn.yml +++ b/modules/storages/config/locales/crowdin/mn.yml @@ -203,6 +203,11 @@ mn: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ mn: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ mn: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -407,8 +412,7 @@ mn: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -516,7 +520,7 @@ mn: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/ms.yml b/modules/storages/config/locales/crowdin/ms.yml index 07c68083cb2..529ae6a5a90 100644 --- a/modules/storages/config/locales/crowdin/ms.yml +++ b/modules/storages/config/locales/crowdin/ms.yml @@ -203,6 +203,11 @@ ms: upload_link_service: not_found: Folder destinasi %{folder} tidak dapat ditemui pada %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Selesai, teruskan open_storage: Buka storan fail @@ -221,13 +226,13 @@ ms: confirm_replace_oauth_application: Tindakan ini akan menetapkan semula kelayakan OAuth semasa. Selepas pengesahan, anda perlu masukkan semula kelayakan di penyedia storan dan semua pengguna jauh perlu membenarkan OpenProject sekali lagi. Adakah anda pasti anda mahu teruskan? confirm_replace_oauth_client: Tindakan ini akan menetapkan semula kelayakan OAuth semasa. Selepas pengesahan, anda perlu masukkan semula kelayakan di penyedia storan dan semua pengguna jauh perlu membenarkan %{provider_type} sekali lagi. Adakah anda pasti anda mahu teruskan? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -393,7 +398,7 @@ ms: host: Sila tambah alamat hos storan anda termasuk https://. Ia perlulah mengandungi tidak lebih daripada 255 patah perkataan. managed_project_folders_application_password_caption: 'Benarkan folder yang dikendalikan secara automatik dengan menyalin nilai ini daripada: %{provider_type_link}.' name: Berikan nama kepada storan anda supaya pengguna boleh membezakan ia dengan beberapa storan yang lain. - new_storage: Baca dokumentasi kami tentang menyediakan integrasi storan fail %{provider_name} untuk maklumat lanjut. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: aplikasi "Intergrasi OpenProject" integration: Pentadbiran Nextcloud / OpenProject @@ -405,8 +410,7 @@ ms: no_specific_folder: Secara default, setiap pengguna akan bermula di folder utama mereka apabila ingin memuat naik fail. no_storage_set_up: Tiada storan fail yang disediakan lagi. not_logged_into_storage: Untuk memilih folder projek, sila log masuk dahulu - oauth_application_details: Nilai rahsia pelanggan tidak akan dapat untuk diakses semula setelah menutup laman ini. Sila salin nilai-nilai ini ke %{oauth_application_details_link}. - oauth_application_details_link_text: Tetapan Integrasi Nextcloud OpenProject + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Portal Azure copy_redirect_uri: Salin ubah hala URI @@ -514,7 +518,7 @@ ms: members_connection_status: Status sambungan ahli new: Tambah storan fail ke projek ini project_storage_members: - subtitle: Semak status sambungan untuk storan %{storage_name_link} bagi semua ahli projek. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Status sambungan ahli project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/ne.yml b/modules/storages/config/locales/crowdin/ne.yml index 12e1b811827..ddd07322942 100644 --- a/modules/storages/config/locales/crowdin/ne.yml +++ b/modules/storages/config/locales/crowdin/ne.yml @@ -203,6 +203,11 @@ ne: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ ne: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ ne: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -407,8 +412,7 @@ ne: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -516,7 +520,7 @@ ne: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/nl.yml b/modules/storages/config/locales/crowdin/nl.yml index 53118fc8189..799dd06beb2 100644 --- a/modules/storages/config/locales/crowdin/nl.yml +++ b/modules/storages/config/locales/crowdin/nl.yml @@ -203,6 +203,11 @@ nl: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Gereed, doorgaan open_storage: Open file storage @@ -221,13 +226,13 @@ nl: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ nl: host: Voeg het hostadres van je opslag toe, inclusief de https://. Het mag niet langer dan 255 tekens zijn. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Geef uw opslag een naam zodat gebruikers onderscheid kunnen maken tussen meerdere opslagplaatsen. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud administratie / OpenProject @@ -407,8 +412,7 @@ nl: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: Er zijn nog geen bestandsopslagplaatsen ingesteld. not_logged_into_storage: Om een projectmap te selecteren, moet u eerst inloggen - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -516,7 +520,7 @@ nl: members_connection_status: Verbindingsstatus leden new: Voeg een bestandsopslag toe aan dit project project_storage_members: - subtitle: Controleer de verbindingsstatus voor de opslag %{storage_name_link} van alle projectleden. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Verbindingsstatus leden project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/no.yml b/modules/storages/config/locales/crowdin/no.yml index d36b1352d19..730725aefca 100644 --- a/modules/storages/config/locales/crowdin/no.yml +++ b/modules/storages/config/locales/crowdin/no.yml @@ -203,6 +203,11 @@ upload_link_service: not_found: Målmappen %{folder} ble ikke funnet på %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Ferdig, fortsett open_storage: Open file storage @@ -221,13 +226,13 @@ confirm_replace_oauth_application: Denne handlingen vil tilbakestille gjeldende OAuth legitimasjon. Etter å ha bekreftet vil du måtte skrive inn innloggingsdetaljene hos lagringsleverandøren, og alle eksterne brukere må autorisere mot OpenProject igjen. Er du sikker på at du vil fortsette? confirm_replace_oauth_client: Denne handlingen vil tilbakestille gjeldende OAuth legitimasjon. Etter bekreftelse må du skrive inn ny påloggingsinformasjon fra leverandøren, og alle brukere må autorisere mot %{provider_type} igjen. Er du sikker på at du vil fortsette? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ host: Legg til vertsadressen til lagringsplassen din inkludert https://. Den bør ikke være lengre enn 255 tegn. managed_project_folders_application_password_caption: 'Aktiver automatisk håndterte mapper ved å kopiere denne verdien fra: %{provider_type_link}.' name: Gi lagringsstedet ditt et navn slik at brukere kan skille mellom flere lagringssteder. - new_storage: Les dokumentasjonen vår på om å sette opp %{provider_name} fillagring integrasjon for mer informasjon. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: applikasjon "Integrasjon OpenProject" integration: Nextcloud administrasjon / OpenProject @@ -407,8 +412,7 @@ no_specific_folder: Som standard starter hver bruker på sin egen hjem-mappe når vedkommende laster opp en fil. no_storage_set_up: Det er ingen fillagring satt opp ennå. not_logged_into_storage: Du må logge inn først for å velge en prosjektmappe. - oauth_application_details: Den hemmelige verdien for klienten blir ikke tilgjengelig igjen etter at du har lukket dette vinduet. Kopier disse verdiene inn i %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject integrasjonsinnstillinger + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Kopier omadressering av URI @@ -516,7 +520,7 @@ members_connection_status: Medlemmers tilkoblingsstatus new: Legg til fillagring i dette prosjektet project_storage_members: - subtitle: Sjekk tilkoblingsstatusen for lagringsstedet %{storage_name_link} for alle prosjektmedlemmer. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Medlemmers tilkoblingsstatus project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/pl.yml b/modules/storages/config/locales/crowdin/pl.yml index 85cc52c569b..ffb49a486d3 100644 --- a/modules/storages/config/locales/crowdin/pl.yml +++ b/modules/storages/config/locales/crowdin/pl.yml @@ -203,6 +203,11 @@ pl: upload_link_service: not_found: Folder docelowy %{folder} nie został znaleziony w magazynie %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Gotowe, kontynuuj open_storage: Otwórz magazyn plików @@ -221,13 +226,13 @@ pl: confirm_replace_oauth_application: Ta czynność zresetuje bieżące dane uwierzytelniające OAuth. Po potwierdzeniu będą Państwo musieli ponownie wprowadzić dane uwierzytelniające u dostawcy pamięci masowej, a wszyscy zdalni użytkownicy będą musieli ponownie autoryzować się w OpenProject. Czy na pewno chcą Państwo kontynuować? confirm_replace_oauth_client: Ta czynność spowoduje zresetowanie bieżących poświadczeń OAuth. Po potwierdzeniu będą Państwo musieli wprowadzić nowe dane uwierzytelniające od dostawcy pamięci masowej, a wszyscy użytkownicy będą musieli ponownie autoryzować się na stronie %{provider_type} . Czy na pewno chcą Państwo kontynuować? delete_warning: - project_storage: Czy na pewno chcesz usunąć %{file_storage} z tego projektu? project_storage_delete_result_1: Wszystkie linki do odpowiednich plików i folderów zostaną usunięte project_storage_delete_result_2: Automatycznie zarządzany folder projektu i wszystkie znajdujące się w nim pliki zostaną usunięte - storage: Czy na pewno chcesz usunąć %{file_storage} jako zewnętrzny magazyn plików? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: Magazyn zostanie usunięty ze wszystkich projektów, które obecnie z niego korzystają storage_delete_result_2: Wszystkie linki do odpowiednich plików i folderów zostaną usunięte storage_delete_result_3: Automatycznie zarządzany folder projektu i wszystkie znajdujące się w nim pliki zostaną usunięte + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Foldery zespołu @@ -399,7 +404,7 @@ pl: host: Proszę dodać adres hosta magazynu wraz z https://. Nie powinien być dłuższy niż 255 znaków. managed_project_folders_application_password_caption: 'Włącz automatycznie zarządzane foldery, kopiując tę wartość z: %{provider_type_link}.' name: Nazwij swój magazyn pamięci, aby użytkownicy mogli je rozróżniać, jeśli występuje ich wiele. - new_storage: Aby uzyskać więcej informacji, przeczytaj naszą dokumentację na temat konfigurowania integracji magazynu plików %{provider_name}. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: aplikacji „Integration OpenProject” integration: Administracja Nextcloud / OpenProject @@ -411,8 +416,7 @@ pl: no_specific_folder: Domyślnie każdy użytkownik rozpocznie we własnym folderze domowym po przesłaniu pliku. no_storage_set_up: Nie ma jeszcze skonfigurowanych magazynów plików. not_logged_into_storage: Aby wybrać folder projektu, najpierw się zaloguj - oauth_application_details: Wartość tajnego klucza klienta nie będzie ponownie dostępna po zamknięciu tego okna. Skopiuj te wartości do %{oauth_application_details_link}. - oauth_application_details_link_text: Ustawienia Nextcloud OpenProject Integration + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Portal Azure copy_redirect_uri: Skopiuj identyfikator URI przekierowania @@ -519,7 +523,7 @@ pl: members_connection_status: Status połączenia członków new: Dodaj magazyn plików do tego projektu project_storage_members: - subtitle: Sprawdź status połączenia magazynu %{storage_name_link} wszystkich członków projektu. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Status połączenia członków project_storages: delete: Usunąć magazyn plików z projektu? diff --git a/modules/storages/config/locales/crowdin/pt-BR.yml b/modules/storages/config/locales/crowdin/pt-BR.yml index c23f5735a9b..39df2243ad2 100644 --- a/modules/storages/config/locales/crowdin/pt-BR.yml +++ b/modules/storages/config/locales/crowdin/pt-BR.yml @@ -203,6 +203,11 @@ pt-BR: upload_link_service: not_found: A pasta de destino %{folder} não foi encontrada em %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Pronto, continuar open_storage: Abrir o armazenamento de arquivo @@ -221,13 +226,13 @@ pt-BR: confirm_replace_oauth_application: Esta ação irá redefinir suas credenciais atuais do OAuth. Depois de confirmar, você precisará inserir suas credenciais novamente no provedor de armazenamento, e todos os usuários remotos terão que autorizar o OpenProject novamente. Tem certeza de que deseja continuar? confirm_replace_oauth_client: Esta ação irá redefinir as suas credenciais atuais do OAuth. Após a confirmação, você precisará inserir novas credenciais do provedor de armazenamento e todos os usuários terão que autorizar novamente o acesso em %{provider_type}. Tem certeza de que deseja continuar? delete_warning: - project_storage: Tem certeza de que deseja remover %{file_storage} deste projeto? project_storage_delete_result_1: Todos os links para os arquivos e pastas correspondentes serão removidos project_storage_delete_result_2: A pasta do projeto gerenciada automaticamente e todos os arquivos contidos nela serão excluídos - storage: Tem certeza de que deseja excluir %{file_storage} como armazenamento de arquivos externo? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: O armazenamento será removido de todos os projetos que o utilizam atualmente storage_delete_result_2: Todos os links para os arquivos e pastas correspondentes serão removidos storage_delete_result_3: A pasta do projeto gerenciada automaticamente e todos os arquivos contidos nela serão excluídos + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Pastas da equipe @@ -395,7 +400,7 @@ pt-BR: host: Adicione o endereço do host de seu armazenamento incluindo o https://. Ele não deve ter mais de 255 caracteres. managed_project_folders_application_password_caption: 'Habilitar as pastas gerenciadas automaticamente copiando este valor de: %{provider_type_link}.' name: Dê um nome a seu armazenamento para que os usuários possam diferenciar vários armazenamentos. - new_storage: Para mais informações, leia a nossa documentação sobre configuração de uma integração de armazenamento de arquivos de %{provider_name}. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: aplicativo “Integration OpenProject” integration: Administração de Nextcloud / OpenProject @@ -407,8 +412,7 @@ pt-BR: no_specific_folder: Por padrão, cada usuário começará na sua própria pasta inicial ao carregar arquivos. no_storage_set_up: Ainda não há armazenamento de arquivos configurado. not_logged_into_storage: Para selecionar uma pasta de projeto, primeiro faça login - oauth_application_details: 'O valor secreto do cliente não poderá ser acessado novamente após esta janela ser fechada. Copie estes valores em %{oauth_application_details_link}:' - oauth_application_details_link_text: Configurações de integração do Nextcloud OpenProject + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Portal Azure copy_redirect_uri: Copiar URI de redirecionamento @@ -515,7 +519,7 @@ pt-BR: members_connection_status: Status da conexão dos membros new: Adicionar um armazenamento de arquivos a este projeto project_storage_members: - subtitle: Verifique o status da conexão para o armazenamento %{storage_name_link} de todos os membros do projeto + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Status da conexão dos membros project_storages: delete: Remover o armazenamento de arquivos do projeto? diff --git a/modules/storages/config/locales/crowdin/pt-PT.yml b/modules/storages/config/locales/crowdin/pt-PT.yml index e6c2356933a..cdcfb23ce58 100644 --- a/modules/storages/config/locales/crowdin/pt-PT.yml +++ b/modules/storages/config/locales/crowdin/pt-PT.yml @@ -203,6 +203,11 @@ pt-PT: upload_link_service: not_found: Não foi possível encontrar a pasta de destino %{folder} em %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Concluído, continuar open_storage: Abrir armazenamentos de ficheiros @@ -221,13 +226,13 @@ pt-PT: confirm_replace_oauth_application: Esta ação irá repor as credenciais OAuth atuais. Após a confirmação, terá de voltar a introduzir as credenciais no fornecedor de armazenamento e todos os utilizadores remotos terão de autorizar novamente o OpenProject. Tem a certeza de que pretende continuar? confirm_replace_oauth_client: Esta ação irá repor as credenciais OAuth atuais. Depois de confirmar, terá de introduzir novas credenciais do fornecedor de armazenamento e todos os utilizadores terão de autorizar novamente em %{provider_type}. Tem a certeza de que pretende continuar? delete_warning: - project_storage: Tem a certeza de que quer remover %{file_storage} deste projeto? project_storage_delete_result_1: Todas as ligações para ficheiros e pastas correspondentes serão removidas project_storage_delete_result_2: A pasta do projeto gerida automaticamente e todos os ficheiros nela contidos serão eliminados - storage: Tem a certeza de que quer eliminar %{file_storage} como armazenamento de ficheiros externo? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: O armazenamento será removido de todos os projetos que o utilizam atualmente storage_delete_result_2: Todas as ligações para ficheiros e pastas correspondentes serão removidas storage_delete_result_3: A pasta do projeto gerida automaticamente e todos os ficheiros nela contidos serão eliminados + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Pastas de equipa @@ -395,7 +400,7 @@ pt-PT: host: Adicione o endereço de anfitrião do seu armazenamento, incluindo o https://. Não deve ter mais de 255 caracteres. managed_project_folders_application_password_caption: 'Ativar as pastas geridas automaticamente, copiando este valor de: %{provider_type_link}.' name: Dê um nome ao seu armazenamento para que os utilizadores possam diferenciar vários armazenamentos. - new_storage: Para mais informações, leia a nossa documentação sobre configuração de uma integração de armazenamento de ficheiros de %{provider_name}. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: aplicação "Integração OpenProject" integration: Administração do Nextcloud / OpenProject @@ -407,8 +412,7 @@ pt-PT: no_specific_folder: Por predefinição, cada utilizador irá começar a sua própria pasta pessoal quando carrega um ficheiro. no_storage_set_up: Não há armazenamento de ficheiros configurado. not_logged_into_storage: Para selecionar uma pasta do projeto, primeiro inicie a sessão - oauth_application_details: O valor secreto do cliente não estará acessível novamente após fechar esta janela. Copie esses valores para %{oauth_application_details_link}. - oauth_application_details_link_text: Configurações de integração do Nextcloud OpenProject + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Portal do Azure copy_redirect_uri: Copiar URI de redirecionamento @@ -515,7 +519,7 @@ pt-PT: members_connection_status: Estado da ligação dos membros new: Adicionar um armazenamento de ficheiros a este projeto project_storage_members: - subtitle: Verifique o estado da ligação para o armazenamento %{storage_name_link} de todos os membros do projeto. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Estado da ligação dos membros project_storages: delete: Remover o armazenamento de ficheiros do projeto? diff --git a/modules/storages/config/locales/crowdin/ro.yml b/modules/storages/config/locales/crowdin/ro.yml index f28909c0e97..ca6142b2be5 100644 --- a/modules/storages/config/locales/crowdin/ro.yml +++ b/modules/storages/config/locales/crowdin/ro.yml @@ -203,6 +203,11 @@ ro: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ ro: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -397,7 +402,7 @@ ro: host: Vă rugăm să adăugați adresa de găzduire a spațiului de stocare, inclusiv https://. Nu trebuie să fie mai lungă de 255 de caractere. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Dați un nume stocării pentru ca utilizatorii să poată diferenția între mai multe spațiul de stocare. - new_storage: Citește documentația noastră despre de configurare a integrării fișierului %{provider_name} pentru mai multe informații. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Administrare Nextcloud / OpenProject @@ -409,8 +414,7 @@ ro: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: Nu există încă nici un fișier de stocare configurat. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -518,7 +522,7 @@ ro: members_connection_status: Members connection status new: Adaugă un fișier de stocare în acest proiect project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/ru.yml b/modules/storages/config/locales/crowdin/ru.yml index 7e8a96aecee..2638c73db92 100644 --- a/modules/storages/config/locales/crowdin/ru.yml +++ b/modules/storages/config/locales/crowdin/ru.yml @@ -203,6 +203,11 @@ ru: upload_link_service: not_found: Папка %{folder} не найдена в хранилище %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Готово, продолжить open_storage: Открыть хранилище файлов @@ -221,13 +226,13 @@ ru: confirm_replace_oauth_application: Это действие приведет к сбросу текущих учетных данных OAuth. После подтверждения вам придется повторно ввести учетные данные у поставщика хранилища, и всем удаленным пользователям придется снова авторизоваться в OpenProject. Вы уверены, что хотите продолжить? confirm_replace_oauth_client: Это действие приведет к сбросу текущих учетных данных OAuth. После подтверждения вам нужно будет ввести новые учетные данные от поставщика хранилища, и всем пользователям придется снова авторизоваться в %{provider_type}. Вы уверены, что хотите продолжить? delete_warning: - project_storage: Вы уверены, что хотите удалить %{file_storage} из этого проекта? project_storage_delete_result_1: Все ссылки на соответствующие файлы и папки будут удалены project_storage_delete_result_2: Автоматически управляемая папка проекта и все файлы в ней будут удалены - storage: Вы уверены, что хотите удалить %{file_storage} как внешнее хранилище файлов? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: Хранилище будет удалено из всех проектов, использующих его в настоящее время storage_delete_result_2: Все ссылки на соответствующие файлы и папки будут удалены storage_delete_result_3: Автоматически управляемая папка проекта и все файлы в ней будут удалены + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Папки команды @@ -399,7 +404,7 @@ ru: host: Пожалуйста, добавьте адрес вашего хранилища, включая https://. Он не должен быть длиннее 255 символов. managed_project_folders_application_password_caption: 'Включите автоматические управляемые папки, копируя это значение из: %{provider_type_link}.' name: Дайте вашему хранилищу имя, чтобы пользователи могли различать между несколькими хранилищами. - new_storage: Прочтите нашу документацию по настройке интеграции файлового хранилища %{provider_name} для получения дополнительной информации. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: Приложение «Интеграция OpenProject» integration: Администрирование Nextcloud / OpenProject @@ -411,8 +416,7 @@ ru: no_specific_folder: По умолчанию каждый пользователь при загрузке файла начинает работу со своей собственной домашней папки. no_storage_set_up: Нет настроенных хранилищ файлов. not_logged_into_storage: Чтобы выбрать папку проекта, сначала войдите - oauth_application_details: Секретное значение клиента не будет доступно снова после закрытия этого окна. Пожалуйста, скопируйте эти значения в %{oauth_application_details_link}. - oauth_application_details_link_text: Настройки интеграции Nextcloud OpenProject + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Портал Azure copy_redirect_uri: Копировать перенаправление URI @@ -519,7 +523,7 @@ ru: members_connection_status: Статус подключения участников new: Добавить хранилище файлов в этот проект project_storage_members: - subtitle: Проверьте статус подключения для хранилища %{storage_name_link} всех участников проекта. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Статус подключения участников project_storages: delete: Удалить хранилище файлов из проекта? diff --git a/modules/storages/config/locales/crowdin/rw.yml b/modules/storages/config/locales/crowdin/rw.yml index 1ec973eee78..a5e087970a6 100644 --- a/modules/storages/config/locales/crowdin/rw.yml +++ b/modules/storages/config/locales/crowdin/rw.yml @@ -203,6 +203,11 @@ rw: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ rw: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ rw: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -407,8 +412,7 @@ rw: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -516,7 +520,7 @@ rw: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/si.yml b/modules/storages/config/locales/crowdin/si.yml index daca008ee39..77f141197fe 100644 --- a/modules/storages/config/locales/crowdin/si.yml +++ b/modules/storages/config/locales/crowdin/si.yml @@ -203,6 +203,11 @@ si: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ si: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ si: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -407,8 +412,7 @@ si: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -516,7 +520,7 @@ si: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/sk.yml b/modules/storages/config/locales/crowdin/sk.yml index f3d4b5a32ab..4452d5b334b 100644 --- a/modules/storages/config/locales/crowdin/sk.yml +++ b/modules/storages/config/locales/crowdin/sk.yml @@ -203,6 +203,11 @@ sk: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ sk: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -399,7 +404,7 @@ sk: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -411,8 +416,7 @@ sk: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -520,7 +524,7 @@ sk: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/sl.yml b/modules/storages/config/locales/crowdin/sl.yml index 1b460882ece..6ef58b43cb5 100644 --- a/modules/storages/config/locales/crowdin/sl.yml +++ b/modules/storages/config/locales/crowdin/sl.yml @@ -203,6 +203,11 @@ sl: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ sl: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -399,7 +404,7 @@ sl: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -411,8 +416,7 @@ sl: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -520,7 +524,7 @@ sl: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/sr.yml b/modules/storages/config/locales/crowdin/sr.yml index 304c7d4510e..821e1355a46 100644 --- a/modules/storages/config/locales/crowdin/sr.yml +++ b/modules/storages/config/locales/crowdin/sr.yml @@ -203,6 +203,11 @@ sr: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ sr: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -397,7 +402,7 @@ sr: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -409,8 +414,7 @@ sr: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -518,7 +522,7 @@ sr: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/sv.yml b/modules/storages/config/locales/crowdin/sv.yml index fa3373bca6d..1dfd2473129 100644 --- a/modules/storages/config/locales/crowdin/sv.yml +++ b/modules/storages/config/locales/crowdin/sv.yml @@ -203,6 +203,11 @@ sv: upload_link_service: not_found: Målmappen %{folder} kunde inte hittas på %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Klar, fortsätt open_storage: Öppna fillagring @@ -221,13 +226,13 @@ sv: confirm_replace_oauth_application: Den här åtgärden kommer att återställa de nuvarande OAuth-uppgifterna. Efter att du har bekräftat att du måste ange inloggningsuppgifterna på lagringsleverantören och alla fjärranvändare måste auktorisera mot OpenProject igen. Är du säker du vill fortsätta? confirm_replace_oauth_client: Den här åtgärden kommer att återställa de nuvarande OAuth-uppgifterna. När du har bekräftat att du måste ange nya uppgifter från lagringsleverantören och alla användare måste godkänna %{provider_type} igen. Är du säker du vill fortsätta? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ sv: host: Lägg till värdadressen för din lagring inklusive https://. Den får inte vara längre än 255 tecken. managed_project_folders_application_password_caption: 'Aktivera automatiska hanterade mappar genom att kopiera detta värde från: %{provider_type_link}.' name: Ge ditt lagringsutrymme ett namn så att användarna kan skilja mellan flera lagringsutrymmen. - new_storage: Läs vår dokumentation om konfigurering av en %{provider_name} fillagring integration för mer information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: applikationen ”Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -407,8 +412,7 @@ sv: no_specific_folder: Som standard kommer varje användare att börja i sin egen hemmapp när de laddar upp en fil. no_storage_set_up: Det finns inga fillagringar konfigurerade ännu. not_logged_into_storage: För att välja en projektmapp, vänligen logga in först - oauth_application_details: Klientens hemliga värde kommer inte att vara tillgängligt igen när du stänger detta fönster. Vänligen kopiera dessa värden till %{oauth_application_details_link}. - oauth_application_details_link_text: Inställningar för Nextcloud OpenProject Integration + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Kopiera URI för omdirigering @@ -516,7 +520,7 @@ sv: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/th.yml b/modules/storages/config/locales/crowdin/th.yml index 87735d3236c..331c5260312 100644 --- a/modules/storages/config/locales/crowdin/th.yml +++ b/modules/storages/config/locales/crowdin/th.yml @@ -203,6 +203,11 @@ th: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ th: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -393,7 +398,7 @@ th: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -405,8 +410,7 @@ th: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -514,7 +518,7 @@ th: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/tr.yml b/modules/storages/config/locales/crowdin/tr.yml index 723f543f3c3..d01db53fccc 100644 --- a/modules/storages/config/locales/crowdin/tr.yml +++ b/modules/storages/config/locales/crowdin/tr.yml @@ -203,6 +203,11 @@ tr: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Bitti, devam et open_storage: Dosya depolamayı aç @@ -221,13 +226,13 @@ tr: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ tr: host: 'Lütfen https dahil olmak üzere depolama alanınızın ana bilgisayar adresini ekleyin:' managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Kullanıcıların birden fazla depolama alanı arasında ayrım yapabilmesi için depolama alanınıza bir ad verin. - new_storage: Daha fazla bilgi için %{provider_name} dosya depolama entegrasyonu kurma hakkındaki belgelerimizi okuyun. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: uygulama "OpenProject Entegrasyonu" integration: Nextcloud Yönetimi / OpenProject @@ -407,8 +412,7 @@ tr: no_specific_folder: Varsayılan olarak, her kullanıcı bir dosya yüklediğinde kendi ana klasöründen başlayacaktır. no_storage_set_up: Henüz ayarlanmış dosya deposu yok. not_logged_into_storage: Bir proje klasörü seçmek için lütfen önce giriş yapın - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Entegrasyon ayarları + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portalı copy_redirect_uri: Yönlendirme URI'sini kopyala @@ -516,7 +520,7 @@ tr: members_connection_status: Üye bağlantı durumu new: Bu projeye bir dosya deposu ekle project_storage_members: - subtitle: Tüm proje üyelerinin %{storage_name_link} depolama alanı için bağlantı durumunu kontrol edin. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Üyü bağlantı durumu project_storages: delete: Dosya depolama alanını projeden kaldırın? diff --git a/modules/storages/config/locales/crowdin/uk.yml b/modules/storages/config/locales/crowdin/uk.yml index 8a7822561e2..37d7a7b3415 100644 --- a/modules/storages/config/locales/crowdin/uk.yml +++ b/modules/storages/config/locales/crowdin/uk.yml @@ -203,6 +203,11 @@ uk: upload_link_service: not_found: Теку призначення %{folder} не вдалося знайти на %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Виконано, продовжити open_storage: Відкрити файлове сховище @@ -221,13 +226,13 @@ uk: confirm_replace_oauth_application: Ця дія призведе до скидання поточних облікових даних OAuth. Коли ви підтвердите дію, вам потрібно буде повторно ввести облікові дані в системі постачальника сховища. У такому разі всім віддаленим користувачам знадобиться знову пройти автентифікацію в OpenProject. Продовжити? confirm_replace_oauth_client: Ця дія призведе до скидання поточних облікових даних OAuth. Коли ви підтвердите дію, вам потрібно буде ввести нові облікові дані в системі постачальника сховища. У такому разі всім користувачам знадобиться знову пройти автентифікацію в %{provider_type}. Продовжити? delete_warning: - project_storage: Ви справді хочете вилучити %{file_storage} із цього проєкту? project_storage_delete_result_1: Буде вилучено всі посилання на відповідні файли й папки project_storage_delete_result_2: Буде видалено папку проєкту з автоматичним керуванням і всі файли, що містяться в ній - storage: Ви справді хочете видалити %{file_storage} як зовнішнє файлове сховище? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: Сховище буде видалено з усіх проєктів, які його зараз використовують storage_delete_result_2: Буде вилучено всі посилання на відповідні файли й папки storage_delete_result_3: Буде видалено папку проєкту з автоматичним керуванням і всі файли, що містяться в ній + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Папки команди @@ -399,7 +404,7 @@ uk: host: Додайте адресу хосту для свого сховища, включно з https://. Її довжина не може перевищувати 255 символів. managed_project_folders_application_password_caption: 'Увімкніть папки з автоматичним керуванням, скопіювавши це значення з %{provider_type_link}.' name: Назвіть своє сховище, щоб користувачі могли відрізняти його від інших сховищ. - new_storage: Щою дізнатися більше, ознайомтеся з нашою документацією щодо налаштування інтеграції файлового сховища %{provider_name}. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: Integration OpenProject integration: Адміністрування Nextcloud / OpenProject @@ -411,8 +416,7 @@ uk: no_specific_folder: За замовчуванням кожен користувач, який передасть файл, починатиме роботу у власній головній папці. no_storage_set_up: Файлові сховища поки не створено. not_logged_into_storage: Шоб вибрати папку проєкту, спочатку ввійдіть - oauth_application_details: Секретний ключ клієнта стане недоступним, коли ви закриєте це вікно. Скопіюйте ці значення в %{oauth_application_details_link}. - oauth_application_details_link_text: Налаштування інтеграції Nextcloud OpenProject + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Портал Azure copy_redirect_uri: Копіювати URI переспрямування @@ -520,7 +524,7 @@ uk: members_connection_status: Стан підключення учасників new: Додайте сховище файлів до цього проєкту project_storage_members: - subtitle: Перевірте стан підключення до сховища %{storage_name_link} для всіх учасників проєкту. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Стан підключення учасників project_storages: delete: Вилучити файлове сховище з проєкту? diff --git a/modules/storages/config/locales/crowdin/uz.yml b/modules/storages/config/locales/crowdin/uz.yml index 4eae84ecff5..430572967bc 100644 --- a/modules/storages/config/locales/crowdin/uz.yml +++ b/modules/storages/config/locales/crowdin/uz.yml @@ -203,6 +203,11 @@ uz: upload_link_service: not_found: The destination folder %{folder} could not be found on %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Done, continue open_storage: Open file storage @@ -221,13 +226,13 @@ uz: confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials at the storage provider and all remote users will have to authorize against OpenProject again. Are you sure you want to proceed? confirm_replace_oauth_client: This action will reset the current OAuth credentials. After confirming you will have to enter new credentials from the storage provider and all users will have to authorize against %{provider_type} again. Are you sure you want to proceed? delete_warning: - project_storage: Are you sure you want to remove %{file_storage} from this project? project_storage_delete_result_1: All links to corresponding files and folders will be removed project_storage_delete_result_2: The automatically-managed project folder and all files in it will be deleted - storage: Are you sure you want to delete %{file_storage} as an external file storage? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: The storage will be removed from all projects currently using it storage_delete_result_2: All links to corresponding files and folders will be removed storage_delete_result_3: The automatically-managed project folder and all files in it will be deleted + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Team Folders @@ -395,7 +400,7 @@ uz: host: Please add the host address of your storage including the https://. It should not be longer than 255 characters. managed_project_folders_application_password_caption: 'Enable automatic managed folders by copying this value from: %{provider_type_link}.' name: Give your storage a name so that users can differentiate between multiple storages. - new_storage: Read our documentation on setting up a %{provider_name} file storage integration for more information. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: application “Integration OpenProject” integration: Nextcloud Administration / OpenProject @@ -407,8 +412,7 @@ uz: no_specific_folder: By default, each user will start at their own home folder when they upload a file. no_storage_set_up: There are no file storages set up yet. not_logged_into_storage: To select a project folder, please first login - oauth_application_details: The client secret value will not be accessible again after you close this window. Please copy these values into the %{oauth_application_details_link}. - oauth_application_details_link_text: Nextcloud OpenProject Integration settings + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: Copy redirect URI @@ -516,7 +520,7 @@ uz: members_connection_status: Members connection status new: Add a file storage to this project project_storage_members: - subtitle: Check the connection status for the storage %{storage_name_link} of all project members. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Members connection status project_storages: delete: Remove file storage from project? diff --git a/modules/storages/config/locales/crowdin/vi.yml b/modules/storages/config/locales/crowdin/vi.yml index 597521e54c3..4e743b52e82 100644 --- a/modules/storages/config/locales/crowdin/vi.yml +++ b/modules/storages/config/locales/crowdin/vi.yml @@ -203,6 +203,11 @@ vi: upload_link_service: not_found: Không thể tìm thấy thư mục đích %{folder} trên %{storage_name}. storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: Xong, tiếp tục open_storage: Mở kho lưu trữ tập tin @@ -221,13 +226,13 @@ vi: confirm_replace_oauth_application: Hành động này sẽ đặt lại thông tin xác thực OAuth hiện tại. Sau khi xác nhận, bạn sẽ phải nhập lại thông tin đăng nhập tại nhà cung cấp dịch vụ lưu trữ và tất cả người dùng từ xa sẽ phải ủy quyền lại cho OpenProject. Bạn có chắc chắn muốn tiếp tục không? confirm_replace_oauth_client: Hành động này sẽ đặt lại thông tin xác thực OAuth hiện tại. Sau khi xác nhận, bạn sẽ phải nhập thông tin xác thực mới từ nhà cung cấp bộ nhớ và tất cả người dùng sẽ phải ủy quyền lại cho %{provider_type}. Bạn có chắc chắn muốn tiếp tục không? delete_warning: - project_storage: Bạn có chắc chắn muốn xóa %{file_storage} khỏi dự án này không? project_storage_delete_result_1: Tất cả các liên kết đến các tập tin và thư mục tương ứng sẽ bị xóa project_storage_delete_result_2: Thư mục dự án được quản lý tự động và tất cả các tệp trong đó sẽ bị xóa - storage: Bạn có chắc chắn muốn xóa %{file_storage} làm nơi lưu trữ tệp bên ngoài không? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: Bộ nhớ sẽ bị xóa khỏi tất cả các dự án hiện đang sử dụng nó storage_delete_result_2: Tất cả các liên kết đến các tập tin và thư mục tương ứng sẽ bị xóa storage_delete_result_3: Thư mục dự án được quản lý tự động và tất cả các tệp trong đó sẽ bị xóa + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: Thư mục nhóm @@ -393,7 +398,7 @@ vi: host: Vui lòng thêm địa chỉ máy chủ lưu trữ của bạn bao gồm https://. Nó không được dài hơn 255 ký tự. managed_project_folders_application_password_caption: 'Bật các thư mục được quản lý tự động bằng cách sao chép giá trị này từ: %{provider_type_link}.' name: Đặt tên cho bộ lưu trữ của bạn để người dùng có thể phân biệt giữa nhiều bộ lưu trữ. - new_storage: Đọc tài liệu của chúng tôi về cài đặt tích hợp lưu trữ tệp %{provider_name} để biết thêm thông tin. + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: ứng dụng “Tích hợp OpenProject” integration: Quản trị Nextcloud / OpenProject @@ -405,8 +410,7 @@ vi: no_specific_folder: Theo mặc định, mỗi người dùng sẽ bắt đầu tại thư mục chính của riêng họ khi họ tải tệp lên. no_storage_set_up: Chưa có kho lưu trữ tập tin nào được thiết lập. not_logged_into_storage: Để chọn thư mục dự án, vui lòng đăng nhập trước - oauth_application_details: Giá trị bí mật của máy khách sẽ không thể truy cập lại được sau khi bạn đóng cửa sổ này. Vui lòng sao chép các giá trị này vào %{oauth_application_details_link}. - oauth_application_details_link_text: Cài đặt tích hợp Nextcloud OpenProject + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Cổng thông tin Azure copy_redirect_uri: Sao chép URI chuyển hướng @@ -514,7 +518,7 @@ vi: members_connection_status: Trạng thái kết nối thành viên new: Thêm nơi lưu trữ tệp vào dự án này project_storage_members: - subtitle: Kiểm tra trạng thái kết nối cho bộ lưu trữ %{storage_name_link} của tất cả các thành viên dự án. + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: Trạng thái kết nối thành viên project_storages: delete: Xóa bộ nhớ tệp khỏi dự án? diff --git a/modules/storages/config/locales/crowdin/zh-CN.yml b/modules/storages/config/locales/crowdin/zh-CN.yml index 3f3410abbab..f1c53c97932 100644 --- a/modules/storages/config/locales/crowdin/zh-CN.yml +++ b/modules/storages/config/locales/crowdin/zh-CN.yml @@ -203,6 +203,11 @@ zh-CN: upload_link_service: not_found: '%{storage_name} 上找不到目标文件夹 %{folder} 。' storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: 完成, 继续 open_storage: 打开文件存储 @@ -221,13 +226,13 @@ zh-CN: confirm_replace_oauth_application: 此操作将重置当前的 OAuth 凭据。确认后,您必须在存储提供商处重新输入凭据,并且所有远程用户都必须再次针对 OpenProject 进行授权。您确定要继续吗? confirm_replace_oauth_client: 此操作将重置当前的 OAuth 凭据。确认后,您必须输入存储提供商的新凭据,并且所有用户都必须再次针对 %{provider_type} 进行授权。您确定要继续吗? delete_warning: - project_storage: 确定要从此项目中移除 %{file_storage} 吗? project_storage_delete_result_1: 相应文件和文件夹的所有链接都将被移除 project_storage_delete_result_2: 自动管理的项目文件夹及其中的所有文件都将被删除 - storage: 确定要删除作为外部文件存储空间的 %{file_storage} 吗? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: 该存储空间将从所有当前使用该存储空间的项目中移除 storage_delete_result_2: 相应文件和文件夹的所有链接都将被移除 storage_delete_result_3: 自动管理的项目文件夹及其中的所有文件都将被删除 + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: 团队文件夹 @@ -393,7 +398,7 @@ zh-CN: host: 请添加存储的主机地址,包括 https://。不应超过 255 个字符。 managed_project_folders_application_password_caption: '通过从 %{provider_type_link} 复制该值来启用自动管理的文件夹。' name: 为您的存储命名,以便用户可以区分多个存储。 - new_storage: 请阅读我们关于 设置 %{provider_name} 文件存储集成 的文档以获取更多信息。 + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: 应用“集成OpenProject” integration: Nextcloud 管理/OpenProject @@ -405,8 +410,7 @@ zh-CN: no_specific_folder: 默认情况下,每个用户上传文件时将从自己的主文件夹开始。 no_storage_set_up: 尚未设置文件存储。 not_logged_into_storage: 要选择一个项目文件夹,请先登录 - oauth_application_details: 关闭此窗口后,将无法再次访问客户端密钥值。请将这些值复制到 %{oauth_application_details_link} 。 - oauth_application_details_link_text: Nextcloud OpenProject 集成设置 + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure 门户 copy_redirect_uri: 复制重定向 URI @@ -513,7 +517,7 @@ zh-CN: members_connection_status: 成员连接状态 new: 将文件存储添加到此项目 project_storage_members: - subtitle: 检查所有项目成员的存储区 %{storage_name_link} 的连接状态。 + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: 成员连接状态 project_storages: delete: 是否从项目中移除文件存储空间? diff --git a/modules/storages/config/locales/crowdin/zh-TW.yml b/modules/storages/config/locales/crowdin/zh-TW.yml index 78788b4ad73..069c5dc7d3e 100644 --- a/modules/storages/config/locales/crowdin/zh-TW.yml +++ b/modules/storages/config/locales/crowdin/zh-TW.yml @@ -203,6 +203,11 @@ zh-TW: upload_link_service: not_found: 在 %{storage_name} 上找不到目標資料夾 %{folder}。 storages: + admin: + side_panel: + health_notifications_component: + sync_now: Sync now + sync_queued: Synchronization queued. buttons: done_continue: 完成,繼續 open_storage: 開啟檔案儲存 @@ -221,13 +226,13 @@ zh-TW: confirm_replace_oauth_application: 此操作將重設目前的 OAuth 憑證。 確認後,您必須在儲存空間提供商重新輸入憑證,並且所有遠端使用者都必須再次針對 OpenProject 進行授權。 您確定要繼續嗎? confirm_replace_oauth_client: 此操作將重設目前的 OAuth 憑證。 確認後,您必須輸入儲存提供者的新憑證,並且所有使用者都必須再次針對 %{provider_type} 進行授權。 您確定要繼續嗎? delete_warning: - project_storage: 您確定要從此專案中移除 %{file_storage}? project_storage_delete_result_1: 所有相應檔案和資料夾的連結將被移除 project_storage_delete_result_2: 自動管理的專案資料夾及其中的所有檔案都會刪除 - storage: 您確定要刪除 %{file_storage} 作為外部檔案儲存空間嗎? + project_storage_html: Are you sure you want to remove %{file_storage} from this project? storage_delete_result_1: 儲存空間將從目前使用的所有專案中移除 storage_delete_result_2: 所有相應檔案和資料夾的連結將被移除 storage_delete_result_3: 自動管理的專案資料夾及其中的所有檔案都會刪除 + storage_html: Are you sure you want to delete %{file_storage} as an external file storage? dependencies: nextcloud: group_folders_app: 團隊資料夾 @@ -393,7 +398,7 @@ zh-TW: host: 請添加存儲區的主機地址,包括 https://。不應超過 255 個字符。 managed_project_folders_application_password_caption: '透過從 %{provider_type_link} 複製此值來啟用自動託管資料夾。' name: 為您的存儲區命名,以便用戶可以區分多個存儲區。 - new_storage: 請閱讀有關設定 %{provider_name} 文件儲存整合的文檔,以了解更多資訊。 + new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: 應用程式 “Integration OpenProject” integration: Nextcloud 管理 / OpenProject @@ -405,8 +410,7 @@ zh-TW: no_specific_folder: 預設情況下,每個使用者上傳檔案時都會從自己的主資料夾開始。 no_storage_set_up: 尚未設定檔案儲存區 not_logged_into_storage: 若要選擇項目資料夾,請先登入 - oauth_application_details: 關閉此視窗後,將無法再次存取客戶端密鑰值。請將這些值複製到 %{oauth_application_details_link} 中。 - oauth_application_details_link_text: Nextcloud OpenProject整合設定 + oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure portal copy_redirect_uri: 複製重新導向 URI @@ -514,7 +518,7 @@ zh-TW: members_connection_status: 成員連接狀態 new: 增加一個儲存區至此專案 project_storage_members: - subtitle: 檢查所有專案成員存儲區 %{storage_name_link} 的連線狀態。 + subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. title: 成員連線狀態 project_storages: delete: 從專案中移除檔案儲存空間? diff --git a/modules/two_factor_authentication/config/locales/crowdin/af.yml b/modules/two_factor_authentication/config/locales/crowdin/af.yml index b19c7219c56..38c85c9099f 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/af.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/af.yml @@ -71,8 +71,7 @@ af: error_invalid_settings: "The 2FA strategies you selected are invalid" failed_to_save_settings: "Failed to update 2FA settings: %{message}" admin: - self_edit_path: "To add or modify your own 2FA devices, please go to %{self_edit_link}" - self_edit_link_name: "Two-factor authentication on your account page" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead." no_devices_for_user: "No 2FA device has been registered for this user." all_devices_deleted: "All 2FA devices of this user have been deleted" @@ -119,8 +118,8 @@ af: failed_to_delete: "Failed to delete 2FA device." is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "No 2FA device has been registered for your account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/ar.yml b/modules/two_factor_authentication/config/locales/crowdin/ar.yml index 919ca540b39..934770a7af1 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/ar.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/ar.yml @@ -71,8 +71,7 @@ ar: error_invalid_settings: "The 2FA strategies you selected are invalid" failed_to_save_settings: "Failed to update 2FA settings: %{message}" admin: - self_edit_path: "To add or modify your own 2FA devices, please go to %{self_edit_link}" - self_edit_link_name: "Two-factor authentication on your account page" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead." no_devices_for_user: "No 2FA device has been registered for this user." all_devices_deleted: "All 2FA devices of this user have been deleted" @@ -119,8 +118,8 @@ ar: failed_to_delete: "Failed to delete 2FA device." is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "No 2FA device has been registered for your account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/az.yml b/modules/two_factor_authentication/config/locales/crowdin/az.yml index b21fe3593fe..438a50c24b8 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/az.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/az.yml @@ -71,8 +71,7 @@ az: error_invalid_settings: "The 2FA strategies you selected are invalid" failed_to_save_settings: "Failed to update 2FA settings: %{message}" admin: - self_edit_path: "To add or modify your own 2FA devices, please go to %{self_edit_link}" - self_edit_link_name: "Two-factor authentication on your account page" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead." no_devices_for_user: "No 2FA device has been registered for this user." all_devices_deleted: "All 2FA devices of this user have been deleted" @@ -119,8 +118,8 @@ az: failed_to_delete: "Failed to delete 2FA device." is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "No 2FA device has been registered for your account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/be.yml b/modules/two_factor_authentication/config/locales/crowdin/be.yml index b6066ea1492..b9f68516d77 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/be.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/be.yml @@ -71,8 +71,7 @@ be: error_invalid_settings: "The 2FA strategies you selected are invalid" failed_to_save_settings: "Failed to update 2FA settings: %{message}" admin: - self_edit_path: "To add or modify your own 2FA devices, please go to %{self_edit_link}" - self_edit_link_name: "Two-factor authentication on your account page" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead." no_devices_for_user: "No 2FA device has been registered for this user." all_devices_deleted: "All 2FA devices of this user have been deleted" @@ -119,8 +118,8 @@ be: failed_to_delete: "Failed to delete 2FA device." is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "No 2FA device has been registered for your account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/bg.yml b/modules/two_factor_authentication/config/locales/crowdin/bg.yml index 030a05d6529..f2422e04d4b 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/bg.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/bg.yml @@ -71,8 +71,7 @@ bg: error_invalid_settings: "The 2FA strategies you selected are invalid" failed_to_save_settings: "Failed to update 2FA settings: %{message}" admin: - self_edit_path: "To add or modify your own 2FA devices, please go to %{self_edit_link}" - self_edit_link_name: "Two-factor authentication on your account page" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead." no_devices_for_user: "No 2FA device has been registered for this user." all_devices_deleted: "All 2FA devices of this user have been deleted" @@ -119,8 +118,8 @@ bg: failed_to_delete: "Failed to delete 2FA device." is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "No 2FA device has been registered for your account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/ca.yml b/modules/two_factor_authentication/config/locales/crowdin/ca.yml index c3162e97b3d..79c2772c869 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/ca.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/ca.yml @@ -70,8 +70,7 @@ ca: error_invalid_settings: "Les estratègies de 2FA seleccionades no són vàlides" failed_to_save_settings: "Error en carregar la configuració del 2FA: %{message}" admin: - self_edit_path: "Per afegir o modificar el teu propi dispositiu 2FA, si us plau, ves a %{self_edit_link}" - self_edit_link_name: "Autentificació en dos passos a la pàgina del teu compte" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "Pot ser que no puguis editar els teus propis dispositius 2FA en aquest enllaç. En comptes, ves a El meu compte > Factor de doble autentificació." no_devices_for_user: "No s'ha registrat cap dispositiu 2FA per aquest usuari." all_devices_deleted: "Tots els dispositius 2FA d'aquest usuari s'han eliminat." @@ -117,8 +116,8 @@ ca: failed_to_delete: "Error a l'eliminar dispositiu 2FA." is_default_cannot_delete: "Aquest dispositiu està marcat per defecte i no pot ser eliminat degut a una política de seguretat activa. Marca un altre dispositiu per defecte abans d'eliminar aquest." not_existing: "No s'ha registrat cap dispositiu 2FA amb el teu compte." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/ckb-IR.yml b/modules/two_factor_authentication/config/locales/crowdin/ckb-IR.yml index 6578dfee12a..5778aa18ec7 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/ckb-IR.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/ckb-IR.yml @@ -71,8 +71,7 @@ ckb-IR: error_invalid_settings: "The 2FA strategies you selected are invalid" failed_to_save_settings: "Failed to update 2FA settings: %{message}" admin: - self_edit_path: "To add or modify your own 2FA devices, please go to %{self_edit_link}" - self_edit_link_name: "Two-factor authentication on your account page" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead." no_devices_for_user: "No 2FA device has been registered for this user." all_devices_deleted: "All 2FA devices of this user have been deleted" @@ -119,8 +118,8 @@ ckb-IR: failed_to_delete: "Failed to delete 2FA device." is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "No 2FA device has been registered for your account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/cs.yml b/modules/two_factor_authentication/config/locales/crowdin/cs.yml index ac213809b6a..301d4767d54 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/cs.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/cs.yml @@ -70,8 +70,7 @@ cs: error_invalid_settings: "Strategie 2FA, které jste zvolili jsou neplatné" failed_to_save_settings: "Nepodařilo se aktualizovat nastavení 2FA: %{message}" admin: - self_edit_path: "Chcete-li přidat nebo upravit vaše vlastní 2FA zařízení, přejděte na %{self_edit_link}" - self_edit_link_name: "Dvoufázové ověřování na stránce vašeho účtu" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "Na této cestě nelze upravit vlastní 2FA zařízení. Místo toho přejděte na Můj účet > Dvoufázové ověřování." no_devices_for_user: "Žádné 2FA zařízení není pro tohoto uživatele zaregistrováno." all_devices_deleted: "Byla odstraněna všechna 2FA zařízení tohoto uživatele" @@ -118,11 +117,11 @@ cs: failed_to_delete: "Smazání 2FA zařízení se nezdařilo." is_default_cannot_delete: "Zařízení je označeno jako výchozí a nemůže být odstraněno z důvodu aktivní bezpečnostní politiky. Před smazáním označte jiné zařízení jako výchozí." not_existing: "Žádné 2FA zařízení nebylo zaregistrováno pro váš účet." - 2fa_from_input: Zadejte prosím kód z Vašeho %{device_name} pro ověření Vaší identity. - 2fa_from_webauthn: Uveďte prosím zařízení WebAuthn %{device_name}. Pokud je založeno na USB, nezapomeňte jej připojit a dotknout se jej. Poté klikněte na tlačítko Přihlásit se. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" - description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. + description: Zaregistrujte zařízení FIDO2 (jako YubiKey) nebo zabezpečenou enklávu vašeho mobilního zařízení. further_steps: Po zvolení jména můžete kliknout na tlačítko Pokračovat. Váš prohlížeč vás vyzve, abyste prezentovali vaše WebAuthn zařízení. Až tak učiníte, jste zařízení zaregistrovali. totp: title: "Autentifikátor založený na aplikaci" diff --git a/modules/two_factor_authentication/config/locales/crowdin/da.yml b/modules/two_factor_authentication/config/locales/crowdin/da.yml index fcab1ab2443..00550cf98f0 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/da.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/da.yml @@ -71,8 +71,7 @@ da: error_invalid_settings: "The 2FA strategies you selected are invalid" failed_to_save_settings: "Failed to update 2FA settings: %{message}" admin: - self_edit_path: "To add or modify your own 2FA devices, please go to %{self_edit_link}" - self_edit_link_name: "Two-factor authentication on your account page" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead." no_devices_for_user: "No 2FA device has been registered for this user." all_devices_deleted: "All 2FA devices of this user have been deleted" @@ -119,8 +118,8 @@ da: failed_to_delete: "Failed to delete 2FA device." is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "No 2FA device has been registered for your account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/de.yml b/modules/two_factor_authentication/config/locales/crowdin/de.yml index 3ef9c84dcb8..3ba7bda8006 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/de.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/de.yml @@ -70,8 +70,7 @@ de: error_invalid_settings: "Die ausgewählten 2FA-Strategien sind ungültig" failed_to_save_settings: "Fehler beim Aktualisieren der 2FA-Einstellungen: %{message}" admin: - self_edit_path: "Bitte besuchen Sie %{self_edit_link} zum hinzufügen oder bearbeiten Ihrer eigenen 2FA-Geräte" - self_edit_link_name: "Zwei-Faktor-Authentifizierung auf Ihrer Kontoseite" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "Sie können ihre eigenen 2FA-Geräte nicht auf diese Weise bearbeiten. Gehen sie hierfür auf die Seite Mein Account > Zwei-Faktor-Authentifizierung." no_devices_for_user: "Kein 2FA-Gerät für diesen Nutzer registriert." all_devices_deleted: "Alle 2FA-Geräte dieses Benutzers wurden entfernt" @@ -117,8 +116,8 @@ de: failed_to_delete: "Fehler beim Entfernen des 2FA-Gerätes." is_default_cannot_delete: "Dieses 2FA-Gerät ist das aktuelle Standardgerät und kann aufgrund einer aktiven Sicherheitsrichtlinie nicht entfernt werden. Wechseln Sie das Standardgerät, um dieses Gerät löschen zu können." not_existing: "Kein 2FA-Gerät für Ihren Account registriert." - 2fa_from_input: Bitte geben Sie den Code von Ihrem %{device_name} ein, um Ihre Identität zu bestätigen. - 2fa_from_webauthn: Bitte geben Sie das WebAuthn-Gerät %{device_name} an. Wenn es sich um ein USB-Gerät handelt, schließen Sie es bitte an und berühren Sie es. Klicken Sie anschließend auf die Schaltfläche zum Anmelden. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Registrieren Sie ein FIDO2-Gerät (wie z. B. YubiKey) oder ein Passkey Ihres mobilen Geräts. diff --git a/modules/two_factor_authentication/config/locales/crowdin/el.yml b/modules/two_factor_authentication/config/locales/crowdin/el.yml index 367b9353741..424cdd67129 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/el.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/el.yml @@ -70,8 +70,7 @@ el: error_invalid_settings: "Οι στρατηγικές 2FA που επιλέξατε δεν είναι έγκυρες" failed_to_save_settings: "Αποτυχία ενημέρωσης των ρυθμίσεων 2FA: %{message}" admin: - self_edit_path: "Για να προσθέσετε ή να τροποποιήσετε τις δικές σας συσκευές 2FA, παρακαλούμε πηγαίνετε στο %{self_edit_link}" - self_edit_link_name: "Ταυτοποίηση δύο παραγόντων στη σελίδα λογαριασμού σας" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "Δεν μπορείτε να επεξεργαστείτε τις δικές σας συσκευές 2FA σε αυτό το μονοπάτι. Αντί αυτού πηγαίνετε στο Ο Λογαριασμός μου > Ταυτοποίηση δύο παραγόντων." no_devices_for_user: "Δεν έχουν καταχωρηθεί συσκευές 2FA για αυτόν τον χρήστη." all_devices_deleted: "Όλες οι συσκευές 2FA αυτού του χρήστη έχουν διαγραφεί" @@ -118,8 +117,8 @@ el: failed_to_delete: "Αποτυχία διαγραφής συσκευής 2FA." is_default_cannot_delete: "Η συσκευή έχει οριστεί ως προεπιλεγμένη και δεν μπορεί να διαγραφεί λόγω μιας ενεργής πολιτικής ασφαλείας. Ορίστε μια άλλη συσκευή ως προεπιλογή πριν τη διαγραφή." not_existing: "Δεν έχουν καταχωρηθεί συσκευές 2FA για τον λογαριασμό σας." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/eo.yml b/modules/two_factor_authentication/config/locales/crowdin/eo.yml index 74ce8b18475..fae0f403437 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/eo.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/eo.yml @@ -71,8 +71,7 @@ eo: error_invalid_settings: "The 2FA strategies you selected are invalid" failed_to_save_settings: "Failed to update 2FA settings: %{message}" admin: - self_edit_path: "To add or modify your own 2FA devices, please go to %{self_edit_link}" - self_edit_link_name: "Two-factor authentication on your account page" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead." no_devices_for_user: "No 2FA device has been registered for this user." all_devices_deleted: "All 2FA devices of this user have been deleted" @@ -119,8 +118,8 @@ eo: failed_to_delete: "Failed to delete 2FA device." is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "No 2FA device has been registered for your account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/es.yml b/modules/two_factor_authentication/config/locales/crowdin/es.yml index 3f9eefbe8a1..3951761de2d 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/es.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/es.yml @@ -71,8 +71,7 @@ es: error_invalid_settings: "Las estrategias 2FA que seleccionaste no son válidas" failed_to_save_settings: "Error al actualizar la configuración 2FA: %{message}" admin: - self_edit_path: "Para agregar o modificar sus propios dispositivos 2FA, vaya a %{self_edit_link}" - self_edit_link_name: "Autenticación de dos factores en su página de cuenta" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "No puede editar sus propios dispositivos 2FA en esta ruta. Vaya a Mi cuenta > Autenticación de dos factores en su lugar." no_devices_for_user: "No se ha registrado ningún dispositivo 2FA para este usuario." all_devices_deleted: "Todos los dispositivos 2FA de este usuario han sido eliminados" @@ -119,8 +118,8 @@ es: failed_to_delete: "Error al eliminar el dispositivo 2FA." is_default_cannot_delete: "El dispositivo está marcado como predeterminado y no se puede eliminar debido a una política de seguridad activa. Marque otro dispositivo como predeterminado antes de eliminar." not_existing: "No se ha registrado ningún dispositivo 2FA para su cuenta." - 2fa_from_input: Ingrese el código de su %{device_name} para verificar su identidad. - 2fa_from_webauthn: Indique el dispositivo WebAuthn %{device_name}. Si es USB asegúrese de conectarlo y tocarlo. A continuación, haga clic en el botón de inicio de sesión. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Registre un dispositivo FIDO2 (como YubiKey) o el enclave seguro de su dispositivo móvil. diff --git a/modules/two_factor_authentication/config/locales/crowdin/et.yml b/modules/two_factor_authentication/config/locales/crowdin/et.yml index 17b6c62fc95..fa7e917818e 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/et.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/et.yml @@ -71,8 +71,7 @@ et: error_invalid_settings: "The 2FA strategies you selected are invalid" failed_to_save_settings: "Failed to update 2FA settings: %{message}" admin: - self_edit_path: "To add or modify your own 2FA devices, please go to %{self_edit_link}" - self_edit_link_name: "Two-factor authentication on your account page" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead." no_devices_for_user: "No 2FA device has been registered for this user." all_devices_deleted: "All 2FA devices of this user have been deleted" @@ -119,8 +118,8 @@ et: failed_to_delete: "Failed to delete 2FA device." is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "No 2FA device has been registered for your account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/eu.yml b/modules/two_factor_authentication/config/locales/crowdin/eu.yml index 7a9b56cb8a5..09f6ad3fcd4 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/eu.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/eu.yml @@ -71,8 +71,7 @@ eu: error_invalid_settings: "The 2FA strategies you selected are invalid" failed_to_save_settings: "Failed to update 2FA settings: %{message}" admin: - self_edit_path: "To add or modify your own 2FA devices, please go to %{self_edit_link}" - self_edit_link_name: "Two-factor authentication on your account page" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead." no_devices_for_user: "No 2FA device has been registered for this user." all_devices_deleted: "All 2FA devices of this user have been deleted" @@ -119,8 +118,8 @@ eu: failed_to_delete: "Failed to delete 2FA device." is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "No 2FA device has been registered for your account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/fa.yml b/modules/two_factor_authentication/config/locales/crowdin/fa.yml index daa750e099f..5224ff2b68a 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/fa.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/fa.yml @@ -71,8 +71,7 @@ fa: error_invalid_settings: "The 2FA strategies you selected are invalid" failed_to_save_settings: "Failed to update 2FA settings: %{message}" admin: - self_edit_path: "To add or modify your own 2FA devices, please go to %{self_edit_link}" - self_edit_link_name: "Two-factor authentication on your account page" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead." no_devices_for_user: "No 2FA device has been registered for this user." all_devices_deleted: "All 2FA devices of this user have been deleted" @@ -119,8 +118,8 @@ fa: failed_to_delete: "Failed to delete 2FA device." is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "No 2FA device has been registered for your account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/fi.yml b/modules/two_factor_authentication/config/locales/crowdin/fi.yml index da3e33dbec5..cec737a54d8 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/fi.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/fi.yml @@ -70,8 +70,7 @@ fi: error_invalid_settings: "Valitsemasi kaksivaiheisen tunnistautumisen strategiat eivät kelpää" failed_to_save_settings: "Kaksivaiheisen tunnistautumisen asetusten päivitys epäonnistui: %{message}" admin: - self_edit_path: "Os haluat lisätä tai muokata omia 2FA-laitteitasi, siirry osoitteeseen %{self_edit_link}" - self_edit_link_name: "Kaksivaiheinen tunnistautuminen tiliasetuksissa" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "Et voi muokata omia 2FA-laitteitasi tällä polulla. Siirry Tiliasetukset> Kaksi tekijän todennusta sijaan." no_devices_for_user: "Tätä käyttäjää varten ei ole rekisteröity tunnistuslaitetta." all_devices_deleted: "Tämän käyttäjän kaikki 2FA-laitteet on poistettu" @@ -117,8 +116,8 @@ fi: failed_to_delete: "Tunnistuslaitteen poistaminen epäonnistui" is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "Käyttäjätilillesi ei ole rekisteröity tunnistuslaitetta." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/fil.yml b/modules/two_factor_authentication/config/locales/crowdin/fil.yml index 126157411fd..750603f24fe 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/fil.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/fil.yml @@ -71,8 +71,7 @@ fil: error_invalid_settings: "Ang 2FA na mga deskarte na iyong napili ay walang bisa" failed_to_save_settings: "Bigo na ma-update ang 2FA na mga setting: %{message}" admin: - self_edit_path: "Para magdagdag o bawasan ang iyong sariing 2FA na mga aparato, pakiusap na mag punta sa %{self_edit_link}" - self_edit_link_name: "Ang Dalawang-dahilan ng pagpapatunay sa iyong pahina ng account" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "Hindi mo pwede na baguhin ang iyong sariling 2FA sa landas na ito. Magpunta sa Aking Account > Dalawang-dahilan ng pagpapatunay sa halip." no_devices_for_user: "Walang 2FA na aparato ang na rehistro para sa gumagamit na ito." all_devices_deleted: "Lahat ng 2Fa na mga aparato sa gumagamit na ito ay burado" @@ -119,8 +118,8 @@ fil: failed_to_delete: "Bigo na mabura ang 2FA na aparato." is_default_cannot_delete: "Ang aparato ay namarkahan bilang default at hindi maari na burahin dahil sa aktibo nasiguridad na patakaran, Markahan ng ibang aparato bilang default bago burahin." not_existing: "Walang 2FA na aparato ang narehistro para sa iyong account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/fr.yml b/modules/two_factor_authentication/config/locales/crowdin/fr.yml index 905af4b650d..9540af4ae5f 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/fr.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/fr.yml @@ -70,8 +70,7 @@ fr: error_invalid_settings: "Les stratégies 2FA que vous avez sélectionnées sont invalides" failed_to_save_settings: "Echec de la mise à jour des paramètres 2FA: %{message}" admin: - self_edit_path: "Pour ajouter ou modifier vos propres appareils 2FA, veuillez aller à %{self_edit_link}" - self_edit_link_name: "Authentification à deux facteurs sur votre page de compte" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "Vous ne pouvez pas modifier vos propres appareils 2FA sur ce chemin. Allez dans Mon Compte > Authentification à deux facteurs à la place." no_devices_for_user: "Aucun appareil 2FA n’a été enregistré pour cet utilisateur." all_devices_deleted: "Tous les appareils 2FA de cet utilisateur ont été supprimés" @@ -117,8 +116,8 @@ fr: failed_to_delete: "Impossible de supprimer l'appareil 2FA." is_default_cannot_delete: "Cet appareil est un appareil par défaut, et ne peut être supprimé à d'une politique de sécurité active. Sélectionnez un autre appareil comme appareil par défaut avant de supprimer l'appareil par défaut actuel." not_existing: "Aucun appareil 2FA n’a été enregistré pour votre compte." - 2fa_from_input: Veuillez entrer le code obtenu depuis %{device_name} pour vérifier votre identité. - 2fa_from_webauthn: Veuillez spécifier l'appareil WebAuthn %{device_name}. S'il s'agit d'un périphérique USB, veillez à le brancher et à le toucher. Cliquez ensuite sur le bouton de connexion. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Enregistrez un appareil FIDO2 (comme YubiKey) ou l'enclave sécurisée de votre appareil mobile. diff --git a/modules/two_factor_authentication/config/locales/crowdin/he.yml b/modules/two_factor_authentication/config/locales/crowdin/he.yml index cb06da385b2..c70e4e84b85 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/he.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/he.yml @@ -71,8 +71,7 @@ he: error_invalid_settings: "The 2FA strategies you selected are invalid" failed_to_save_settings: "Failed to update 2FA settings: %{message}" admin: - self_edit_path: "To add or modify your own 2FA devices, please go to %{self_edit_link}" - self_edit_link_name: "Two-factor authentication on your account page" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead." no_devices_for_user: "No 2FA device has been registered for this user." all_devices_deleted: "All 2FA devices of this user have been deleted" @@ -119,8 +118,8 @@ he: failed_to_delete: "Failed to delete 2FA device." is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "No 2FA device has been registered for your account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/hi.yml b/modules/two_factor_authentication/config/locales/crowdin/hi.yml index 8620f6dd86e..b70a233056d 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/hi.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/hi.yml @@ -71,8 +71,7 @@ hi: error_invalid_settings: "The 2FA strategies you selected are invalid" failed_to_save_settings: "Failed to update 2FA settings: %{message}" admin: - self_edit_path: "To add or modify your own 2FA devices, please go to %{self_edit_link}" - self_edit_link_name: "Two-factor authentication on your account page" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead." no_devices_for_user: "No 2FA device has been registered for this user." all_devices_deleted: "All 2FA devices of this user have been deleted" @@ -119,8 +118,8 @@ hi: failed_to_delete: "Failed to delete 2FA device." is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "No 2FA device has been registered for your account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/hr.yml b/modules/two_factor_authentication/config/locales/crowdin/hr.yml index 46f3c1ff003..52945604343 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/hr.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/hr.yml @@ -71,8 +71,7 @@ hr: error_invalid_settings: "The 2FA strategies you selected are invalid" failed_to_save_settings: "Failed to update 2FA settings: %{message}" admin: - self_edit_path: "To add or modify your own 2FA devices, please go to %{self_edit_link}" - self_edit_link_name: "Two-factor authentication on your account page" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead." no_devices_for_user: "No 2FA device has been registered for this user." all_devices_deleted: "All 2FA devices of this user have been deleted" @@ -119,8 +118,8 @@ hr: failed_to_delete: "Failed to delete 2FA device." is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "No 2FA device has been registered for your account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/hu.yml b/modules/two_factor_authentication/config/locales/crowdin/hu.yml index e0b5a232f21..1c27b62853c 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/hu.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/hu.yml @@ -71,8 +71,7 @@ hu: error_invalid_settings: "A kiválasztott 2FA stratégiák érvénytelenek" failed_to_save_settings: "Nem sikerült frissíteni a 2FA beállításokat %{message}" admin: - self_edit_path: "2FA hozzáadásához vagy módosításához kérlek menj a %{self_edit_link}" - self_edit_link_name: "Kétlépcsős azonosítás a fiókoldalán\n" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "Ezen az útvonalon nem tudod szerkeszteni a 2FA-t. Menj a Saját Fiokom > Két faktorú azonosítás menübe" no_devices_for_user: "Nincs regisztrált 2FA eszköze a felhasználónak." all_devices_deleted: "A felhasználó összes 2FA eszköze törölve lett" @@ -119,8 +118,8 @@ hu: failed_to_delete: "Nem sikerült törölni a 2FA eszközt" is_default_cannot_delete: "Az eszköz alapértelmezettként van megjelölve, és nem törölhető egy aktív biztonsági irányelv miatt. Törlés előtt jelöljön meg egy másik eszközt alapértelmezettként" not_existing: "Nincs regisztrál 2FA eszköz ehhez a felhasználóhoz" - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/id.yml b/modules/two_factor_authentication/config/locales/crowdin/id.yml index 722cafb5506..8befa8faf36 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/id.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/id.yml @@ -70,8 +70,7 @@ id: error_invalid_settings: "Strategi 2FA yang Anda pilih tidak sah" failed_to_save_settings: "Gagal untuk memperbarui pengaturan 2FA: %{message}" admin: - self_edit_path: "Untuk menambah atau memodifikasi perangkat 2FA Anda sendiri, silahkan pergi ke %{self_edit_link}" - self_edit_link_name: "Dua faktor otentikasi pada laman akun" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "Anda tidak dapat mengedit perangkat 2FA Anda sendiri di jalan ini. Pergi ke My Account > dua faktor otentikasi sebaliknya." no_devices_for_user: "Tidak ada perangkat 2FA telah terdaftar untuk pengguna ini." all_devices_deleted: "Semua 2FA perangkat pengguna ini telah dihapus" @@ -117,8 +116,8 @@ id: failed_to_delete: "Gagal untuk menghapus perangkat 2FA." is_default_cannot_delete: "Perangkat ini ditandai sebagai default dan tidak dapat dihapus karena kebijakan keamanan aktif. Menandai perangkat lain sebagai default sebelum menghapus." not_existing: "Tidak ada perangkat 2FA telah terdaftar untuk akun Anda." - 2fa_from_input: Silakan masukkan kode dari perangkat Anda %{device_name} untuk memverifikasi identitas Anda. - 2fa_from_webauthn: Silakan sediakan perangkat WebAuthn %{device_name}. Jika perangkat tersebut berbasis USB, pastikan untuk mencolokkannya dan menyentuhnya. Kemudian klik tombol masuk. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Daftarkan perangkat FIDO2 (seperti YubiKey) atau enklaf aman perangkat seluler Anda. diff --git a/modules/two_factor_authentication/config/locales/crowdin/it.yml b/modules/two_factor_authentication/config/locales/crowdin/it.yml index 9771c167d83..d584bb7ba64 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/it.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/it.yml @@ -71,8 +71,7 @@ it: error_invalid_settings: "Le strategie 2FA selezionate non sono valide" failed_to_save_settings: "Impossibile aggiornare le impostazioni 2FA: %{message}" admin: - self_edit_path: "Per aggiungere o modificare i propri dispositivi 2FA, visitare il sito %{self_edit_link}" - self_edit_link_name: "Autenticazione a due fattori sulla pagina del tuo account" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "Non puoi modificare i tuoi dispositivi 2FA su questo percorso. Vai al mio Account > Autenticazione a due fattori." no_devices_for_user: "Nessun dispositivo 2FA è stato registrato per questo utente." all_devices_deleted: "Tutti i dispositivi 2FA di questo utente sono stati eliminati" @@ -119,8 +118,8 @@ it: failed_to_delete: "Impossibile eliminare il dispositivo 2FA." is_default_cannot_delete: "Il dispositivo è contrassegnato come predefinito e non può essere eliminato a causa di una policy di sicurezza attiva. Contrassegna prima un'altro dispositivo come predefinito per poterlo eliminare." not_existing: "Nessun dispositivo 2FA è stato registrato per il suo account." - 2fa_from_input: Inserisci il codice dal tuo %{device_name} per verificare la tua identità. - 2fa_from_webauthn: Fornisci il dispositivo WebAuthn %{device_name}. Se è basato su USB, assicurati di collegarlo e toccarlo. Quindi clicca sul pulsante di accesso. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Registra un dispositivo FIDO2 (come YubiKey) o la chiave sicura del tuo dispositivo mobile. diff --git a/modules/two_factor_authentication/config/locales/crowdin/ja.yml b/modules/two_factor_authentication/config/locales/crowdin/ja.yml index 00b3cdb8b81..2bb19e4a4e8 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/ja.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/ja.yml @@ -71,8 +71,7 @@ ja: error_invalid_settings: "選択した2FA方法は無効です" failed_to_save_settings: "2FA設定の更新に失敗しました: %{message}" admin: - self_edit_path: "独自の2FAデバイスを追加または変更するには、こちら %{self_edit_link} をご覧ください。" - self_edit_link_name: "アカウントページの2要素認証" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "このパスで自分の2FAデバイスを編集することはできません。 マイアカウント > 2要素認証 の順に選択します。" no_devices_for_user: "このユーザーには2FAデバイスが登録されていません。" all_devices_deleted: "このユーザーの2FAデバイスはすべて削除されています" @@ -119,8 +118,8 @@ ja: failed_to_delete: "2FAデバイスの削除に失敗しました。" is_default_cannot_delete: "デバイスはデフォルトになっているため、アクティブなセキュリティポリシーのため削除できません。削除する前に別のデバイスをデフォルトにしてください。" not_existing: "アカウントに2FAデバイスが登録されていません。" - 2fa_from_input: 確認するには、 %{device_name} のコードを入力してください。 - 2fa_from_webauthn: WebAuthn デバイス %{device_name}を挿入してください。 それがUSBベースの場合は、それを接続し、それをタッチしてください。 + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: FIDO2デバイス(YubiKeyなど)またはモバイルデバイスのセキュアエンクレーブを登録します。 diff --git a/modules/two_factor_authentication/config/locales/crowdin/ka.yml b/modules/two_factor_authentication/config/locales/crowdin/ka.yml index 813921ce503..4418ed6895b 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/ka.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/ka.yml @@ -71,8 +71,7 @@ ka: error_invalid_settings: "The 2FA strategies you selected are invalid" failed_to_save_settings: "Failed to update 2FA settings: %{message}" admin: - self_edit_path: "To add or modify your own 2FA devices, please go to %{self_edit_link}" - self_edit_link_name: "Two-factor authentication on your account page" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead." no_devices_for_user: "No 2FA device has been registered for this user." all_devices_deleted: "All 2FA devices of this user have been deleted" @@ -119,8 +118,8 @@ ka: failed_to_delete: "Failed to delete 2FA device." is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "No 2FA device has been registered for your account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/kk.yml b/modules/two_factor_authentication/config/locales/crowdin/kk.yml index db240dc9317..71f82738fbc 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/kk.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/kk.yml @@ -71,8 +71,7 @@ kk: error_invalid_settings: "The 2FA strategies you selected are invalid" failed_to_save_settings: "Failed to update 2FA settings: %{message}" admin: - self_edit_path: "To add or modify your own 2FA devices, please go to %{self_edit_link}" - self_edit_link_name: "Two-factor authentication on your account page" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead." no_devices_for_user: "No 2FA device has been registered for this user." all_devices_deleted: "All 2FA devices of this user have been deleted" @@ -119,8 +118,8 @@ kk: failed_to_delete: "Failed to delete 2FA device." is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "No 2FA device has been registered for your account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/ko.yml b/modules/two_factor_authentication/config/locales/crowdin/ko.yml index c61d325a090..f4037653bd4 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/ko.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/ko.yml @@ -71,8 +71,7 @@ ko: error_invalid_settings: "선택한 2FA 전략은 유효하지 않습니다." failed_to_save_settings: "2FA 설정을 업데이트하지 못함: %{message}" admin: - self_edit_path: "고유한 2FA 장치를 추가하거나 수정하려면 %{self_edit_link}(으)로 이동하세요." - self_edit_link_name: "계정 페이지의 2단계 인증" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "이 경로에서 사용자의 고유한 2FA 장치를 편집하지 못할 수 있습니다. 대신 내 계정 > 2단계 인증으로 이동하세요." no_devices_for_user: "2FA 장치가 이 사용자에 대해 등록되지 않았습니다." all_devices_deleted: "이 사용자의 모든 2FA 장치가 삭제되었습니다." @@ -119,8 +118,8 @@ ko: failed_to_delete: "2FA 장치를 삭제하지 못했습니다." is_default_cannot_delete: "장치가 기본으로 표시되고 활성 보안 정책으로 인해 삭제할 수 없습니다. 삭제하기 전에 다른 장치를 기본으로 표시하세요." not_existing: "2FA 장치가 해당 계정에 대해 등록되지 않았습니다." - 2fa_from_input: %{device_name}의 코드를 입력하여 ID를 인증하세요. - 2fa_from_webauthn: WebAuthn 장치 %{device_name} 제공을 해주세요. USB 기반인 경우 장치를 연결하고 터치하세요. 그런 다음 로그인 버튼을 클릭하세요. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: 'FIDO2 장치(예: YubiKey) 또는 모바일 장치의 Secure Enclave를 등록하세요.' diff --git a/modules/two_factor_authentication/config/locales/crowdin/lt.yml b/modules/two_factor_authentication/config/locales/crowdin/lt.yml index 3c9b770e085..b08604b3389 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/lt.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/lt.yml @@ -71,8 +71,7 @@ lt: error_invalid_settings: "Jūsų parinktos 2FA strategijos yra netinkamos" failed_to_save_settings: "Nepavyko atnaujinti 2FA nustatymų: %{message}" admin: - self_edit_path: "Norėdami pakeisti jūsų 2FA įrenginius, prašome eiti į %{self_edit_link}" - self_edit_link_name: "Dviejų veiksnių autentikacija jūsų paskyros puslapyje" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "Jūs negalite keisti jūsų 2FA įrenginių šiame kelyje. Eikite į Mano paskyra -> Dviejų veiksnių autentikacija." no_devices_for_user: "Šiam naudotojui nepriregistruotas joks 2FA įrenginys." all_devices_deleted: "Visi šio naudotojo 2FA įrenginiai buvo ištrinti" @@ -119,8 +118,8 @@ lt: failed_to_delete: "Nepavyko ištrinti 2FA įrenginio." is_default_cannot_delete: "Šis įrenginys pažymėtas kaip numatytasis ir todėl negali būti ištrintas dėl aktyvios saugumo politikos. Prieš trindami pažymėkite kitą įrenginį kaip numatytąjį." not_existing: "Jūsų paskyrai nėra priregistruotas joks 2FA įrenginys." - 2fa_from_input: Jūsų asmenybės identifikavimui prašome įvesti kodą iš jūsų %{device_name}. - 2fa_from_webauthn: Prašome pateikti WebAuthn rrenginį %{device_name}. Jei tai USB įrenginys, įsitikinkite, kad jis įjungtas ir jį palieskite. Tada paspauskite prisijungimo mygtuką. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/lv.yml b/modules/two_factor_authentication/config/locales/crowdin/lv.yml index deb3ea48edd..7cc42ca9ae6 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/lv.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/lv.yml @@ -71,8 +71,7 @@ lv: error_invalid_settings: "The 2FA strategies you selected are invalid" failed_to_save_settings: "Failed to update 2FA settings: %{message}" admin: - self_edit_path: "To add or modify your own 2FA devices, please go to %{self_edit_link}" - self_edit_link_name: "Two-factor authentication on your account page" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead." no_devices_for_user: "No 2FA device has been registered for this user." all_devices_deleted: "All 2FA devices of this user have been deleted" @@ -119,8 +118,8 @@ lv: failed_to_delete: "Failed to delete 2FA device." is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "No 2FA device has been registered for your account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/mn.yml b/modules/two_factor_authentication/config/locales/crowdin/mn.yml index e4ccfbdfe4c..5aff7437b7d 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/mn.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/mn.yml @@ -71,8 +71,7 @@ mn: error_invalid_settings: "The 2FA strategies you selected are invalid" failed_to_save_settings: "Failed to update 2FA settings: %{message}" admin: - self_edit_path: "To add or modify your own 2FA devices, please go to %{self_edit_link}" - self_edit_link_name: "Two-factor authentication on your account page" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead." no_devices_for_user: "No 2FA device has been registered for this user." all_devices_deleted: "All 2FA devices of this user have been deleted" @@ -119,8 +118,8 @@ mn: failed_to_delete: "Failed to delete 2FA device." is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "No 2FA device has been registered for your account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/ms.yml b/modules/two_factor_authentication/config/locales/crowdin/ms.yml index fe3df9f94b8..05bb10d63a0 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/ms.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/ms.yml @@ -71,8 +71,7 @@ ms: error_invalid_settings: "Strategi 2FA yang anda telah memilih adalah tidak sah." failed_to_save_settings: "Gagal untuk kemas kini tetapan 2FA: %{message}" admin: - self_edit_path: "Untuk menambah atau modifikasi peranti 2FA anda sendiri, sila ke %{self_edit_link}" - self_edit_link_name: "Pengesahan dua faktor di halaman akaun anda" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "Anda tidak boleh mengedit peranti 2FA anda sendiri di laluan ini. Sebaliknya, pergi ke Akaun Saya > Pengesahan dua faktor." no_devices_for_user: "Tiada peranti 2FA yang telah didaftarkan bagi pengguna ini." all_devices_deleted: "Semua peranti 2FA pengguna ini telah dipadamkan." @@ -119,8 +118,8 @@ ms: failed_to_delete: "Gagal untuk memadam peranti 2FA." is_default_cannot_delete: "Peranti ini telah ditandakan sebagai default dan tidak boleh dipadam atas sebab polisi keselamatan yang sedang aktif.\nTandakan peranti lain sebagai default sebelum memadamnya." not_existing: "Tiada peranti 2FA yang berdaftar bagi akaun anda." - 2fa_from_input: Sila masukkan kod daripada %{device_name} anda untuk sahkan identiti anda. - 2fa_from_webauthn: Sila sediakan peranti WebAuthn %{device_name}. Jika ia berdasarkan USB, sila pastikan untuk memasang dan menyentuhnya. Selepas itu, klik butang log masuk. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/ne.yml b/modules/two_factor_authentication/config/locales/crowdin/ne.yml index c889d064834..b7e85c6a0c7 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/ne.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/ne.yml @@ -71,8 +71,7 @@ ne: error_invalid_settings: "The 2FA strategies you selected are invalid" failed_to_save_settings: "Failed to update 2FA settings: %{message}" admin: - self_edit_path: "To add or modify your own 2FA devices, please go to %{self_edit_link}" - self_edit_link_name: "Two-factor authentication on your account page" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead." no_devices_for_user: "No 2FA device has been registered for this user." all_devices_deleted: "All 2FA devices of this user have been deleted" @@ -119,8 +118,8 @@ ne: failed_to_delete: "Failed to delete 2FA device." is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "No 2FA device has been registered for your account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/nl.yml b/modules/two_factor_authentication/config/locales/crowdin/nl.yml index 3be4eafddf1..d9d4075f30a 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/nl.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/nl.yml @@ -71,8 +71,7 @@ nl: error_invalid_settings: "De 2FA strategieën die u hebt geselecteerd zijn ongeldig" failed_to_save_settings: "2FA instellingen bijwerken mislukt: %{message}" admin: - self_edit_path: "Om uw eigen 2FA-apparaten toe te voegen of te wijzigen, gaat u naar %{self_edit_link}" - self_edit_link_name: "Twee-factor-authenticatie op uw accountpagina" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "U mag uw eigen 2FA-apparaten niet op dit pad bewerken. Ga in plaats daarvan naar Mijn account> Two-factor-authenticatie." no_devices_for_user: "Er is geen 2FA-apparaat geregistreerd voor deze gebruiker." all_devices_deleted: "Alle 2FA-apparaten van deze gebruiker zijn verwijderd" @@ -118,8 +117,8 @@ nl: failed_to_delete: "Kan het 2FA-apparaat niet verwijderen." is_default_cannot_delete: "Het apparaat is gemarkeerd als standaard en kan niet worden verwijderd vanwege een actief beveiligingsbeleid. Markeer een ander apparaat als standaard voordat u het verwijdert." not_existing: "Er is geen 2FA-apparaat geregistreerd voor uw account." - 2fa_from_input: Voer de code van uw %{device_name} om uw identiteit te verifiëren. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/no.yml b/modules/two_factor_authentication/config/locales/crowdin/no.yml index 5e9eec25d8b..3fee74adce2 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/no.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/no.yml @@ -71,8 +71,7 @@ error_invalid_settings: "2FA strategiene du har valgt er ugyldige" failed_to_save_settings: "Kunne ikke oppdatere 2FA-innstillinger: %{message}" admin: - self_edit_path: "For å legge til eller endre dine egne 2FA-enheter, vennligst gå til %{self_edit_link}" - self_edit_link_name: "Tofaktorautentisering på kontosiden din" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "Du kan ikke redigere dine egne 2FA-enheter på denne banen. Gå til Min konto> Tofaktorautentisering i stedet." no_devices_for_user: "Ingen 2FA-enhet er registrert for denne brukeren." all_devices_deleted: "Ingen 2FA-enhet er registrert for denne brukeren. Alle 2FA-enheter av denne brukeren er slettet" @@ -119,8 +118,8 @@ failed_to_delete: "Kunne ikke slette 2FA-enheten." is_default_cannot_delete: "Enheten er merket som standard og kan ikke slettes på grunn av en aktiv sikkerhetspolicy. Merk en annen enhet som standard før du sletter." not_existing: "Ingen 2FA-enhet er registrert for kontoen din." - 2fa_from_input: Skriv inn koden fra din %{device_name} for å bekrefte identiteten din. - 2fa_from_webauthn: Oppgi WebAuthn enheten %{device_name}. Hvis den er USB-basert, sørg for å koble den inn og trykke på den. Klikk deretter på påloggingsknappen. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/pl.yml b/modules/two_factor_authentication/config/locales/crowdin/pl.yml index 90bebdcee62..826f115d003 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/pl.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/pl.yml @@ -71,8 +71,7 @@ pl: error_invalid_settings: "Wybrane strategie uwierzytelniania 2FA są nieprawidłowe" failed_to_save_settings: "Nie można zaktualizować ustawień uwierzytelniania 2FA: %{message}" admin: - self_edit_path: "Aby dodać lub zmodyfikować własne urządzenia 2FA, przejdź do %{self_edit_link}" - self_edit_link_name: "Uwierzytelnianie dwuskładnikowe na stronie konta" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "Nie możesz edytować własnych urządzeń 2FA na tej ścieżce. Przejdź do Moje konto> Uwierzytelnianie dwuetapowe." no_devices_for_user: "Żadne urządzenie 2FA nie zostało zarejestrowane dla tego użytkownika." all_devices_deleted: "Wszystkie urządzenia 2FA tego użytkownika zostały usunięte" @@ -119,8 +118,8 @@ pl: failed_to_delete: "Nie można usunąć urządzenia 2FA." is_default_cannot_delete: "Urządzenie jest oznaczone jako domyślne i nie można go usunąć z powodu aktywnej polityki bezpieczeństwa. Przed usunięciem oznacz urządzenie jako domyślne." not_existing: "Nie zarejestrowano urządzenia 2FA dla Twojego konta." - 2fa_from_input: Wprowadź kod z %{device_name}, aby zweryfikować swoją tożsamość. - 2fa_from_webauthn: Podaj urządzenie WebAuthn %{device_name}. Jeśli jest to urządzenie USB, podłącz je i dotknij go. Następnie kliknij przycisk logowania. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Zarejestruj urządzenie FIDO2 (takie jak YubiKey) lub bezpieczną enklawę swojego urządzenia mobilnego. diff --git a/modules/two_factor_authentication/config/locales/crowdin/pt-BR.yml b/modules/two_factor_authentication/config/locales/crowdin/pt-BR.yml index 855b8fb6a6f..219bcba3c29 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/pt-BR.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/pt-BR.yml @@ -71,8 +71,7 @@ pt-BR: error_invalid_settings: "As estratégias de 2FA que você selecionou são inválidas" failed_to_save_settings: "Falha ao atualizar as configurações de 2FA: %{message}" admin: - self_edit_path: "Para adicionar ou modificar seu próprio dispositivo de 2FA, por favor, acesse %{self_edit_link}" - self_edit_link_name: "Autenticação de dois fatores na página da sua conta" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "Talvez você não tenha editado o seu dispositivo 2FA para este caminho. Vá para Minha Conta > Segundo Favor de Autenticação." no_devices_for_user: "Nenhum dispositivo 2FA foi registrado para este usuário." all_devices_deleted: "Todos os dispositivos 2FA deste usuário foram excluídos" @@ -119,8 +118,8 @@ pt-BR: failed_to_delete: "Falha ao excluir o dispositivo com 2FA." is_default_cannot_delete: "O arquivo está marcado como padrão e não pode ser deletado devido a política de segurança estar ativa. Marque outro dispositivo como padrão antes de excluí-lo." not_existing: "Nenhum dispositivo com 2FA foi registrado na sua conta." - 2fa_from_input: Por favor, digite o código do seu %{device_name} para verificar sua identidade. - 2fa_from_webauthn: Forneça o dispositivo WebAuthn %{device_name}. Se for do tipo USB certifique-se de conectá-lo e tocá-lo. Em seguida, clique no botão de login. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Registre um dispositivo FIDO2 (como o YubiKey) ou o enclave seguro do seu dispositivo móvel. diff --git a/modules/two_factor_authentication/config/locales/crowdin/pt-PT.yml b/modules/two_factor_authentication/config/locales/crowdin/pt-PT.yml index f1d73ac99f4..480bca59f87 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/pt-PT.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/pt-PT.yml @@ -71,8 +71,7 @@ pt-PT: error_invalid_settings: "As estratégias 2FA que selecionou são inválidas" failed_to_save_settings: "Erro ao atualizar as definições 2FA: %{message}" admin: - self_edit_path: "Para adicionar ou modificar seus próprios dispositivos 2FA, vá para %{self_edit_link}" - self_edit_link_name: "Autenticação de dois fatores na página da sua conta" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "Você não pode editar seus próprios dispositivos 2FA neste caminho. Vá em Minha conta> Autenticação de dois fatores em vez disso." no_devices_for_user: "Nenhum dispositivo 2FA foi registrado para este usuário." all_devices_deleted: "Todos os dispositivos 2FA deste usuário foram excluídos" @@ -119,8 +118,8 @@ pt-PT: failed_to_delete: "Falha ao excluir o dispositivo 2FA." is_default_cannot_delete: "O dispositivo está marcado como padrão e não pode ser excluído devido a uma política de segurança ativa. Marque outro dispositivo como padrão antes de excluir." not_existing: "Nenhum dispositivo 2FA foi registrado para sua conta." - 2fa_from_input: Introduza o código do seu %{device_name} para verificar a sua identidade. - 2fa_from_webauthn: Indique o dispositivo WebAuthn %{device_name}. Se for baseado em USB, certifique-se de que o liga e toca nele. Em seguida, clique no botão de início de sessão. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Registe um dispositivo FIDO2 (como a YubiKey) ou a codificação segura do seu dispositivo móvel. diff --git a/modules/two_factor_authentication/config/locales/crowdin/ro.yml b/modules/two_factor_authentication/config/locales/crowdin/ro.yml index 7feb54c4620..8af4550d44f 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/ro.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/ro.yml @@ -71,8 +71,7 @@ ro: error_invalid_settings: "Strategiile 2FA pe care le-ați selectat nu sunt valide" failed_to_save_settings: "Nu s-a reușit actualizarea setărilor 2FA: %{message}" admin: - self_edit_path: "Pentru a adăuga sau modifica propriile dispozitive 2FA, vă rugăm să accesați %{self_edit_link}" - self_edit_link_name: "Autentificare doi factori pe pagina contului dvs" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "Nu îți poți edita propriile dispozitive 2FA pe această cale. Mergi la Contul meu > Autentificare doi factori." no_devices_for_user: "Nu a fost înregistrat niciun dispozitiv 2FA pentru acest utilizator." all_devices_deleted: "Toate dispozitivele 2FA ale acestui utilizator au fost șterse" @@ -119,8 +118,8 @@ ro: failed_to_delete: "Nu s-a reușit ștergerea dispozitivului 2FA." is_default_cannot_delete: "Dispozitivul este marcat ca fiind implicit și nu poate fi șters din cauza unei politici de securitate active. Marcați un alt dispozitiv ca implicit înainte de a-l șterge." not_existing: "Nu a fost înregistrat niciun dispozitiv 2FA pentru contul dvs." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/ru.yml b/modules/two_factor_authentication/config/locales/crowdin/ru.yml index bdba7c151d8..880dbb2780a 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/ru.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/ru.yml @@ -71,8 +71,7 @@ ru: error_invalid_settings: "Вы выбрали неправильные стратегии 2ФА" failed_to_save_settings: "Ошибка при обновлении параметров 2ФА: %{message}" admin: - self_edit_path: "Добавлять и изменять свои устройства 2ФА можно в разделе %{self_edit_link}" - self_edit_link_name: "«Двухфакторная аутентификация» на странице учетной записи" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "На этой странице изменять свои устройства 2ФА нельзя. Перейдите в раздел «Моя учетная запись > Двухфакторная аутентификация»." no_devices_for_user: "Для этого пользователя не зарегистрировано ни одного устройства 2ФА." all_devices_deleted: "Все устройства 2ФА этого пользователя удалены" @@ -119,8 +118,8 @@ ru: failed_to_delete: "Не удалось удалить устройство 2ФА." is_default_cannot_delete: "Устройство задано как устройство по умолчанию, поэтому политика безопасности запрещает его удалять. Что удалить его, задайте другое устройство по умолчанию." not_existing: "Для вашей учетной записи не зарегистрировано ни одного устройства 2ФА." - 2fa_from_input: Для подтверждения своей личности, пожалуйста, введите код Вашего %{device_name} . - 2fa_from_webauthn: Пожалуйста, укажите устройство WebAuthn %{device_name}. Если это устройство на базе USB, обязательно подключите его и прикоснитесь к нему. Затем нажмите кнопку входа. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Зарегистрируйте устройство FIDO2 (например, YubiKey) или Ваше мобильное устройство. diff --git a/modules/two_factor_authentication/config/locales/crowdin/rw.yml b/modules/two_factor_authentication/config/locales/crowdin/rw.yml index 6c655d30567..0a40e2a33c4 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/rw.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/rw.yml @@ -71,8 +71,7 @@ rw: error_invalid_settings: "The 2FA strategies you selected are invalid" failed_to_save_settings: "Failed to update 2FA settings: %{message}" admin: - self_edit_path: "To add or modify your own 2FA devices, please go to %{self_edit_link}" - self_edit_link_name: "Two-factor authentication on your account page" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead." no_devices_for_user: "No 2FA device has been registered for this user." all_devices_deleted: "All 2FA devices of this user have been deleted" @@ -119,8 +118,8 @@ rw: failed_to_delete: "Failed to delete 2FA device." is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "No 2FA device has been registered for your account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/si.yml b/modules/two_factor_authentication/config/locales/crowdin/si.yml index f562d3fb4f7..f22963d292f 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/si.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/si.yml @@ -71,8 +71,7 @@ si: error_invalid_settings: "The 2FA strategies you selected are invalid" failed_to_save_settings: "Failed to update 2FA settings: %{message}" admin: - self_edit_path: "To add or modify your own 2FA devices, please go to %{self_edit_link}" - self_edit_link_name: "Two-factor authentication on your account page" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead." no_devices_for_user: "No 2FA device has been registered for this user." all_devices_deleted: "All 2FA devices of this user have been deleted" @@ -119,8 +118,8 @@ si: failed_to_delete: "Failed to delete 2FA device." is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "No 2FA device has been registered for your account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/sk.yml b/modules/two_factor_authentication/config/locales/crowdin/sk.yml index 773f5f00666..ff699f71fce 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/sk.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/sk.yml @@ -71,8 +71,7 @@ sk: error_invalid_settings: "Vybraté 2FA stratégie sú neplatné" failed_to_save_settings: "Nepodarilo sa aktualizovať 2FA nastavenia: %{message}" admin: - self_edit_path: "Ak chcete pridať alebo upraviť vlastné 2FA zariadenia, prejdite na stránku %{self_edit_link}" - self_edit_link_name: "Dvojfaktorové overovanie na stránke vášho užívateľského konta" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "Nesmiete upravovať vaše vlastné zariadenia 2FA na tejto ceste. Namiesto toho prejdite na Môj účet> Dvojfaktorové overovanie." no_devices_for_user: "Pre tohto užívateľa nebolo zaregistrované žiadne 2FA zariadenie." all_devices_deleted: "Všetky 2FA zariadenia tohto užívateľa boli odstránené" @@ -119,8 +118,8 @@ sk: failed_to_delete: "Nepodarilo sa vymazať 2FA zariadenie." is_default_cannot_delete: "Zariadenie je označené ako predvolené a nie je možné ho odstrániť kvôli aktívnej bezpečnostnej politike. Označte iné zariadenie ako predvolené pred jeho odstránením." not_existing: "Pre váš účet nebolo zaregistrované žiadne 2FA zariadenie." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/sl.yml b/modules/two_factor_authentication/config/locales/crowdin/sl.yml index ee1e2eb3c7f..b4a6006a006 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/sl.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/sl.yml @@ -70,8 +70,7 @@ sl: error_invalid_settings: "Izbrane strategije 2FA so neveljavne" failed_to_save_settings: "Posodobitev nastavitev 2FA ni uspela: %{message}" admin: - self_edit_path: "Če želite dodati ali spremeniti svoje 2FA naprave, pojdite na %{self_edit_link}" - self_edit_link_name: "Dvofaktorna avtentikacija na strani vašega računa" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "Tukaj ne morete urejati svojih naprav 2FA. Namesto tega pojdite na Moj račun > Dvofaktorska overitev" no_devices_for_user: "Za tega uporabnika ni bila registrirana nobena naprava 2FA." all_devices_deleted: "Izbrisane so vse naprave 2FA tega uporabnika" @@ -118,8 +117,8 @@ sl: failed_to_delete: "Brisanje naprave 2FA ni bilo mogoče." is_default_cannot_delete: "Naprava je označena kot privzeta in je ni mogoče izbrisati zaradi aktivnega varnostnega pravilnika. Pred brisanjem označite drugo napravo kot privzeto." not_existing: "Za vaš račun ni bila registrirana nobena naprava 2FA." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/sr.yml b/modules/two_factor_authentication/config/locales/crowdin/sr.yml index a597e840a32..74e99245ad6 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/sr.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/sr.yml @@ -71,8 +71,7 @@ sr: error_invalid_settings: "The 2FA strategies you selected are invalid" failed_to_save_settings: "Failed to update 2FA settings: %{message}" admin: - self_edit_path: "To add or modify your own 2FA devices, please go to %{self_edit_link}" - self_edit_link_name: "Two-factor authentication on your account page" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead." no_devices_for_user: "No 2FA device has been registered for this user." all_devices_deleted: "All 2FA devices of this user have been deleted" @@ -119,8 +118,8 @@ sr: failed_to_delete: "Failed to delete 2FA device." is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "No 2FA device has been registered for your account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/sv.yml b/modules/two_factor_authentication/config/locales/crowdin/sv.yml index 3596c8f547a..1878cf1df17 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/sv.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/sv.yml @@ -70,8 +70,7 @@ sv: error_invalid_settings: "De 2FA strategier du har valt är ogiltiga" failed_to_save_settings: "Det gick inte att uppdatera 2FA inställningarna: %{message}" admin: - self_edit_path: "För att lägga till eller ändra dina egna 2FA enheter, vänligen gå till %{self_edit_link}" - self_edit_link_name: "Två-faktor autentisering på din kontosida" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "Du kan inte redigera din egen 2FA enheter här. Gå till Mitt konto > Två faktor autentisering i stället." no_devices_for_user: "Ingen 2FA enhet har registrerats för den här användaren." all_devices_deleted: "Alla 2FA enheter för den här användaren har tagits bort" @@ -117,8 +116,8 @@ sv: failed_to_delete: "Kunde inte ta bort 2FA enhet." is_default_cannot_delete: "Enheten är markerad som standard och kan inte raderas på grund av en aktiv säkerhetspolicy. Markera en annan enhet som standard innan du raderar." not_existing: "Ingen 2FA enhet har registrerats för det här kontot." - 2fa_from_input: Ange koden från din %{device_name} för att verifiera din identitet. - 2fa_from_webauthn: Vänligen ange WebAuthn enheten %{device_name}. Om den är USB-baserad se till att koppla in den och vidröra den. Klicka sedan på knappen för att logga in. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Registrera en FIDO2-enhet (som YubiKey) eller en säker enklav på din mobila enhet. diff --git a/modules/two_factor_authentication/config/locales/crowdin/th.yml b/modules/two_factor_authentication/config/locales/crowdin/th.yml index 69514280154..2b3d99f8c3a 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/th.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/th.yml @@ -71,8 +71,7 @@ th: error_invalid_settings: "The 2FA strategies you selected are invalid" failed_to_save_settings: "Failed to update 2FA settings: %{message}" admin: - self_edit_path: "To add or modify your own 2FA devices, please go to %{self_edit_link}" - self_edit_link_name: "Two-factor authentication on your account page" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead." no_devices_for_user: "No 2FA device has been registered for this user." all_devices_deleted: "All 2FA devices of this user have been deleted" @@ -119,8 +118,8 @@ th: failed_to_delete: "Failed to delete 2FA device." is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "No 2FA device has been registered for your account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/tr.yml b/modules/two_factor_authentication/config/locales/crowdin/tr.yml index 91e9d810b76..7255de0e023 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/tr.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/tr.yml @@ -71,8 +71,7 @@ tr: error_invalid_settings: "Seçtiğiniz 2FA stratejileri geçersiz" failed_to_save_settings: "2FA ayarları güncellenemedi: %{message}" admin: - self_edit_path: "Kendi 2FA cihazlarınızı eklemek veya değiştirmek için, lütfen %{self_edit_link} adresine gidin." - self_edit_link_name: "Hesap sayfanızda iki faktörlü kimlik doğrulama" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "Bu yolda kendi 2FA cihazlarınızı düzenleyemezsiniz. Hesabım> İki faktörlü kimlik doğrulama yerine gidin." no_devices_for_user: "Bu kullanıcı için 2FA cihazı kayıtlı değil." all_devices_deleted: "Bu kullanıcının tüm 2FA cihazları silindi" @@ -119,8 +118,8 @@ tr: failed_to_delete: "2FA cihazı silinemedi." is_default_cannot_delete: "Cihaz varsayılan olarak işaretlenmiştir ve aktif bir güvenlik politikası nedeniyle silinemez. Silmeden önce başka bir cihazı varsayılan olarak işaretleyin." not_existing: "Hesabınız için 2FA cihazı kayıtlı değil." - 2fa_from_input: Kimliğinizi doğrulamak için lütfen %{device_name} cihazından kod girin. - 2fa_from_webauthn: Lütfen WebAuthn cihazını %{device_name} sağlayın. USB tabanlı ise cihazınız taktığınızdan ve dokunduğunuzdan emin olun. Ardından oturum açma düğmesine tıklayın. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Bir FIDO2 cihazı (YubiKey gibi) ya da mobil cihazınızın güvenli donanım alanını (secure enclave) kaydedin. diff --git a/modules/two_factor_authentication/config/locales/crowdin/uk.yml b/modules/two_factor_authentication/config/locales/crowdin/uk.yml index 8649db79efe..191ea6c7174 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/uk.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/uk.yml @@ -71,8 +71,7 @@ uk: error_invalid_settings: "Вибрані стратегії 2FA недійсні" failed_to_save_settings: "Не вдалося оновити налаштування 2FA: %{message}" admin: - self_edit_path: " Щоб додати або змінити власні пристрої 2FA, перейдіть до %{self_edit_link}" - self_edit_link_name: "Двофакторна аутентифікація на сторінці облікового запису" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "На цьому шляху не можна редагувати власні пристрої 2FA. Замість цього перейдіть до розділу Мій обліковий запис> Двофакторна автентифікація." no_devices_for_user: "Для цього користувача не було зареєстровано жодного пристрою 2FA." all_devices_deleted: "Усі пристрої 2FA цього користувача видалено" @@ -119,8 +118,8 @@ uk: failed_to_delete: "Не вдалося видалити пристрій 2FA." is_default_cannot_delete: "Пристрій позначено як типовий і його не можна видалити через активну політику безпеки. Перед видаленням позначте інший пристрій як стандартний." not_existing: "Для вашого облікового запису не зареєстровано жодного пристрою 2FA." - 2fa_from_input: Введіть код, що надійшов на пристрій %{device_name}, щоб підтвердити свою особу. - 2fa_from_webauthn: Укажіть пристрій WebAuthn %{device_name}. Якщо це USB-пристрій, переконайтеся, що його підключено, і торкніться його. Потім натисніть кнопку входу. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Зареєструйте пристрій FIDO2 (наприклад, YubiKey) або захищений анклав свого мобільного пристрою. diff --git a/modules/two_factor_authentication/config/locales/crowdin/uz.yml b/modules/two_factor_authentication/config/locales/crowdin/uz.yml index 419a0405b12..f146b669ebe 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/uz.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/uz.yml @@ -71,8 +71,7 @@ uz: error_invalid_settings: "The 2FA strategies you selected are invalid" failed_to_save_settings: "Failed to update 2FA settings: %{message}" admin: - self_edit_path: "To add or modify your own 2FA devices, please go to %{self_edit_link}" - self_edit_link_name: "Two-factor authentication on your account page" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead." no_devices_for_user: "No 2FA device has been registered for this user." all_devices_deleted: "All 2FA devices of this user have been deleted" @@ -119,8 +118,8 @@ uz: failed_to_delete: "Failed to delete 2FA device." is_default_cannot_delete: "The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting." not_existing: "No 2FA device has been registered for your account." - 2fa_from_input: Please enter the code from your %{device_name} to verify your identity. - 2fa_from_webauthn: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device. diff --git a/modules/two_factor_authentication/config/locales/crowdin/vi.yml b/modules/two_factor_authentication/config/locales/crowdin/vi.yml index b7b9c3071cf..336155e7a73 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/vi.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/vi.yml @@ -71,8 +71,7 @@ vi: error_invalid_settings: "Phương án mã 2FA bạn lựa chon không hợp lệ" failed_to_save_settings: "Không cập nhật được cài đặt 2FA: %{message}" admin: - self_edit_path: "Để thêm hoặc sửa đổi thiết bị 2FA của riêng bạn, vui lòng truy cập %{self_edit_link}" - self_edit_link_name: "Xác thực hai yếu tố trên trang tài khoản của bạn" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "Bạn không được chỉnh sửa thiết bị 2FA của riêng mình trên đường dẫn này. Thay vào đó hãy chuyển đến Tài khoản của tôi > Xác thực hai yếu tố." no_devices_for_user: "Không có thiết bị 2FA nào được đăng ký cho người dùng này." all_devices_deleted: "Tất cả các thiết bị 2FA của người dùng này đã bị xóa" @@ -119,8 +118,8 @@ vi: failed_to_delete: "Không thể xóa thiết bị 2FA." is_default_cannot_delete: "Thiết bị được đánh dấu là mặc định và không thể xóa do chính sách bảo mật đang hoạt động. Đánh dấu thiết bị khác làm mặc định trước khi xóa." not_existing: "Không có thiết bị 2FA nào được đăng ký cho tài khoản của bạn." - 2fa_from_input: Vui lòng nhập mã từ %{device_name} để xác minh danh tính của bạn. - 2fa_from_webauthn: Vui lòng cung cấp thiết bị WebAuthn %{device_name}. Nếu thiết bị dựa trên USB, hãy đảm bảo cắm vào và chạm vào nó. Sau đó nhấp vào nút đăng nhập. + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: Đăng ký thiết bị FIDO2 (như YubiKey) hoặc vùng bảo mật cho thiết bị di động của bạn. diff --git a/modules/two_factor_authentication/config/locales/crowdin/zh-CN.yml b/modules/two_factor_authentication/config/locales/crowdin/zh-CN.yml index 299532ceead..6567e7ed0da 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/zh-CN.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/zh-CN.yml @@ -71,8 +71,7 @@ zh-CN: error_invalid_settings: "您选择的双因子认证策略无效" failed_to_save_settings: "无法更新双因子认证设置:%{message}" admin: - self_edit_path: "要添加或修改您自己的 2FA 设备,请转到 %{self_edit_link}" - self_edit_link_name: "您帐户页面上的双因子认证" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "您可能无法在此路径上编辑自己的 2FA 设备。请转到我的帐户 >> 双因子认证。" no_devices_for_user: "没有为此用户注册过 2FA 设备。" all_devices_deleted: "此用户的所有 2FA 设备已被删除" @@ -119,8 +118,8 @@ zh-CN: failed_to_delete: "删除 2FA 设备失败。" is_default_cannot_delete: "该设备被标记为默认设备,并且由于活动安全策略而无法删除。在删除之前,请将另一个设备标记为默认设备。" not_existing: "没有为您的帐户注册过 2FA 设备。" - 2fa_from_input: 请从您的 %{device_name} 获取代码以验证您的身份。 - 2fa_from_webauthn: 请提供 WebAuthn 设备 %{device_name}.如果是 USB 设备,请确保插入并使用它。然后点击登录按钮。 + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn 认证" description: 注册 FIDO2 设备(如 YubiKey)或您的移动设备的安全隔区。 diff --git a/modules/two_factor_authentication/config/locales/crowdin/zh-TW.yml b/modules/two_factor_authentication/config/locales/crowdin/zh-TW.yml index bdadf4c4b8c..c9c29eb3fb5 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/zh-TW.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/zh-TW.yml @@ -70,8 +70,7 @@ zh-TW: error_invalid_settings: "您選擇的2FA 策略無效" failed_to_save_settings: "未能更新2FA 設置: %{message}" admin: - self_edit_path: "要添加或修改您自己的2FA 設備, 請連結到 %{self_edit_link}" - self_edit_link_name: "雙重驗證於您的帳號頁面" + self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)" self_edit_forbidden: "無法於此路徑編輯您擁有的2FA設備.請至 我的帳號 > 雙重認證." no_devices_for_user: "沒有為該使用者註冊的 2FA 設備。" all_devices_deleted: "此使用者的所有2FA 設備已被刪除" @@ -117,8 +116,8 @@ zh-TW: failed_to_delete: "刪除 2FA 裝置失敗。" is_default_cannot_delete: "裝置已標示為預設值,且由於安全政策已啟用,因此無法刪除。在刪除之前,請將其他裝置標記為預設值。" not_existing: "您沒有註冊 2FA 設備。" - 2fa_from_input: 請輸入您的 %{device_name} 中的程式碼以驗證您的身分。 - 2fa_from_webauthn: 請提供支援「 WebAuthn」裝置 %{device_name}. 如果是USB設備,請確定插入以及觸碰驗證後,再點選登入按鈕。 + 2fa_from_input_html: Please enter the code from your %{device_name} to verify your identity. + 2fa_from_webauthn_html: Please provide the WebAuthn device %{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button. webauthn: title: "WebAuthn" description: 註冊 FIDO2 裝置(例如 YubiKey)或您行動裝置的安全區域(Secure Enclave)。 diff --git a/modules/webhooks/config/locales/crowdin/af.yml b/modules/webhooks/config/locales/crowdin/af.yml index c6cf13acd08..5f6dac65e84 100644 --- a/modules/webhooks/config/locales/crowdin/af.yml +++ b/modules/webhooks/config/locales/crowdin/af.yml @@ -36,10 +36,8 @@ af: updated: "Updated" comment: "Opmerking" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/ar.yml b/modules/webhooks/config/locales/crowdin/ar.yml index 2f92b32ba07..6945bc379e3 100644 --- a/modules/webhooks/config/locales/crowdin/ar.yml +++ b/modules/webhooks/config/locales/crowdin/ar.yml @@ -36,10 +36,8 @@ ar: updated: "محدث" comment: "تعليق" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/az.yml b/modules/webhooks/config/locales/crowdin/az.yml index 5b909efc3b7..d507f61d2b4 100644 --- a/modules/webhooks/config/locales/crowdin/az.yml +++ b/modules/webhooks/config/locales/crowdin/az.yml @@ -36,10 +36,8 @@ az: updated: "Updated" comment: "Comment" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/be.yml b/modules/webhooks/config/locales/crowdin/be.yml index a99a2ff3744..a2dfe70aac8 100644 --- a/modules/webhooks/config/locales/crowdin/be.yml +++ b/modules/webhooks/config/locales/crowdin/be.yml @@ -36,10 +36,8 @@ be: updated: "Updated" comment: "Comment" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/bg.yml b/modules/webhooks/config/locales/crowdin/bg.yml index 7a712dc67e1..a1772ce2425 100644 --- a/modules/webhooks/config/locales/crowdin/bg.yml +++ b/modules/webhooks/config/locales/crowdin/bg.yml @@ -36,10 +36,8 @@ bg: updated: "Updated" comment: "Коментар" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/ca.yml b/modules/webhooks/config/locales/crowdin/ca.yml index 9496305373a..cb35ff5bf87 100644 --- a/modules/webhooks/config/locales/crowdin/ca.yml +++ b/modules/webhooks/config/locales/crowdin/ca.yml @@ -36,10 +36,8 @@ ca: updated: "Actualitzat" comment: "Comentari" internal_comment: "Internal comment" - explanation: - text: > - En el cas que un esdeveniment com la creació d'un paquet de treball o l'actualització d'un projecte, OpenProject enviarà una sol·licitud POST als punts finals de web configurats. A vegades, l'esdeveniment s'envia després que %{link} ha passat. - link: període d'agregació configurat + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhooks habilitats' disabled: 'Webhooks deshabilitats' diff --git a/modules/webhooks/config/locales/crowdin/ckb-IR.yml b/modules/webhooks/config/locales/crowdin/ckb-IR.yml index 7cc02528b8f..6c0bcc90b32 100644 --- a/modules/webhooks/config/locales/crowdin/ckb-IR.yml +++ b/modules/webhooks/config/locales/crowdin/ckb-IR.yml @@ -36,10 +36,8 @@ ckb-IR: updated: "Updated" comment: "Comment" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/cs.yml b/modules/webhooks/config/locales/crowdin/cs.yml index 0a7256b716d..35f152c8eb5 100644 --- a/modules/webhooks/config/locales/crowdin/cs.yml +++ b/modules/webhooks/config/locales/crowdin/cs.yml @@ -36,10 +36,8 @@ cs: updated: "Aktualizováno" comment: "Komentář" internal_comment: "Interní komentář" - explanation: - text: > - Při výskytu události, jako je vytvoření pracovního balíčku nebo aktualizace projektu, OpenProject odešle POST požadavek na nakonfigurované webové koncové body. Často je událost odeslána poté, co %{link} prošel. - link: konfigurovaná doba agregace + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'webhook je povolen' disabled: 'webhook je zakázán' diff --git a/modules/webhooks/config/locales/crowdin/da.yml b/modules/webhooks/config/locales/crowdin/da.yml index a6aad45a2a0..02f4e528525 100644 --- a/modules/webhooks/config/locales/crowdin/da.yml +++ b/modules/webhooks/config/locales/crowdin/da.yml @@ -36,10 +36,8 @@ da: updated: "Updated" comment: "Kommentér" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/de.yml b/modules/webhooks/config/locales/crowdin/de.yml index 15f72f1b575..00313fe949b 100644 --- a/modules/webhooks/config/locales/crowdin/de.yml +++ b/modules/webhooks/config/locales/crowdin/de.yml @@ -36,10 +36,8 @@ de: updated: "Aktualisiert" comment: "Kommentar" internal_comment: "Interner Kommentar" - explanation: - text: > - Bei dem Auftreten eines Ereignisses wie der Erstellung eines Arbeitspakets oder einer Aktualisierung eines Projekts sendet OpenProject einen HTTP POST Request an die konfigurierten Web-Endpunkte. Oft wird das Ereignis nach Ablauf der %{link} gesendet. - link: konfigurierten Aggregationszeit + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook ist aktiv' disabled: 'Webhook ist deaktiviert' diff --git a/modules/webhooks/config/locales/crowdin/el.yml b/modules/webhooks/config/locales/crowdin/el.yml index 689179ebab5..f0113939b8d 100644 --- a/modules/webhooks/config/locales/crowdin/el.yml +++ b/modules/webhooks/config/locales/crowdin/el.yml @@ -36,10 +36,8 @@ el: updated: "Ενημερωμένο" comment: "Σχόλιο" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Το webhook είναι ενεργό' disabled: 'Το webhook είναι ανενεργό' diff --git a/modules/webhooks/config/locales/crowdin/eo.yml b/modules/webhooks/config/locales/crowdin/eo.yml index 740df0bfff6..7b56c5d32ca 100644 --- a/modules/webhooks/config/locales/crowdin/eo.yml +++ b/modules/webhooks/config/locales/crowdin/eo.yml @@ -36,10 +36,8 @@ eo: updated: "Updated" comment: "Komento" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/es.yml b/modules/webhooks/config/locales/crowdin/es.yml index 0cc001eb385..891ce018cbf 100644 --- a/modules/webhooks/config/locales/crowdin/es.yml +++ b/modules/webhooks/config/locales/crowdin/es.yml @@ -36,10 +36,8 @@ es: updated: "Actualizado" comment: "Comentario" internal_comment: "Comentario interno" - explanation: - text: > - Cuando se produzcan eventos como la creación de un paquete de trabajo o la actualización de un proyecto, OpenProject enviará una solicitud POST a los puntos de conexión web configurados. Con frecuencia, el evento se enviará después de que haya pasado el %{link}. - link: período de agregación configurado + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'El webhook está habilitado' disabled: 'El webhook está deshabilitado' diff --git a/modules/webhooks/config/locales/crowdin/et.yml b/modules/webhooks/config/locales/crowdin/et.yml index f8be9941a51..d3d647feb6f 100644 --- a/modules/webhooks/config/locales/crowdin/et.yml +++ b/modules/webhooks/config/locales/crowdin/et.yml @@ -36,10 +36,8 @@ et: updated: "Updated" comment: "Kommentaar" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/eu.yml b/modules/webhooks/config/locales/crowdin/eu.yml index 988f441aba2..74119863578 100644 --- a/modules/webhooks/config/locales/crowdin/eu.yml +++ b/modules/webhooks/config/locales/crowdin/eu.yml @@ -36,10 +36,8 @@ eu: updated: "Updated" comment: "Comment" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/fa.yml b/modules/webhooks/config/locales/crowdin/fa.yml index 6a75fc4e39c..0b1f5b893d4 100644 --- a/modules/webhooks/config/locales/crowdin/fa.yml +++ b/modules/webhooks/config/locales/crowdin/fa.yml @@ -36,10 +36,8 @@ fa: updated: "Updated" comment: "نظر" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/fi.yml b/modules/webhooks/config/locales/crowdin/fi.yml index 416605d9eff..05984aaf4fd 100644 --- a/modules/webhooks/config/locales/crowdin/fi.yml +++ b/modules/webhooks/config/locales/crowdin/fi.yml @@ -36,10 +36,8 @@ fi: updated: "Päivitetty" comment: "Kommentti" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/fil.yml b/modules/webhooks/config/locales/crowdin/fil.yml index 40bcca73285..03fb9b2cd1f 100644 --- a/modules/webhooks/config/locales/crowdin/fil.yml +++ b/modules/webhooks/config/locales/crowdin/fil.yml @@ -36,10 +36,8 @@ fil: updated: "Updated" comment: "Komento" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/fr.yml b/modules/webhooks/config/locales/crowdin/fr.yml index 4cd10c28552..90972e20d98 100644 --- a/modules/webhooks/config/locales/crowdin/fr.yml +++ b/modules/webhooks/config/locales/crowdin/fr.yml @@ -36,10 +36,8 @@ fr: updated: "Mis à jour" comment: "Commentaire" internal_comment: "Commentaire interne" - explanation: - text: > - Lors de l'apparition d'un événement comme la création d'un lot de travaux ou la mise à jour d'un projet, OpenProject enverra une requête POST aux points de terminaison web configurés. Souvent, l'événement est envoyé après que le %{link} est passé. - link: période d'agrégation configurée + explanation_html: > + Lors de l'occurrence d'un événement comme la création d'un lot de travail ou une mise à jour de projet, OpenProject enverra une requête POST aux points de terminaison web configurés. Souvent, l'événement est envoyé après que la [période d'agrégation configurée] (aggregation_path) se soit écoulée. status: enabled: 'Webhook activé' disabled: 'Webhook désactivé' diff --git a/modules/webhooks/config/locales/crowdin/he.yml b/modules/webhooks/config/locales/crowdin/he.yml index 9b697db8798..3796b83c224 100644 --- a/modules/webhooks/config/locales/crowdin/he.yml +++ b/modules/webhooks/config/locales/crowdin/he.yml @@ -36,10 +36,8 @@ he: updated: "Updated" comment: "תגובה" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/hi.yml b/modules/webhooks/config/locales/crowdin/hi.yml index 85f63096673..da8ecb1b82e 100644 --- a/modules/webhooks/config/locales/crowdin/hi.yml +++ b/modules/webhooks/config/locales/crowdin/hi.yml @@ -36,10 +36,8 @@ hi: updated: "Updated" comment: "टिप्पणी" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/hr.yml b/modules/webhooks/config/locales/crowdin/hr.yml index f5914007672..83c6ad79085 100644 --- a/modules/webhooks/config/locales/crowdin/hr.yml +++ b/modules/webhooks/config/locales/crowdin/hr.yml @@ -36,10 +36,8 @@ hr: updated: "Updated" comment: "Komentar" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/hu.yml b/modules/webhooks/config/locales/crowdin/hu.yml index ef15558a444..667d5eb7dd5 100644 --- a/modules/webhooks/config/locales/crowdin/hu.yml +++ b/modules/webhooks/config/locales/crowdin/hu.yml @@ -36,10 +36,8 @@ hu: updated: "Frissítve" comment: "Vélemény" internal_comment: "Internal comment" - explanation: - text: > - Olyan események előfordulása esetén, mint például munkacsomag létrehozása vagy projekt frissítése, az OpenProject egy POST kérést küld a bekonfigurált webes végpontoknak. Az esemény gyakran %{link} elteltével érkezik. - link: beállított összesítési időszak + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook engedélyezve' disabled: 'Webhook tiltva' diff --git a/modules/webhooks/config/locales/crowdin/id.yml b/modules/webhooks/config/locales/crowdin/id.yml index 6eb68aafb3c..03444d841c2 100644 --- a/modules/webhooks/config/locales/crowdin/id.yml +++ b/modules/webhooks/config/locales/crowdin/id.yml @@ -36,10 +36,8 @@ id: updated: "Diperbarui" comment: "Komentar" internal_comment: "Komentar internal" - explanation: - text: > - Setelah kejadian seperti pembuatan paket kerja atau pembaruan proyek, OpenProject akan mengirimkan permintaan POST ke titik akhir web yang dikonfigurasi. Sering kali, acara dikirim setelah %{link} lewat. - link: periode agregasi yang dikonfigurasi + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook diaktifkan' disabled: 'Webhook dinonaktifkan' diff --git a/modules/webhooks/config/locales/crowdin/it.yml b/modules/webhooks/config/locales/crowdin/it.yml index bbcacd4217b..516e2555ac9 100644 --- a/modules/webhooks/config/locales/crowdin/it.yml +++ b/modules/webhooks/config/locales/crowdin/it.yml @@ -36,10 +36,8 @@ it: updated: "Aggiornato" comment: "Commento" internal_comment: "Commento interno" - explanation: - text: > - Al verificarsi di un evento come la creazione di un pacchetto di lavoro o di un aggiornamento su un progetto, OpenProject invierà una richiesta POST agli endpoint web configurati. Spesso, l'evento viene inviato dopo che il %{link} è passato. - link: periodo di aggregazione configurato + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook abilitato' disabled: 'Webhook disabilitato' diff --git a/modules/webhooks/config/locales/crowdin/ja.yml b/modules/webhooks/config/locales/crowdin/ja.yml index 6b41ee5d989..566e96e7f75 100644 --- a/modules/webhooks/config/locales/crowdin/ja.yml +++ b/modules/webhooks/config/locales/crowdin/ja.yml @@ -36,10 +36,8 @@ ja: updated: "更新しました" comment: "コメント" internal_comment: "内部コメント" - explanation: - text: > - ワークパッケージの作成やプロジェクトの更新などのイベントが発生するとします。 OpenProjectは設定されたWebエンドポイントにPOSTリクエストを送信します。 多くの場合、イベントは %{link} が過ぎた後に送信されます。 - link: 集計期間を設定する + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhookは有効です' disabled: 'Webhookは無効です' diff --git a/modules/webhooks/config/locales/crowdin/ka.yml b/modules/webhooks/config/locales/crowdin/ka.yml index b31a0d63956..19d5c9dd1d4 100644 --- a/modules/webhooks/config/locales/crowdin/ka.yml +++ b/modules/webhooks/config/locales/crowdin/ka.yml @@ -36,10 +36,8 @@ ka: updated: "განახლებულია" comment: "კომენტარი" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/kk.yml b/modules/webhooks/config/locales/crowdin/kk.yml index f2313234cc9..323ac073342 100644 --- a/modules/webhooks/config/locales/crowdin/kk.yml +++ b/modules/webhooks/config/locales/crowdin/kk.yml @@ -36,10 +36,8 @@ kk: updated: "Updated" comment: "Comment" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/ko.yml b/modules/webhooks/config/locales/crowdin/ko.yml index 8c01d522670..677ebfe71b9 100644 --- a/modules/webhooks/config/locales/crowdin/ko.yml +++ b/modules/webhooks/config/locales/crowdin/ko.yml @@ -36,10 +36,8 @@ ko: updated: "업데이트됨" comment: "코멘트" internal_comment: "내부 코멘트" - explanation: - text: > - 작업 패키지 생성 또는 프로젝트 업데이트 같은 이벤트가 발생하면 OpenProject는 구성된 웹 엔드포인트에 POST 요청을 보냅니다. 종종 %{link}이(가) 통과된 후에 이벤트가 전송됩니다. - link: 구성된 집계 기간 + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook이 활성화되었습니다' disabled: 'Webhook이 비활성화되었습니다' diff --git a/modules/webhooks/config/locales/crowdin/lt.yml b/modules/webhooks/config/locales/crowdin/lt.yml index 5932df0703e..b8f0ec10d15 100644 --- a/modules/webhooks/config/locales/crowdin/lt.yml +++ b/modules/webhooks/config/locales/crowdin/lt.yml @@ -36,10 +36,8 @@ lt: updated: "Atnaujinta" comment: "Komentaras" internal_comment: "Internal comment" - explanation: - text: > - Atsitikus įvykiui, tokiam kaip darbų paketo sukūrimui ar projekto pakeitimui, OpenProject išsiųs POST užklausą nurodytoms jungtims. Dažnai įvykis siunčiamas po %{link} praėjimo. - link: konfigūruotas agregavimo periodas + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: '„Webhook“ įgalintas' disabled: '„Webhook“ atjungtas' diff --git a/modules/webhooks/config/locales/crowdin/lv.yml b/modules/webhooks/config/locales/crowdin/lv.yml index 3f4c99c1d77..e07243da800 100644 --- a/modules/webhooks/config/locales/crowdin/lv.yml +++ b/modules/webhooks/config/locales/crowdin/lv.yml @@ -36,10 +36,8 @@ lv: updated: "Updated" comment: "Komentârs" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/mn.yml b/modules/webhooks/config/locales/crowdin/mn.yml index c40719ffde2..2a8710bfea2 100644 --- a/modules/webhooks/config/locales/crowdin/mn.yml +++ b/modules/webhooks/config/locales/crowdin/mn.yml @@ -36,10 +36,8 @@ mn: updated: "Updated" comment: "Comment" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/ms.yml b/modules/webhooks/config/locales/crowdin/ms.yml index 700f1183c18..65a0d6ec62d 100644 --- a/modules/webhooks/config/locales/crowdin/ms.yml +++ b/modules/webhooks/config/locales/crowdin/ms.yml @@ -36,10 +36,8 @@ ms: updated: "Telah dikemas kini" comment: "Komen" internal_comment: "Internal comment" - explanation: - text: > - Apabila berlakunya peristiwa seperti ciptaan pakej kerja, atau projek yang telah dikemas kini, OpenProject akan menghantar permintaan POST kepada titik akhir web yang telah dikonfigurasi. Selalunya peristiwa tersebut akan dihantar selepas %{link} telah lepas. - link: tempoh pengumpulan yang dikonfigurasi + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook telah didayakan' disabled: 'Wekbook telah dinyahdayakan' diff --git a/modules/webhooks/config/locales/crowdin/ne.yml b/modules/webhooks/config/locales/crowdin/ne.yml index 6503c58181b..1fea522dfe3 100644 --- a/modules/webhooks/config/locales/crowdin/ne.yml +++ b/modules/webhooks/config/locales/crowdin/ne.yml @@ -36,10 +36,8 @@ ne: updated: "Updated" comment: "Comment" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/nl.yml b/modules/webhooks/config/locales/crowdin/nl.yml index 2cee3d569b1..279777f8915 100644 --- a/modules/webhooks/config/locales/crowdin/nl.yml +++ b/modules/webhooks/config/locales/crowdin/nl.yml @@ -36,10 +36,8 @@ nl: updated: "Bijgewerkt" comment: "Commentaar" internal_comment: "Internal comment" - explanation: - text: > - Bij het voorkomen van een gebeurtenis zoals het maken van een werkpakket of een update van een project OpenProject stuurt een POST-aanvraag naar de geconfigureerde webeindpunten. Vaak wordt de afspraak verzonden nadat de %{link} voorbij is. - link: geconfigureerde aggregatie periode + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is ingeschakeld' disabled: 'Webhook is uitgeschakeld' diff --git a/modules/webhooks/config/locales/crowdin/no.yml b/modules/webhooks/config/locales/crowdin/no.yml index 93c9a038925..383c2b39835 100644 --- a/modules/webhooks/config/locales/crowdin/no.yml +++ b/modules/webhooks/config/locales/crowdin/no.yml @@ -36,10 +36,8 @@ updated: "Oppdatert" comment: "Kommentar" internal_comment: "Internal comment" - explanation: - text: > - Ved forekomst av en hendelse som oppretting av en arbeidspakke eller en oppdatering fra et prosjekt, vil OpenProject sende en POST-forespørsel til de konfigurerte nettendepunktene. Ofte blir hendelsen sendt etter at %{link} er godkjent. - link: konfigurert summeringsperiode + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook er aktivert' disabled: 'Webhook er deaktivert' diff --git a/modules/webhooks/config/locales/crowdin/pl.yml b/modules/webhooks/config/locales/crowdin/pl.yml index 84af7505657..f5c361694a1 100644 --- a/modules/webhooks/config/locales/crowdin/pl.yml +++ b/modules/webhooks/config/locales/crowdin/pl.yml @@ -36,10 +36,8 @@ pl: updated: "Zaktualizowano" comment: "Komentarz" internal_comment: "Komentarz wewnętrzny" - explanation: - text: > - Po wystąpieniu zdarzenia takiego jak utworzenie pakietu roboczego lub aktualizacja projektu OpenProject wyśle żądanie POST do skonfigurowanych punktów końcowych sieci. Zdarzenie jest często wysyłane po upływie %{link}. - link: skonfigurowany okres agregacji + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook jest włączony' disabled: 'Webhook jest wyłączony' diff --git a/modules/webhooks/config/locales/crowdin/pt-BR.yml b/modules/webhooks/config/locales/crowdin/pt-BR.yml index 40429fed013..59599fc4063 100644 --- a/modules/webhooks/config/locales/crowdin/pt-BR.yml +++ b/modules/webhooks/config/locales/crowdin/pt-BR.yml @@ -36,10 +36,8 @@ pt-BR: updated: "Atualizado" comment: "Comentário" internal_comment: "Comentário interno" - explanation: - text: > - Na ocorrência de um evento como a criação de um pacote de trabalho ou uma atualização em um projeto, o OpenProject enviará uma solicitação POST para os terminais web configurados. Muitas vezes, o evento é enviado após o %{link} ter passado. - link: período de agregação configurado + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook está habilitado' disabled: 'Webhook está desativado' diff --git a/modules/webhooks/config/locales/crowdin/pt-PT.yml b/modules/webhooks/config/locales/crowdin/pt-PT.yml index 2c66ce2b8f1..2c8217bcf87 100644 --- a/modules/webhooks/config/locales/crowdin/pt-PT.yml +++ b/modules/webhooks/config/locales/crowdin/pt-PT.yml @@ -36,10 +36,8 @@ pt-PT: updated: "Atualizado" comment: "Comentário" internal_comment: "Comentário interno" - explanation: - text: > - Após a ocorrência de um evento, como criação de um pacote de trabalho ou atualização de um projeto, o OpenProject envia uma solicitação POST para os web endpoints configurados. Muitas vezes, o evento é enviado depois de %{link} ter passado. - link: período de agregação configurado + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook está ativado' disabled: 'Webhook está desativado' diff --git a/modules/webhooks/config/locales/crowdin/ro.yml b/modules/webhooks/config/locales/crowdin/ro.yml index 016567c24ea..a1bc7c1665d 100644 --- a/modules/webhooks/config/locales/crowdin/ro.yml +++ b/modules/webhooks/config/locales/crowdin/ro.yml @@ -36,10 +36,8 @@ ro: updated: "Actualizat" comment: "Comentariu" internal_comment: "Comentariu intern" - explanation: - text: > - La apariția unui eveniment, cum ar fi crearea unui pachet de lucru sau o actualizare a unui proiect, OpenProject va trimite o cerere POST către punctele finale web configurate. De multe ori, evenimentul este trimis după ce a trecut %{link}. - link: perioada de agregare configurată + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook este activat' disabled: 'Webhook este dezactivat' diff --git a/modules/webhooks/config/locales/crowdin/ru.yml b/modules/webhooks/config/locales/crowdin/ru.yml index 9ec42b36002..42b4547ec44 100644 --- a/modules/webhooks/config/locales/crowdin/ru.yml +++ b/modules/webhooks/config/locales/crowdin/ru.yml @@ -36,10 +36,8 @@ ru: updated: "Обновлено" comment: "Комментарий" internal_comment: "Служебный комментарий" - explanation: - text: > - При возникновении события, например, создания пакета работ или обновления проекта, OpenProject будет отправлять POST запрос на сконфигурированные конечные точки сети. Зачастую событие отправляется после прохождения %{link}. - link: настроенный период агрегации + explanation_html: > + При наступлении такого события, как создание пакета работ или обновление проекта, OpenProject отправит POST-запрос на настроенные конечные веб-точки. Часто событие отправляется после истечения [настроенного периода агрегирования](aggregation_path). status: enabled: 'Вебхук включён' disabled: 'Вебхук отключён' diff --git a/modules/webhooks/config/locales/crowdin/rw.yml b/modules/webhooks/config/locales/crowdin/rw.yml index ace3c89cba2..e54adf31f74 100644 --- a/modules/webhooks/config/locales/crowdin/rw.yml +++ b/modules/webhooks/config/locales/crowdin/rw.yml @@ -36,10 +36,8 @@ rw: updated: "Updated" comment: "Comment" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/si.yml b/modules/webhooks/config/locales/crowdin/si.yml index 152216f7941..cb89297ea5d 100644 --- a/modules/webhooks/config/locales/crowdin/si.yml +++ b/modules/webhooks/config/locales/crowdin/si.yml @@ -36,10 +36,8 @@ si: updated: "Updated" comment: "අදහස් දක්වන්න" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/sk.yml b/modules/webhooks/config/locales/crowdin/sk.yml index 5b5943e65eb..9bfc1a41710 100644 --- a/modules/webhooks/config/locales/crowdin/sk.yml +++ b/modules/webhooks/config/locales/crowdin/sk.yml @@ -36,10 +36,8 @@ sk: updated: "Updated" comment: "Komentár" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/sl.yml b/modules/webhooks/config/locales/crowdin/sl.yml index c850a08184b..40b54c4409b 100644 --- a/modules/webhooks/config/locales/crowdin/sl.yml +++ b/modules/webhooks/config/locales/crowdin/sl.yml @@ -36,10 +36,8 @@ sl: updated: "Posodobljen" comment: "Komentar" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Spletna zanka je omogočena' disabled: 'Spletna zanka je onemogočena' diff --git a/modules/webhooks/config/locales/crowdin/sr.yml b/modules/webhooks/config/locales/crowdin/sr.yml index 44147784e58..0d20a4c8d9e 100644 --- a/modules/webhooks/config/locales/crowdin/sr.yml +++ b/modules/webhooks/config/locales/crowdin/sr.yml @@ -36,10 +36,8 @@ sr: updated: "Updated" comment: "Comment" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/sv.yml b/modules/webhooks/config/locales/crowdin/sv.yml index 6d84224025b..894b2b7a6b2 100644 --- a/modules/webhooks/config/locales/crowdin/sv.yml +++ b/modules/webhooks/config/locales/crowdin/sv.yml @@ -36,10 +36,8 @@ sv: updated: "Uppdaterad" comment: "Kommentar" internal_comment: "Intern kommentar" - explanation: - text: > - Vid förekomsten av en händelse som skapandet av ett arbetspaket eller en uppdatering av ett projekt, OpenProject kommer att skicka en POST-begäran till de konfigurerade webbslutpunkterna. Ofta skickas händelsen efter att %{link} har passerat. - link: konfigurerad aggregationsperiod + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webbhook är aktiverad' disabled: 'Webbhook är inaktiverad' diff --git a/modules/webhooks/config/locales/crowdin/th.yml b/modules/webhooks/config/locales/crowdin/th.yml index b0dde3b0700..366ea6ee5e7 100644 --- a/modules/webhooks/config/locales/crowdin/th.yml +++ b/modules/webhooks/config/locales/crowdin/th.yml @@ -36,10 +36,8 @@ th: updated: "Updated" comment: "ความคิดเห็น" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/tr.yml b/modules/webhooks/config/locales/crowdin/tr.yml index 52dafec7e34..9657666d2f6 100644 --- a/modules/webhooks/config/locales/crowdin/tr.yml +++ b/modules/webhooks/config/locales/crowdin/tr.yml @@ -36,10 +36,8 @@ tr: updated: "Güncellenmiş" comment: "Yorum" internal_comment: "İç yorum" - explanation: - text: > - Bir iş paketinin oluşturulması veya bir projede güncelleme gibi bir olayın meydana gelmesi üzerine, OpenProject yapılandırılmış web uç noktalarına bir POST isteği gönderir. Çoğu zaman olay, %{link} geçtikten sonra gönderilir. - link: yapılandırılmış toplama dönemi + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Web kancası etkin' disabled: 'Web kancası devre dışı' diff --git a/modules/webhooks/config/locales/crowdin/uk.yml b/modules/webhooks/config/locales/crowdin/uk.yml index 1967d1e617d..8c5e1dd0420 100644 --- a/modules/webhooks/config/locales/crowdin/uk.yml +++ b/modules/webhooks/config/locales/crowdin/uk.yml @@ -36,10 +36,8 @@ uk: updated: "Оновлено" comment: "Коментар" internal_comment: "Внутрішній коментар" - explanation: - text: > - У разі настання такої події, як створення пакета робіт або оновлення проєкту, OpenProject надcилає POST-запит налаштованим кінцевим точкам мережі. Здебільшого подія надсилається після проходження %{link}. - link: налаштований період агрегації + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Вебхук увімкнено' disabled: 'Вебхук вимкнений' diff --git a/modules/webhooks/config/locales/crowdin/uz.yml b/modules/webhooks/config/locales/crowdin/uz.yml index daee50cafab..b712bd8716e 100644 --- a/modules/webhooks/config/locales/crowdin/uz.yml +++ b/modules/webhooks/config/locales/crowdin/uz.yml @@ -36,10 +36,8 @@ uz: updated: "Updated" comment: "Comment" internal_comment: "Internal comment" - explanation: - text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook is enabled' disabled: 'Webhook is disabled' diff --git a/modules/webhooks/config/locales/crowdin/vi.yml b/modules/webhooks/config/locales/crowdin/vi.yml index e2a85cfa97c..749aed30429 100644 --- a/modules/webhooks/config/locales/crowdin/vi.yml +++ b/modules/webhooks/config/locales/crowdin/vi.yml @@ -36,10 +36,8 @@ vi: updated: "đã cập nhật" comment: "bình luận" internal_comment: "Bình luận nội bộ" - explanation: - text: > - Khi xảy ra một sự kiện như tạo gói công việc hoặc cập nhật dự án, OpenProject sẽ gửi yêu cầu POST đến các điểm cuối web đã định cấu hình. Thông thường, sự kiện được gửi sau khi %{link} trôi qua. - link: khoảng thời gian tổng hợp được cấu hình + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook đã được bật' disabled: 'Webhook bị vô hiệu hóa' diff --git a/modules/webhooks/config/locales/crowdin/zh-CN.yml b/modules/webhooks/config/locales/crowdin/zh-CN.yml index c8dc6d45871..4b5c87cf180 100644 --- a/modules/webhooks/config/locales/crowdin/zh-CN.yml +++ b/modules/webhooks/config/locales/crowdin/zh-CN.yml @@ -36,10 +36,8 @@ zh-CN: updated: "已更新" comment: "评论" internal_comment: "内部评论" - explanation: - text: > - 在发生诸如创建工作包或更新项目之类的事件时,OpenProject 将向配置的 Web 端点发送一个 POST 请求。通常,会在 %{link}过后发送事件。 - link: 配置的聚合期 + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook 已启用' disabled: 'Webhook 已禁用' diff --git a/modules/webhooks/config/locales/crowdin/zh-TW.yml b/modules/webhooks/config/locales/crowdin/zh-TW.yml index 96e66911eda..e188c88ecc6 100644 --- a/modules/webhooks/config/locales/crowdin/zh-TW.yml +++ b/modules/webhooks/config/locales/crowdin/zh-TW.yml @@ -36,10 +36,8 @@ zh-TW: updated: "已更新" comment: "留言" internal_comment: "內部留言" - explanation: - text: > - 當建立或更新工作套件的"事件"發生時,OpenProject 將會傳送 POST 請求。 通常,事件是在 %{link} 過之後發送。 - link: 設定的聚合週期 + explanation_html: > + Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. status: enabled: 'Webhook 已啟用' disabled: 'Webhook 已停用' diff --git a/modules/wikis/config/locales/crowdin/af.yml b/modules/wikis/config/locales/crowdin/af.yml new file mode 100644 index 00000000000..5669b46e783 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/af.yml @@ -0,0 +1,23 @@ +--- +af: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/ar.yml b/modules/wikis/config/locales/crowdin/ar.yml new file mode 100644 index 00000000000..c116cf1836a --- /dev/null +++ b/modules/wikis/config/locales/crowdin/ar.yml @@ -0,0 +1,31 @@ +--- +ar: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + zero: Inline page links + one: Inline page link + two: Inline page links + few: Inline page links + many: Inline page links + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + zero: Relation page links + one: Relation page link + two: Relation page links + few: Relation page links + many: Relation page links + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/az.yml b/modules/wikis/config/locales/crowdin/az.yml new file mode 100644 index 00000000000..182b3312f02 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/az.yml @@ -0,0 +1,23 @@ +--- +az: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/be.yml b/modules/wikis/config/locales/crowdin/be.yml new file mode 100644 index 00000000000..1bafd116e62 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/be.yml @@ -0,0 +1,27 @@ +--- +be: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + few: Inline page links + many: Inline page links + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + few: Relation page links + many: Relation page links + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/bg.yml b/modules/wikis/config/locales/crowdin/bg.yml new file mode 100644 index 00000000000..1cc5ebba634 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/bg.yml @@ -0,0 +1,23 @@ +--- +bg: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/ca.yml b/modules/wikis/config/locales/crowdin/ca.yml new file mode 100644 index 00000000000..82b7c24d7f4 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/ca.yml @@ -0,0 +1,23 @@ +--- +ca: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/ckb-IR.yml b/modules/wikis/config/locales/crowdin/ckb-IR.yml new file mode 100644 index 00000000000..d5a8774275c --- /dev/null +++ b/modules/wikis/config/locales/crowdin/ckb-IR.yml @@ -0,0 +1,23 @@ +--- +ckb-IR: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/cs.yml b/modules/wikis/config/locales/crowdin/cs.yml new file mode 100644 index 00000000000..2ee01be9cf8 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/cs.yml @@ -0,0 +1,27 @@ +--- +cs: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + few: Inline page links + many: Inline page links + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + few: Relation page links + many: Relation page links + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/da.yml b/modules/wikis/config/locales/crowdin/da.yml new file mode 100644 index 00000000000..2b178f46252 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/da.yml @@ -0,0 +1,23 @@ +--- +da: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/de.yml b/modules/wikis/config/locales/crowdin/de.yml new file mode 100644 index 00000000000..c7d6173d765 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/de.yml @@ -0,0 +1,23 @@ +--- +de: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/el.yml b/modules/wikis/config/locales/crowdin/el.yml new file mode 100644 index 00000000000..4a656b2e111 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/el.yml @@ -0,0 +1,23 @@ +--- +el: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/eo.yml b/modules/wikis/config/locales/crowdin/eo.yml new file mode 100644 index 00000000000..f3a45b6f908 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/eo.yml @@ -0,0 +1,23 @@ +--- +eo: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/es.yml b/modules/wikis/config/locales/crowdin/es.yml new file mode 100644 index 00000000000..726038b7462 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/es.yml @@ -0,0 +1,23 @@ +--- +es: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/et.yml b/modules/wikis/config/locales/crowdin/et.yml new file mode 100644 index 00000000000..dce325c49cb --- /dev/null +++ b/modules/wikis/config/locales/crowdin/et.yml @@ -0,0 +1,23 @@ +--- +et: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/eu.yml b/modules/wikis/config/locales/crowdin/eu.yml new file mode 100644 index 00000000000..837f294e972 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/eu.yml @@ -0,0 +1,23 @@ +--- +eu: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/fa.yml b/modules/wikis/config/locales/crowdin/fa.yml new file mode 100644 index 00000000000..3125cbbee25 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/fa.yml @@ -0,0 +1,23 @@ +--- +fa: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/fi.yml b/modules/wikis/config/locales/crowdin/fi.yml new file mode 100644 index 00000000000..b6690106300 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/fi.yml @@ -0,0 +1,23 @@ +--- +fi: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/fil.yml b/modules/wikis/config/locales/crowdin/fil.yml new file mode 100644 index 00000000000..cf2b2f6fe54 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/fil.yml @@ -0,0 +1,23 @@ +--- +fil: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/fr.yml b/modules/wikis/config/locales/crowdin/fr.yml new file mode 100644 index 00000000000..a813c2c74d7 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/fr.yml @@ -0,0 +1,23 @@ +--- +fr: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Méthode d'authentification + authentication_methods: + oauth2_sso: Authentification unique via le fournisseur d'identité OpenID Connect + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: URL de l'instance + wiki_audience: Audience de XWiki + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Wiki interne + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: Fournisseur XWiki + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/he.yml b/modules/wikis/config/locales/crowdin/he.yml new file mode 100644 index 00000000000..0f22ad576c3 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/he.yml @@ -0,0 +1,27 @@ +--- +he: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + two: Inline page links + many: Inline page links + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + two: Relation page links + many: Relation page links + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/hi.yml b/modules/wikis/config/locales/crowdin/hi.yml new file mode 100644 index 00000000000..3099291f13b --- /dev/null +++ b/modules/wikis/config/locales/crowdin/hi.yml @@ -0,0 +1,23 @@ +--- +hi: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/hr.yml b/modules/wikis/config/locales/crowdin/hr.yml new file mode 100644 index 00000000000..b71a13b5086 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/hr.yml @@ -0,0 +1,25 @@ +--- +hr: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + few: Inline page links + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + few: Relation page links + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/hu.yml b/modules/wikis/config/locales/crowdin/hu.yml new file mode 100644 index 00000000000..a8a74f7b99a --- /dev/null +++ b/modules/wikis/config/locales/crowdin/hu.yml @@ -0,0 +1,23 @@ +--- +hu: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/id.yml b/modules/wikis/config/locales/crowdin/id.yml new file mode 100644 index 00000000000..a14e256db40 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/id.yml @@ -0,0 +1,21 @@ +--- +id: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/it.yml b/modules/wikis/config/locales/crowdin/it.yml new file mode 100644 index 00000000000..692e0571b5f --- /dev/null +++ b/modules/wikis/config/locales/crowdin/it.yml @@ -0,0 +1,23 @@ +--- +it: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/ja.yml b/modules/wikis/config/locales/crowdin/ja.yml new file mode 100644 index 00000000000..e8b45978721 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/ja.yml @@ -0,0 +1,21 @@ +--- +ja: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/js-af.yml b/modules/wikis/config/locales/crowdin/js-af.yml new file mode 100644 index 00000000000..199722798b8 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-af.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +af: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-ar.yml b/modules/wikis/config/locales/crowdin/js-ar.yml new file mode 100644 index 00000000000..1b0748ae118 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-ar.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +ar: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-az.yml b/modules/wikis/config/locales/crowdin/js-az.yml new file mode 100644 index 00000000000..faecc8c77e9 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-az.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +az: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-be.yml b/modules/wikis/config/locales/crowdin/js-be.yml new file mode 100644 index 00000000000..140a68fa808 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-be.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +be: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-bg.yml b/modules/wikis/config/locales/crowdin/js-bg.yml new file mode 100644 index 00000000000..d28bb289f15 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-bg.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +bg: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-ca.yml b/modules/wikis/config/locales/crowdin/js-ca.yml new file mode 100644 index 00000000000..47bc7e68547 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-ca.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +ca: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-ckb-IR.yml b/modules/wikis/config/locales/crowdin/js-ckb-IR.yml new file mode 100644 index 00000000000..b4c57ec5beb --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-ckb-IR.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +ckb-IR: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-cs.yml b/modules/wikis/config/locales/crowdin/js-cs.yml new file mode 100644 index 00000000000..9fa17673c70 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-cs.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +cs: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-da.yml b/modules/wikis/config/locales/crowdin/js-da.yml new file mode 100644 index 00000000000..17c60d32e31 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-da.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +da: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-de.yml b/modules/wikis/config/locales/crowdin/js-de.yml new file mode 100644 index 00000000000..0417910f762 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-de.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +de: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-el.yml b/modules/wikis/config/locales/crowdin/js-el.yml new file mode 100644 index 00000000000..f8f9d22caf8 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-el.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +el: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-eo.yml b/modules/wikis/config/locales/crowdin/js-eo.yml new file mode 100644 index 00000000000..71f8adeb333 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-eo.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +eo: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-es.yml b/modules/wikis/config/locales/crowdin/js-es.yml new file mode 100644 index 00000000000..4f079f15acb --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-es.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +es: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-et.yml b/modules/wikis/config/locales/crowdin/js-et.yml new file mode 100644 index 00000000000..b6b9bf1bf82 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-et.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +et: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-eu.yml b/modules/wikis/config/locales/crowdin/js-eu.yml new file mode 100644 index 00000000000..93b8cfa31a7 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-eu.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +eu: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-fa.yml b/modules/wikis/config/locales/crowdin/js-fa.yml new file mode 100644 index 00000000000..b4d375126da --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-fa.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +fa: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-fi.yml b/modules/wikis/config/locales/crowdin/js-fi.yml new file mode 100644 index 00000000000..b5ac0094f41 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-fi.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +fi: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-fil.yml b/modules/wikis/config/locales/crowdin/js-fil.yml new file mode 100644 index 00000000000..3844ae6bc6b --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-fil.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +fil: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-fr.yml b/modules/wikis/config/locales/crowdin/js-fr.yml new file mode 100644 index 00000000000..8d6ef531db0 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-fr.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +fr: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-he.yml b/modules/wikis/config/locales/crowdin/js-he.yml new file mode 100644 index 00000000000..a7768d5d1ec --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-he.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +he: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-hi.yml b/modules/wikis/config/locales/crowdin/js-hi.yml new file mode 100644 index 00000000000..96a003ceff1 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-hi.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +hi: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-hr.yml b/modules/wikis/config/locales/crowdin/js-hr.yml new file mode 100644 index 00000000000..3791ce2be33 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-hr.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +hr: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-hu.yml b/modules/wikis/config/locales/crowdin/js-hu.yml new file mode 100644 index 00000000000..f12552874ee --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-hu.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +hu: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-id.yml b/modules/wikis/config/locales/crowdin/js-id.yml new file mode 100644 index 00000000000..3c7b4d675bd --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-id.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +id: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-it.yml b/modules/wikis/config/locales/crowdin/js-it.yml new file mode 100644 index 00000000000..117acbc92d9 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-it.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +it: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-ja.yml b/modules/wikis/config/locales/crowdin/js-ja.yml new file mode 100644 index 00000000000..85d4b8ca1cd --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-ja.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +ja: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-ka.yml b/modules/wikis/config/locales/crowdin/js-ka.yml new file mode 100644 index 00000000000..bb6559bf21d --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-ka.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +ka: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-kk.yml b/modules/wikis/config/locales/crowdin/js-kk.yml new file mode 100644 index 00000000000..b273fc93d8c --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-kk.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +kk: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-ko.yml b/modules/wikis/config/locales/crowdin/js-ko.yml new file mode 100644 index 00000000000..17c7e0dd93a --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-ko.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +ko: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-lt.yml b/modules/wikis/config/locales/crowdin/js-lt.yml new file mode 100644 index 00000000000..af2c972d6c0 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-lt.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +lt: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-lv.yml b/modules/wikis/config/locales/crowdin/js-lv.yml new file mode 100644 index 00000000000..7d69037dcf0 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-lv.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +lv: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-mn.yml b/modules/wikis/config/locales/crowdin/js-mn.yml new file mode 100644 index 00000000000..f5bd8225999 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-mn.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +mn: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-ms.yml b/modules/wikis/config/locales/crowdin/js-ms.yml new file mode 100644 index 00000000000..ffa48193723 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-ms.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +ms: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-ne.yml b/modules/wikis/config/locales/crowdin/js-ne.yml new file mode 100644 index 00000000000..a50504bd78e --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-ne.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +ne: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-nl.yml b/modules/wikis/config/locales/crowdin/js-nl.yml new file mode 100644 index 00000000000..1a19527872d --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-nl.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +nl: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-no.yml b/modules/wikis/config/locales/crowdin/js-no.yml new file mode 100644 index 00000000000..50dd3e28f12 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-no.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +"no": + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-pl.yml b/modules/wikis/config/locales/crowdin/js-pl.yml new file mode 100644 index 00000000000..47003d2615c --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-pl.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +pl: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-pt-BR.yml b/modules/wikis/config/locales/crowdin/js-pt-BR.yml new file mode 100644 index 00000000000..36defd24f64 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-pt-BR.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +pt-BR: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-pt-PT.yml b/modules/wikis/config/locales/crowdin/js-pt-PT.yml new file mode 100644 index 00000000000..96837cb2872 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-pt-PT.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +pt-PT: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-ro.yml b/modules/wikis/config/locales/crowdin/js-ro.yml new file mode 100644 index 00000000000..27c548267b3 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-ro.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +ro: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-ru.yml b/modules/wikis/config/locales/crowdin/js-ru.yml new file mode 100644 index 00000000000..09034c12781 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-ru.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +ru: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-rw.yml b/modules/wikis/config/locales/crowdin/js-rw.yml new file mode 100644 index 00000000000..054a4015450 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-rw.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +rw: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-si.yml b/modules/wikis/config/locales/crowdin/js-si.yml new file mode 100644 index 00000000000..2cdb88ec26c --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-si.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +si: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-sk.yml b/modules/wikis/config/locales/crowdin/js-sk.yml new file mode 100644 index 00000000000..3977f3da742 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-sk.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +sk: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-sl.yml b/modules/wikis/config/locales/crowdin/js-sl.yml new file mode 100644 index 00000000000..c7db272f27e --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-sl.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +sl: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-sr.yml b/modules/wikis/config/locales/crowdin/js-sr.yml new file mode 100644 index 00000000000..3abc35aee69 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-sr.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +sr: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-sv.yml b/modules/wikis/config/locales/crowdin/js-sv.yml new file mode 100644 index 00000000000..9f1d091157e --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-sv.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +sv: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-th.yml b/modules/wikis/config/locales/crowdin/js-th.yml new file mode 100644 index 00000000000..3ff1ddec134 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-th.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +th: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-tr.yml b/modules/wikis/config/locales/crowdin/js-tr.yml new file mode 100644 index 00000000000..af6738c37e6 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-tr.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +tr: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-uk.yml b/modules/wikis/config/locales/crowdin/js-uk.yml new file mode 100644 index 00000000000..025281f96ba --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-uk.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +uk: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-uz.yml b/modules/wikis/config/locales/crowdin/js-uz.yml new file mode 100644 index 00000000000..111654b9e50 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-uz.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +uz: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-vi.yml b/modules/wikis/config/locales/crowdin/js-vi.yml new file mode 100644 index 00000000000..e00e56f3e87 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-vi.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +vi: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-zh-CN.yml b/modules/wikis/config/locales/crowdin/js-zh-CN.yml new file mode 100644 index 00000000000..89fd6362ab3 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-zh-CN.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +zh-CN: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/js-zh-TW.yml b/modules/wikis/config/locales/crowdin/js-zh-TW.yml new file mode 100644 index 00000000000..8f04fb76cd4 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/js-zh-TW.yml @@ -0,0 +1,26 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# See COPYRIGHT and LICENSE files for more details. +#++ +zh-TW: + js: + work_packages: + tabs: + wikis: 'Wikis' diff --git a/modules/wikis/config/locales/crowdin/ka.yml b/modules/wikis/config/locales/crowdin/ka.yml new file mode 100644 index 00000000000..d7e7e1aba3a --- /dev/null +++ b/modules/wikis/config/locales/crowdin/ka.yml @@ -0,0 +1,23 @@ +--- +ka: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/kk.yml b/modules/wikis/config/locales/crowdin/kk.yml new file mode 100644 index 00000000000..5e6df7e6daa --- /dev/null +++ b/modules/wikis/config/locales/crowdin/kk.yml @@ -0,0 +1,23 @@ +--- +kk: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/ko.yml b/modules/wikis/config/locales/crowdin/ko.yml new file mode 100644 index 00000000000..64a7eae2953 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/ko.yml @@ -0,0 +1,21 @@ +--- +ko: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/lt.yml b/modules/wikis/config/locales/crowdin/lt.yml new file mode 100644 index 00000000000..0cf234b7f1e --- /dev/null +++ b/modules/wikis/config/locales/crowdin/lt.yml @@ -0,0 +1,27 @@ +--- +lt: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + few: Inline page links + many: Inline page links + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + few: Relation page links + many: Relation page links + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/lv.yml b/modules/wikis/config/locales/crowdin/lv.yml new file mode 100644 index 00000000000..1720ff4e905 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/lv.yml @@ -0,0 +1,25 @@ +--- +lv: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + zero: Inline page links + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + zero: Relation page links + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/mn.yml b/modules/wikis/config/locales/crowdin/mn.yml new file mode 100644 index 00000000000..71ef66babd8 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/mn.yml @@ -0,0 +1,23 @@ +--- +mn: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/ms.yml b/modules/wikis/config/locales/crowdin/ms.yml new file mode 100644 index 00000000000..41d723635d7 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/ms.yml @@ -0,0 +1,21 @@ +--- +ms: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/ne.yml b/modules/wikis/config/locales/crowdin/ne.yml new file mode 100644 index 00000000000..62d7ba32384 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/ne.yml @@ -0,0 +1,23 @@ +--- +ne: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/nl.yml b/modules/wikis/config/locales/crowdin/nl.yml new file mode 100644 index 00000000000..4b2e121d9e3 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/nl.yml @@ -0,0 +1,23 @@ +--- +nl: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/no.yml b/modules/wikis/config/locales/crowdin/no.yml new file mode 100644 index 00000000000..458a9048ffa --- /dev/null +++ b/modules/wikis/config/locales/crowdin/no.yml @@ -0,0 +1,23 @@ +--- +"no": + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/pl.yml b/modules/wikis/config/locales/crowdin/pl.yml new file mode 100644 index 00000000000..11ba881776b --- /dev/null +++ b/modules/wikis/config/locales/crowdin/pl.yml @@ -0,0 +1,27 @@ +--- +pl: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + few: Inline page links + many: Inline page links + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + few: Relation page links + many: Relation page links + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/pt-BR.yml b/modules/wikis/config/locales/crowdin/pt-BR.yml new file mode 100644 index 00000000000..88c642329dd --- /dev/null +++ b/modules/wikis/config/locales/crowdin/pt-BR.yml @@ -0,0 +1,23 @@ +--- +pt-BR: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/pt-PT.yml b/modules/wikis/config/locales/crowdin/pt-PT.yml new file mode 100644 index 00000000000..853ed079d9e --- /dev/null +++ b/modules/wikis/config/locales/crowdin/pt-PT.yml @@ -0,0 +1,23 @@ +--- +pt-PT: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/ro.yml b/modules/wikis/config/locales/crowdin/ro.yml new file mode 100644 index 00000000000..3bcc176cf9c --- /dev/null +++ b/modules/wikis/config/locales/crowdin/ro.yml @@ -0,0 +1,25 @@ +--- +ro: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + few: Inline page links + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + few: Relation page links + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/ru.yml b/modules/wikis/config/locales/crowdin/ru.yml new file mode 100644 index 00000000000..f22a0e33e4e --- /dev/null +++ b/modules/wikis/config/locales/crowdin/ru.yml @@ -0,0 +1,27 @@ +--- +ru: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + few: Inline page links + many: Inline page links + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + few: Relation page links + many: Relation page links + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/rw.yml b/modules/wikis/config/locales/crowdin/rw.yml new file mode 100644 index 00000000000..70bc363113f --- /dev/null +++ b/modules/wikis/config/locales/crowdin/rw.yml @@ -0,0 +1,23 @@ +--- +rw: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/si.yml b/modules/wikis/config/locales/crowdin/si.yml new file mode 100644 index 00000000000..60c6863541b --- /dev/null +++ b/modules/wikis/config/locales/crowdin/si.yml @@ -0,0 +1,23 @@ +--- +si: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/sk.yml b/modules/wikis/config/locales/crowdin/sk.yml new file mode 100644 index 00000000000..4aaa6821b7e --- /dev/null +++ b/modules/wikis/config/locales/crowdin/sk.yml @@ -0,0 +1,27 @@ +--- +sk: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + few: Inline page links + many: Inline page links + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + few: Relation page links + many: Relation page links + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/sl.yml b/modules/wikis/config/locales/crowdin/sl.yml new file mode 100644 index 00000000000..c18c5442fcc --- /dev/null +++ b/modules/wikis/config/locales/crowdin/sl.yml @@ -0,0 +1,27 @@ +--- +sl: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + two: Inline page links + few: Inline page links + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + two: Relation page links + few: Relation page links + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/sr.yml b/modules/wikis/config/locales/crowdin/sr.yml new file mode 100644 index 00000000000..7d0efd0a040 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/sr.yml @@ -0,0 +1,25 @@ +--- +sr: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + few: Inline page links + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + few: Relation page links + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/sv.yml b/modules/wikis/config/locales/crowdin/sv.yml new file mode 100644 index 00000000000..04e58a4833e --- /dev/null +++ b/modules/wikis/config/locales/crowdin/sv.yml @@ -0,0 +1,23 @@ +--- +sv: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/th.yml b/modules/wikis/config/locales/crowdin/th.yml new file mode 100644 index 00000000000..adcb4f38303 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/th.yml @@ -0,0 +1,21 @@ +--- +th: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/tr.yml b/modules/wikis/config/locales/crowdin/tr.yml new file mode 100644 index 00000000000..7eb36c84b93 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/tr.yml @@ -0,0 +1,23 @@ +--- +tr: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/uk.yml b/modules/wikis/config/locales/crowdin/uk.yml new file mode 100644 index 00000000000..67079f9d437 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/uk.yml @@ -0,0 +1,27 @@ +--- +uk: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + few: Inline page links + many: Inline page links + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + few: Relation page links + many: Relation page links + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/uz.yml b/modules/wikis/config/locales/crowdin/uz.yml new file mode 100644 index 00000000000..3a96693e12b --- /dev/null +++ b/modules/wikis/config/locales/crowdin/uz.yml @@ -0,0 +1,23 @@ +--- +uz: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + one: Inline page link + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + one: Relation page link + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/vi.yml b/modules/wikis/config/locales/crowdin/vi.yml new file mode 100644 index 00000000000..0cc347c5179 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/vi.yml @@ -0,0 +1,21 @@ +--- +vi: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/zh-CN.yml b/modules/wikis/config/locales/crowdin/zh-CN.yml new file mode 100644 index 00000000000..cf07f96f950 --- /dev/null +++ b/modules/wikis/config/locales/crowdin/zh-CN.yml @@ -0,0 +1,21 @@ +--- +zh-CN: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } diff --git a/modules/wikis/config/locales/crowdin/zh-TW.yml b/modules/wikis/config/locales/crowdin/zh-TW.yml new file mode 100644 index 00000000000..fb430959f8d --- /dev/null +++ b/modules/wikis/config/locales/crowdin/zh-TW.yml @@ -0,0 +1,21 @@ +--- +zh-TW: + activerecord: + attributes: + wikis/xwiki_provider: + authentication_method: Authentication method + authentication_methods: + oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider + two_way_oauth2: Two-way OAuth 2.0 authorization code flow + token_exchange_scope: XWiki Scope + url: Instance URL + wiki_audience: XWiki Audience + errors: { } + models: + wikis/inline_page_link: + other: Inline page links + wikis/internal_provider: Internal wiki + wikis/relation_page_link: + other: Relation page links + wikis/xwiki_provider: XWiki provider + wikis: { } From 48e48bd2f029405aadf8892b2d242e347f22e6a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20G=C3=BCnther?= Date: Thu, 26 Mar 2026 08:49:10 +0100 Subject: [PATCH 031/147] Change ownership of crowdin files before our fix runs --- .github/workflows/crowdin.yml | 3 +++ script/i18n/fix_crowdin_pt_language_root_key | 4 ---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/crowdin.yml b/.github/workflows/crowdin.yml index 861d79fd3dc..9e2e705dc91 100644 --- a/.github/workflows/crowdin.yml +++ b/.github/workflows/crowdin.yml @@ -79,6 +79,9 @@ jobs: env: OPENPROJECT_CROWDIN_PROJECT: ${{ secrets.OPENPROJECT_CROWDINV2_PROJECT }} OPENPROJECT_CROWDIN_API_KEY: ${{ secrets.OPENPROJECT_CROWDINV2_API_KEY }} + - name: "Fix ownership of downloaded translation files" + run: | + sudo chown -R $(id -u):$(id -g) config/locales/crowdin/ modules/*/config/locales/crowdin/ - name: "Fix root key in Portuguese crowdin translation files" run: | script/i18n/fix_crowdin_pt_language_root_key diff --git a/script/i18n/fix_crowdin_pt_language_root_key b/script/i18n/fix_crowdin_pt_language_root_key index 6254e34c2b7..0237262f142 100755 --- a/script/i18n/fix_crowdin_pt_language_root_key +++ b/script/i18n/fix_crowdin_pt_language_root_key @@ -1,10 +1,6 @@ #!/usr/bin/env bash echo "Fixing language root key in pt-BR and pt-PT crowdin files to match the filename" - -# Ensure crowdin directories are writable (they may be created with restrictive permissions by the Crowdin action) -chmod -R u+w config/locales/crowdin/ modules/*/config/locales/crowdin/ 2>/dev/null || true - if [ "$(uname -s)" = "Darwin" ]; then sed -i '' 's/^pt:/pt-BR:/' config/locales/crowdin/*pt-BR*.yml modules/*/config/locales/crowdin/*pt-BR*.yml sed -i '' 's/^pt:/pt-PT:/' config/locales/crowdin/*pt-PT*.yml modules/*/config/locales/crowdin/*pt-PT*.yml From d49f1610ae40a56f7930b31835a71c6feb749c35 Mon Sep 17 00:00:00 2001 From: Henriette Darge Date: Thu, 26 Mar 2026 08:58:55 +0100 Subject: [PATCH 032/147] Merge notifications and reminders page into one with two tabs --- .../show_page_header_component.rb | 62 +++++++++++++++++++ app/controllers/my_controller.rb | 7 +-- app/views/my/notifications.html.erb | 18 +++--- app/views/my/reminders.html.erb | 42 ------------- config/initializers/menus.rb | 6 +- config/locales/en.yml | 2 + config/routes.rb | 1 - spec/support/pages/my/reminders.rb | 2 +- 8 files changed, 74 insertions(+), 66 deletions(-) create mode 100644 app/components/my/notifications/show_page_header_component.rb delete mode 100644 app/views/my/reminders.html.erb diff --git a/app/components/my/notifications/show_page_header_component.rb b/app/components/my/notifications/show_page_header_component.rb new file mode 100644 index 00000000000..066c5be4a41 --- /dev/null +++ b/app/components/my/notifications/show_page_header_component.rb @@ -0,0 +1,62 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +module My + module Notifications + class ShowPageHeaderComponent < ApplicationComponent + def call + render(Primer::OpenProject::PageHeader.new) do |header| + header.with_title { t("my_account.notifications_and_email.title") } + header.with_breadcrumbs( + [{ href: helpers.my_account_path, text: t(:label_my_account) }, + t("my_account.notifications_and_email.title")] + ) + + helpers.render_tab_header_nav(header, tabs) + end + end + + def tabs + [ + { + name: "notifications", + path: helpers.my_notifications_path(tab: "notifications"), + label: I18n.t("js.notifications.settings.title") + }, + { + name: "reminders", + path: helpers.my_notifications_path(tab: "reminders"), + label: I18n.t("js.reminders.settings.title") + } + ] + end + end + end +end diff --git a/app/controllers/my_controller.rb b/app/controllers/my_controller.rb index 3d3e0f51a32..4bd2a06b511 100644 --- a/app/controllers/my_controller.rb +++ b/app/controllers/my_controller.rb @@ -50,7 +50,6 @@ class MyController < ApplicationController :change_password, :password_confirmation_dialog, :notifications, - :reminders, :non_working_times, :working_hours @@ -59,7 +58,6 @@ class MyController < ApplicationController menu_item :interface, only: [:interface] menu_item :password, only: [:password] menu_item :notifications, only: [:notifications] - menu_item :reminders, only: [:reminders] menu_item :working_hours, only: %i[working_hours non_working_times] def account; end @@ -93,12 +91,9 @@ class MyController < ApplicationController respond_with_dialog My::PasswordConfirmationDialog.new end - # Configure user's in app notifications + # Configure user's notifications and email reminders def notifications; end - # Configure user's mail reminders - def reminders; end - def working_hours render_403 unless OpenProject::FeatureDecisions.user_working_times_active? diff --git a/app/views/my/notifications.html.erb b/app/views/my/notifications.html.erb index 641c1ba1ef4..162805e1be1 100644 --- a/app/views/my/notifications.html.erb +++ b/app/views/my/notifications.html.erb @@ -27,16 +27,12 @@ See COPYRIGHT and LICENSE files for more details. ++#%> -<% html_title(t(:label_my_account), I18n.t("js.notifications.settings.title")) -%> +<% html_title(t(:label_my_account), t("my_account.notifications_and_email.title")) -%> -<%= - render(Primer::OpenProject::PageHeader.new) do |header| - header.with_title { I18n.t("js.notifications.settings.title") } - header.with_breadcrumbs( - [{ href: my_account_path, text: t(:label_my_account) }, - I18n.t("js.notifications.settings.title")] - ) - end -%> +<%= render(My::Notifications::ShowPageHeaderComponent.new) %> -<%= angular_component_tag "opce-notification-settings" %> +<% if params[:tab] == "reminders" %> + <%= angular_component_tag "opce-reminder-settings" %> +<% else %> + <%= angular_component_tag "opce-notification-settings" %> +<% end %> diff --git a/app/views/my/reminders.html.erb b/app/views/my/reminders.html.erb deleted file mode 100644 index 17afc40f1fe..00000000000 --- a/app/views/my/reminders.html.erb +++ /dev/null @@ -1,42 +0,0 @@ -<%#-- copyright -OpenProject is an open source project management software. -Copyright (C) the OpenProject GmbH - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License version 3. - -OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: -Copyright (C) 2006-2013 Jean-Philippe Lang -Copyright (C) 2010-2013 the ChiliProject Team - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -See COPYRIGHT and LICENSE files for more details. - -++#%> - -<% html_title(t(:label_my_account), I18n.t("js.reminders.settings.title")) -%> - -<%= - render(Primer::OpenProject::PageHeader.new) do |header| - header.with_title { I18n.t("js.reminders.settings.title") } - header.with_breadcrumbs( - [{ href: my_account_path, text: t(:label_my_account) }, - I18n.t("js.reminders.settings.title")] - ) - end -%> - -<%= angular_component_tag "opce-reminder-settings" %> diff --git a/config/initializers/menus.rb b/config/initializers/menus.rb index 733be24b1cd..e8a82f0f137 100644 --- a/config/initializers/menus.rb +++ b/config/initializers/menus.rb @@ -303,12 +303,8 @@ Redmine::MenuManager.map :my_menu do |menu| icon: "devices" menu.push :notifications, { controller: "/my", action: "notifications" }, - caption: I18n.t("js.notifications.settings.title"), + caption: I18n.t("my_account.notifications_and_email.title"), icon: "bell" - menu.push :reminders, - { controller: "/my", action: "reminders" }, - caption: I18n.t("js.reminders.settings.title"), - icon: "unread" end Redmine::MenuManager.map :admin_menu do |menu| diff --git a/config/locales/en.yml b/config/locales/en.yml index f8a8c250dc3..637d61ae631 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -3526,6 +3526,8 @@ en: label: "Add…" my_account: + notifications_and_email: + title: "Notification and email" access_tokens: description: "Provider tokens are issued by OpenProject, allowing other applications to access it. Client tokens are issued by other applications, allowing OpenProject to access them." no_results: diff --git a/config/routes.rb b/config/routes.rb index ad657256f9a..641383c6283 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1039,7 +1039,6 @@ Rails.application.routes.draw do get "/my/locale", action: "locale" get "/my/interface", action: "interface" get "/my/notifications", action: "notifications" - get "/my/reminders", action: "reminders" get "/my/working_hours", action: "working_hours" get "/my/non_working_times", action: "non_working_times" diff --git a/spec/support/pages/my/reminders.rb b/spec/support/pages/my/reminders.rb index 94c2dc7f940..06d0b1a9ec4 100644 --- a/spec/support/pages/my/reminders.rb +++ b/spec/support/pages/my/reminders.rb @@ -34,7 +34,7 @@ module Pages module My class Reminders < ::Pages::Reminders::Settings def path - my_reminders_path + my_notifications_path(tab: "reminders") end end end From a87bb81179afca26b602050e62e52eb02bdb194b Mon Sep 17 00:00:00 2001 From: Madhu Reddy Date: Thu, 26 Mar 2026 13:48:02 +0530 Subject: [PATCH 033/147] [#73431] Fix SCIM v2 user API returning duplicate records The index action on the SCIM users endpoint was returning duplicate records when a user belonged to multiple groups or had multiple auth provider links. This happened because storage_scope uses left_joins, which produces one row per join match. Added .distinct to the index query to eliminate duplicates. Also extracted scim_index_storage_query and scim_all_attribute_names into their own private methods for better readability. --- .../scim_v2/base_controller_actions.rb | 48 ++++++++++++------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/app/controllers/scim_v2/base_controller_actions.rb b/app/controllers/scim_v2/base_controller_actions.rb index 01b3448478c..0280aa8061c 100644 --- a/app/controllers/scim_v2/base_controller_actions.rb +++ b/app/controllers/scim_v2/base_controller_actions.rb @@ -38,15 +38,9 @@ module ScimV2 rescue_from "ActiveRecord::RecordNotFound", with: :handle_resource_not_found def index - query = if params[:filter].blank? - storage_scope - else - attribute_map = storage_class.new.scim_queryable_attributes - parser = ::Scimitar::Lists::QueryParser.new(attribute_map) - - parser.parse(params[:filter]) - parser.to_activerecord_query(storage_scope) - end + # Applies .distinct to avoid duplicate records caused by + # left_joins in storage_scope (e.g. groups, auth provider links). + query = scim_index_storage_query.distinct pagination_info = scim_pagination_info(query.count) page_of_results = query @@ -73,21 +67,39 @@ module ScimV2 end end + # Builds the base query for the SCIM index action, + # applying any SCIM filter params if present. private - def include_attributes - first_level_attrs = storage_class.scim_attributes_map.keys.map(&:to_s) - second_level_attrs = - storage_class - .scim_attributes_map - .find_all { |_, v| v.is_a? Hash } - .flat_map { |parent, childs| childs.map { |child, _| "#{parent}.#{child}" } } - all_possible_attributes = (first_level_attrs + second_level_attrs) + def scim_index_storage_query + return storage_scope if params[:filter].blank? + # Returns the list of SCIM attributes to include in the response, + # excluding any attributes specified in the excludedAttributes param. + attribute_map = storage_class.new.scim_queryable_attributes + parser = ::Scimitar::Lists::QueryParser.new(attribute_map) + + parser.parse(params[:filter]) + parser.to_activerecord_query(storage_scope) + end + + def include_attributes + # Collects all possible SCIM attribute names (top-level and nested) + # from the storage class's scim_attributes_map. excluded_attributes = params.fetch(:excludedAttributes, "").split(",") excluded_parents = excluded_attributes.filter_map { |attr| attr.split(".")[-2] } - all_possible_attributes - excluded_attributes - excluded_parents + scim_all_attribute_names - excluded_attributes - excluded_parents + end + + def scim_all_attribute_names + map = storage_class.scim_attributes_map + nested = + map + .find_all { |_, v| v.is_a? Hash } + .flat_map { |parent, childs| childs.map { |child, _| "#{parent}.#{child}" } } + + map.keys.map(&:to_s) + nested end def raise_result_errors_for_scim(result) From 1f7146b2fad098deea7d792915298605727d8bc7 Mon Sep 17 00:00:00 2001 From: Madhu Reddy Date: Thu, 26 Mar 2026 13:50:32 +0530 Subject: [PATCH 034/147] [#73431] Add tests for duplicate SCIM v2 user results Adds request specs for the SCIM v2 users index endpoint to make sure each user is returned only once, even with multiple group memberships or auth provider links. Covers the duplicate-record regression caused by joined relations. --- spec/requests/scim_v2/groups_spec.rb | 208 +++++++++++++++------------ spec/requests/scim_v2/users_spec.rb | 20 ++- 2 files changed, 135 insertions(+), 93 deletions(-) diff --git a/spec/requests/scim_v2/groups_spec.rb b/spec/requests/scim_v2/groups_spec.rb index 083a254af64..7a648213613 100644 --- a/spec/requests/scim_v2/groups_spec.rb +++ b/spec/requests/scim_v2/groups_spec.rb @@ -31,6 +31,45 @@ require "spec_helper" RSpec.describe "SCIM API Groups", with_ee: [:scim_api] do + def expect_scim_group_write_response_meta_matches_group(response_body, group) + expect(response_body["meta"].except("lastModified")).to eq( + "location" => "http://test.host/scim_v2/Groups/#{group.id}", + "created" => group.created_at.iso8601, + "resourceType" => "Group" + ) + expect(Time.iso8601(response_body["meta"]["lastModified"])).to be_within(2.seconds).of(group.updated_at) + end + + def scim_list_expected_group_resources(group:, other:, user:) + [ + { + "displayName" => group.name, + "externalId" => external_group_id, + "id" => group.id.to_s, + "members" => [{ "value" => user.id.to_s }], + "meta" => { + "location" => "http://test.host/scim_v2/Groups/#{group.id}", + "created" => group.created_at.iso8601, + "lastModified" => group.updated_at.iso8601, + "resourceType" => "Group" + }, + "schemas" => ["urn:ietf:params:scim:schemas:core:2.0:Group"] + }, + { + "displayName" => other.name, + "id" => other.id.to_s, + "members" => [{ "value" => user.id.to_s }], + "meta" => { + "location" => "http://test.host/scim_v2/Groups/#{other.id}", + "created" => other.created_at.iso8601, + "lastModified" => other.updated_at.iso8601, + "resourceType" => "Group" + }, + "schemas" => ["urn:ietf:params:scim:schemas:core:2.0:Group"] + } + ] + end + let(:external_user_id) { "idp_user_id_123asdqwe12345" } let(:external_group_id) { "idp_group_id_123asdqwe12345" } let(:external_admin_id) { "idp_admin_id_123asdqwe12345" } @@ -62,26 +101,33 @@ RSpec.describe "SCIM API Groups", with_ee: [:scim_api] do get "/scim_v2/Groups", {}, headers response_body = JSON.parse(last_response.body) - expect(response_body).to match("Resources" => contain_exactly({ "displayName" => group.name, - "externalId" => external_group_id, - "id" => group.id.to_s, - "members" => [{ "value" => user.id.to_s }], - "meta" => { "location" => "http://test.host/scim_v2/Groups/#{group.id}", - "created" => group.created_at.iso8601, - "lastModified" => group.updated_at.iso8601, - "resourceType" => "Group" }, - "schemas" => ["urn:ietf:params:scim:schemas:core:2.0:Group"] }, { "displayName" => group_without_external_id.name, - "id" => group_without_external_id.id.to_s, - "members" => [{ "value" => user.id.to_s }], - "meta" => { "location" => "http://test.host/scim_v2/Groups/#{group_without_external_id.id}", - "created" => group_without_external_id.created_at.iso8601, - "lastModified" => group_without_external_id.updated_at.iso8601, - "resourceType" => "Group" }, - "schemas" => ["urn:ietf:params:scim:schemas:core:2.0:Group"] }), - "itemsPerPage" => 100, - "schemas" => ["urn:ietf:params:scim:api:messages:2.0:ListResponse"], - "startIndex" => 1, - "totalResults" => 2) + expect(response_body).to match( + "Resources" => match_array(scim_list_expected_group_resources(group:, + other: group_without_external_id, + user:)), + "itemsPerPage" => 100, + "schemas" => ["urn:ietf:params:scim:api:messages:2.0:ListResponse"], + "startIndex" => 1, + "totalResults" => 2 + ) + end + + it "lists each group once when it has multiple members" do + multi_group = create(:group, + identity_url: "#{oidc_provider_slug}:idp_group_multi_member", + members: [user1, user2]) + + get "/scim_v2/Groups", {}, headers + + response_body = JSON.parse(last_response.body) + resource_ids = response_body["Resources"].pluck("id") + expect(resource_ids.uniq).to eq(resource_ids) + + multi_resources = response_body["Resources"].select { |item| item["id"] == multi_group.id.to_s } + expect(multi_resources.length).to eq(1) + + member_values = multi_resources.first["members"].pluck("value") + expect(member_values).to contain_exactly(user1.id.to_s, user2.id.to_s) end it "filters results" do @@ -255,15 +301,13 @@ RSpec.describe "SCIM API Groups", with_ee: [:scim_api] do response_body = JSON.parse(last_response.body) group.reload - expect(response_body).to match("displayName" => group.name, - "externalId" => new_external_group_id, - "id" => group.id.to_s, - "meta" => { "location" => "http://test.host/scim_v2/Groups/#{group.id}", - "created" => group.created_at.iso8601, - "lastModified" => group.updated_at.iso8601, - "resourceType" => "Group" }, - "members" => contain_exactly({ "value" => user.id.to_s }, { "value" => admin.id.to_s }), - "schemas" => ["urn:ietf:params:scim:schemas:core:2.0:Group"]) + expect(response_body.except("meta")).to match("displayName" => group.name, + "externalId" => new_external_group_id, + "id" => group.id.to_s, + "members" => contain_exactly({ "value" => user.id.to_s }, + { "value" => admin.id.to_s }), + "schemas" => ["urn:ietf:params:scim:schemas:core:2.0:Group"]) + expect_scim_group_write_response_meta_matches_group(response_body, group) end it "updates members if there is $ref field present for every member(Keycloak plugin adds it for example)" do @@ -287,15 +331,13 @@ RSpec.describe "SCIM API Groups", with_ee: [:scim_api] do response_body = JSON.parse(last_response.body) group.reload - expect(response_body).to match("displayName" => group.name, - "externalId" => new_external_group_id, - "id" => group.id.to_s, - "meta" => { "location" => "http://test.host/scim_v2/Groups/#{group.id}", - "created" => group.created_at.iso8601, - "lastModified" => group.updated_at.iso8601, - "resourceType" => "Group" }, - "members" => contain_exactly({ "value" => user.id.to_s }, { "value" => admin.id.to_s }), - "schemas" => ["urn:ietf:params:scim:schemas:core:2.0:Group"]) + expect(response_body.except("meta")).to match("displayName" => group.name, + "externalId" => new_external_group_id, + "id" => group.id.to_s, + "members" => contain_exactly({ "value" => user.id.to_s }, + { "value" => admin.id.to_s }), + "schemas" => ["urn:ietf:params:scim:schemas:core:2.0:Group"]) + expect_scim_group_write_response_meta_matches_group(response_body, group) end it "updates members if there is no members field(Keycloak plugin sends memberless group request like that)" do @@ -309,15 +351,12 @@ RSpec.describe "SCIM API Groups", with_ee: [:scim_api] do response_body = JSON.parse(last_response.body) group.reload - expect(response_body).to match("displayName" => group.name, - "externalId" => new_external_group_id, - "id" => group.id.to_s, - "meta" => { "location" => "http://test.host/scim_v2/Groups/#{group.id}", - "created" => group.created_at.iso8601, - "lastModified" => group.updated_at.iso8601, - "resourceType" => "Group" }, - "members" => [], - "schemas" => ["urn:ietf:params:scim:schemas:core:2.0:Group"]) + expect(response_body.except("meta")).to match("displayName" => group.name, + "externalId" => new_external_group_id, + "id" => group.id.to_s, + "members" => [], + "schemas" => ["urn:ietf:params:scim:schemas:core:2.0:Group"]) + expect_scim_group_write_response_meta_matches_group(response_body, group) end end @@ -338,15 +377,12 @@ RSpec.describe "SCIM API Groups", with_ee: [:scim_api] do response_body = JSON.parse(last_response.body) group.reload - expect(response_body).to eq("displayName" => group.name, - "externalId" => new_external_group_id, - "id" => group.id.to_s, - "members" => [{ "value" => user.id.to_s }], - "meta" => { "location" => "http://test.host/scim_v2/Groups/#{group.id}", - "created" => group.created_at.iso8601, - "lastModified" => group.updated_at.iso8601, - "resourceType" => "Group" }, - "schemas" => ["urn:ietf:params:scim:schemas:core:2.0:Group"]) + expect(response_body.except("meta")).to eq("displayName" => group.name, + "externalId" => new_external_group_id, + "id" => group.id.to_s, + "members" => [{ "value" => user.id.to_s }], + "schemas" => ["urn:ietf:params:scim:schemas:core:2.0:Group"]) + expect_scim_group_write_response_meta_matches_group(response_body, group) end it "supports replacing of members" do @@ -369,15 +405,12 @@ RSpec.describe "SCIM API Groups", with_ee: [:scim_api] do response_body = JSON.parse(last_response.body) group.reload - expect(response_body).to eq("displayName" => group.name, - "externalId" => external_group_id, - "id" => group.id.to_s, - "members" => [{ "value" => user2.id.to_s }], - "meta" => { "location" => "http://test.host/scim_v2/Groups/#{group.id}", - "created" => group.created_at.iso8601, - "lastModified" => group.updated_at.iso8601, - "resourceType" => "Group" }, - "schemas" => ["urn:ietf:params:scim:schemas:core:2.0:Group"]) + expect(response_body.except("meta")).to eq("displayName" => group.name, + "externalId" => external_group_id, + "id" => group.id.to_s, + "members" => [{ "value" => user2.id.to_s }], + "schemas" => ["urn:ietf:params:scim:schemas:core:2.0:Group"]) + expect_scim_group_write_response_meta_matches_group(response_body, group) end it "supports adding of a member" do @@ -397,16 +430,13 @@ RSpec.describe "SCIM API Groups", with_ee: [:scim_api] do response_body = JSON.parse(last_response.body) group.reload - expect(response_body).to eq("displayName" => group.name, - "externalId" => external_group_id, - "id" => group.id.to_s, - "members" => [{ "value" => user1.id.to_s }, - { "value" => user2.id.to_s }], - "meta" => { "location" => "http://test.host/scim_v2/Groups/#{group.id}", - "created" => group.created_at.iso8601, - "lastModified" => group.updated_at.iso8601, - "resourceType" => "Group" }, - "schemas" => ["urn:ietf:params:scim:schemas:core:2.0:Group"]) + expect(response_body.except("meta")).to eq("displayName" => group.name, + "externalId" => external_group_id, + "id" => group.id.to_s, + "members" => [{ "value" => user1.id.to_s }, + { "value" => user2.id.to_s }], + "schemas" => ["urn:ietf:params:scim:schemas:core:2.0:Group"]) + expect_scim_group_write_response_meta_matches_group(response_body, group) end it "supports removal of a member" do @@ -425,15 +455,12 @@ RSpec.describe "SCIM API Groups", with_ee: [:scim_api] do response_body = JSON.parse(last_response.body) group.reload - expect(response_body).to eq("displayName" => group.name, - "externalId" => external_group_id, - "id" => group.id.to_s, - "members" => [], - "meta" => { "location" => "http://test.host/scim_v2/Groups/#{group.id}", - "created" => group.created_at.iso8601, - "lastModified" => group.updated_at.iso8601, - "resourceType" => "Group" }, - "schemas" => ["urn:ietf:params:scim:schemas:core:2.0:Group"]) + expect(response_body.except("meta")).to eq("displayName" => group.name, + "externalId" => external_group_id, + "id" => group.id.to_s, + "members" => [], + "schemas" => ["urn:ietf:params:scim:schemas:core:2.0:Group"]) + expect_scim_group_write_response_meta_matches_group(response_body, group) end it "supports removal of a member with exclusion of members list from the response" do @@ -452,14 +479,11 @@ RSpec.describe "SCIM API Groups", with_ee: [:scim_api] do response_body = JSON.parse(last_response.body) group.reload - expect(response_body).to eq("displayName" => group.name, - "externalId" => external_group_id, - "id" => group.id.to_s, - "meta" => { "location" => "http://test.host/scim_v2/Groups/#{group.id}", - "created" => group.created_at.iso8601, - "lastModified" => group.updated_at.iso8601, - "resourceType" => "Group" }, - "schemas" => ["urn:ietf:params:scim:schemas:core:2.0:Group"]) + expect(response_body.except("meta")).to eq("displayName" => group.name, + "externalId" => external_group_id, + "id" => group.id.to_s, + "schemas" => ["urn:ietf:params:scim:schemas:core:2.0:Group"]) + expect_scim_group_write_response_meta_matches_group(response_body, group) end end end diff --git a/spec/requests/scim_v2/users_spec.rb b/spec/requests/scim_v2/users_spec.rb index dbf1df5f461..e634262ee03 100644 --- a/spec/requests/scim_v2/users_spec.rb +++ b/spec/requests/scim_v2/users_spec.rb @@ -59,7 +59,7 @@ RSpec.describe "SCIM API Users", with_ee: [:scim_api] do get "/scim_v2/Users", {}, headers response_body = JSON.parse(last_response.body) - ids = response_body["Resources"].map { |item| item["id"] } + ids = response_body["Resources"].pluck("id") expect(ids).to include(locked_user.id.to_s) expect(response_body["Resources"].find { |resource| resource["id"] == locked_user.id.to_s }["active"]).to be(false) expect(ids).not_to include(user_marked_for_deletion.id.to_s) @@ -99,6 +99,24 @@ RSpec.describe "SCIM API Users", with_ee: [:scim_api] do "totalResults" => 5) end + it "lists each user once when they belong to multiple groups and includes all groups" do + second_group = create(:group, + identity_url: "#{oidc_provider.slug}:idp_group_second_membership", + members: [user]) + + get "/scim_v2/Users", {}, headers + + response_body = JSON.parse(last_response.body) + resource_ids = response_body["Resources"].pluck("id") + expect(resource_ids.uniq).to eq(resource_ids) + + user_resources = response_body["Resources"].select { |item| item["id"] == user.id.to_s } + expect(user_resources.length).to eq(1) + + group_values = user_resources.first["groups"].pluck("value") + expect(group_values).to contain_exactly(group.id.to_s, second_group.id.to_s) + end + it "filters results by familyName case-insensitively" do expected_body = { "Resources" => [{ "active" => true, "emails" => [{ "primary" => true, From 496c2c837dec667143854b4016373690575dc01b Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Thu, 26 Mar 2026 08:32:39 +0000 Subject: [PATCH 035/147] update locales from crowdin [ci skip] --- config/locales/crowdin/de.yml | 36 +++++++++---------- config/locales/crowdin/fr.yml | 2 +- .../backlogs/config/locales/crowdin/de.yml | 12 +++---- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/config/locales/crowdin/de.yml b/config/locales/crowdin/de.yml index 33099e7dddc..f3c97321562 100644 --- a/config/locales/crowdin/de.yml +++ b/config/locales/crowdin/de.yml @@ -415,32 +415,32 @@ de: user_author: "Benutzer ist Autor" user_assignee: "Benutzer ist zugewiesen" index: - description: "Configure status transitions for each work package type." + description: "Konfigurieren Sie die Statusübergänge für jeden Arbeitspaket-Typ." type_filter: - label: "Filter by type name…" + label: "Typen nach Name filtern…" status_button: "Status" statuses_dialog: - title: "Statuses" - label: "Statuses enabled for this type" - caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + title: "Status" + label: "Für diesen Typ aktivierte Status" + caption: "Status hinzufügen oder entfernen, die Sie mit diesem Typ verknüpfen möchten. Das Entfernen eines Status löscht auch den damit verbundenen Workflow." statuses_removal_dialog: - title: "Remove statuses" + title: "Status entfernen" heading: - one: "Remove 1 status?" - other: "Remove %{count} statuses?" - description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" - confirm: "Remove" + one: "Diesen Status entfernen?" + other: "%{count} Status entfernen?" + description: "Wenn Sie diese Status entfernen, stehen sie für diesen Typ nicht mehr zur Verfügung und bestehende Workflows werden gelöscht. Sind Sie sicher, dass Sie fortfahren möchten?" + confirm: "Entfernen" leave_confirmation: - title: "Save changes before continuing?" - description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" - ignore: "Ignore changes" - save: "Save changes and continue" + title: "Änderungen speichern, bevor Sie fortfahren?" + description: "Sie sind im Begriff, diese Seite zu verlassen, aber Sie haben noch nicht gespeicherte Änderungen. Möchten Sie diese speichern, bevor Sie fortfahren?" + ignore: "Änderungen ignorieren" + save: "Änderungen speichern und fortfahren" role_selector: - label: "Role: %{role}" - no_role: "Select role" + label: "Rolle: %{role}" + no_role: "Rolle auswählen" blankslate: - title: "No status transitions configured" - description: "Add statuses to start configuring workflows for this role" + title: "Keine Statusübergänge konfiguriert" + description: "Status hinzufügen, um mit der Konfiguration von Arbeitsabläufen für diese Rolle zu beginnen" info: database_deprecation_html: > Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. Your installation will remain functional with your current database, but anticipate incompatability in future releases.
We have prepared [upgrade guides for all installation methods](upgrade_guide). You can perform the upgrade ahead of the next release at any time by following the guides. diff --git a/config/locales/crowdin/fr.yml b/config/locales/crowdin/fr.yml index 614d83f5665..0e8c5d596d3 100644 --- a/config/locales/crowdin/fr.yml +++ b/config/locales/crowdin/fr.yml @@ -3344,7 +3344,7 @@ fr: links: configuration_guide: "Guide de configuration" get_in_touch: "Vous avez des questions ? Contactez-nous." - instructions_after_registration_link: "Vous pourrez vous connecter après avoir activé votre compte en cliquant [Ici](%{signin}." + instructions_after_registration_link: "Vous pourrez vous connecter après avoir activé votre compte en cliquant [Ici](signin_url)." instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: diff --git a/modules/backlogs/config/locales/crowdin/de.yml b/modules/backlogs/config/locales/crowdin/de.yml index 22cfa7e2524..54f8c4851e9 100644 --- a/modules/backlogs/config/locales/crowdin/de.yml +++ b/modules/backlogs/config/locales/crowdin/de.yml @@ -32,9 +32,9 @@ de: name: "Sprint-Name" sharing: "Teilen" statuses: - in_planning: "In planning" - active: "Active" - completed: "Completed" + in_planning: "In Planung" + active: "Aktiv" + completed: "Abgeschlossen" project: sprint_sharing: "Sprint sharing" sprint: @@ -198,9 +198,9 @@ de: story_menu_component: label_actions: "Weitere Aktionen" action_menu: - copy_url_to_clipboard: "Copy URL to clipboard" - copy_work_package_id: "Copy work package ID" - move_menu: "Move" + copy_url_to_clipboard: "URL in die Zwischenablage kopieren" + copy_work_package_id: "Arbeitspaket-ID kopieren" + move_menu: "Verschieben" backlogs_points_burn_direction: "Burnup/-down Punkte" backlogs_product_backlog: "Produkt-Backlog" backlogs_story: "Story" From 4ce9784b334abd7aef0dfc8caf4304e4488048fc Mon Sep 17 00:00:00 2001 From: Tobias Dillmann Date: Thu, 26 Mar 2026 10:22:27 +0100 Subject: [PATCH 036/147] Rename OS X to macOS on keyboard shortcuts page --- docs/user-guide/keyboard-shortcuts-access-keys/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user-guide/keyboard-shortcuts-access-keys/README.md b/docs/user-guide/keyboard-shortcuts-access-keys/README.md index f068312b85a..ce8aa0d63df 100644 --- a/docs/user-guide/keyboard-shortcuts-access-keys/README.md +++ b/docs/user-guide/keyboard-shortcuts-access-keys/README.md @@ -73,7 +73,7 @@ OpenProject (since version 3.0) offers useful keyboard shortcuts to enhance you ------ -### OS X +### macOS - Firefox: Ctrl + Opt + <access key number> - Google Chrome: Ctrl + Opt + <access key number> From 0b0be3bdd5136531e89eedc07ddcc3f27f6f8e0b Mon Sep 17 00:00:00 2001 From: Tobias Dillmann Date: Tue, 2 Dec 2025 17:15:24 +0100 Subject: [PATCH 037/147] [#69596] use templates for hover card bluprints --- .../portfolios/details_component.html.erb | 3 +- .../hover-card-trigger.controller.ts | 30 +++++++++---------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/app/components/portfolios/details_component.html.erb b/app/components/portfolios/details_component.html.erb index bb5223eb2f4..0dd94b5a9dd 100644 --- a/app/components/portfolios/details_component.html.erb +++ b/app/components/portfolios/details_component.html.erb @@ -166,9 +166,8 @@ <%= # Card that appears when hovering over the progress bar if render_sub_status_bar? - content_tag(:div, class: "op-hover-card--hidden-container") do + content_tag(:template, id: sub_status_hover_card_id) do flex_layout( - id: sub_status_hover_card_id, classes: "op-portfolios--popover", data: { test_selector: "op-portfolios--hover-card-#{portfolio.id}" diff --git a/frontend/src/stimulus/controllers/hover-card-trigger.controller.ts b/frontend/src/stimulus/controllers/hover-card-trigger.controller.ts index 249bf9a8b21..d5e871ce772 100644 --- a/frontend/src/stimulus/controllers/hover-card-trigger.controller.ts +++ b/frontend/src/stimulus/controllers/hover-card-trigger.controller.ts @@ -146,8 +146,8 @@ export default class HoverCardTriggerController extends ApplicationController { this.close(true); const turboFrameUrl = this.parseHoverCardUrl(el); - const popoverEl = this.getPopoverFromId(el); - if (!turboFrameUrl && !popoverEl) { return; } + const popoverTemplate = this.getPopoverTemplateFromId(el); + if (!turboFrameUrl && !popoverTemplate) { return; } // Reset close timer for when hovering over multiple triggers in quick succession. // A timer from a previous hover card might still be running. We do not want it to @@ -156,11 +156,11 @@ export default class HoverCardTriggerController extends ApplicationController { // Set a delay before showing the hover card this.hoverTimeout = window.setTimeout(() => { - this.showHoverCard(el, turboFrameUrl, popoverEl); + this.showHoverCard(el, turboFrameUrl, popoverTemplate); }, this.OPEN_DELAY_IN_MS); } - private showHoverCard(el:HTMLElement, turboFrameUrl:string, popoverElement:HTMLElement|null) { + private showHoverCard(el:HTMLElement, turboFrameUrl:string, popoverTemplate:HTMLTemplateElement|null) { // Abort if the trigger element is no longer present in the DOM. This can happen when this method is called after a delay. if (!this.element.contains(el)) { return; } // Do not try to show two hover cards at the same time. @@ -168,8 +168,8 @@ export default class HoverCardTriggerController extends ApplicationController { // The mouse might have left the trigger while we were waiting for the hover delay. if (!this.mouseIsHoveringOverTrigger) { return; } - if (popoverElement) { - this.showHoverCardViaExistingElement(el, popoverElement); + if (popoverTemplate) { + this.showHoverCardViaExistingElement(el, popoverTemplate); } else { this.loadAndShowHoverCardViaTurboFrame(el, turboFrameUrl); } @@ -194,13 +194,13 @@ export default class HoverCardTriggerController extends ApplicationController { }); } - private showHoverCardViaExistingElement(targetEl:HTMLElement, protoPopover:HTMLElement) { + private showHoverCardViaExistingElement(targetEl:HTMLElement, popoverTemplate:HTMLTemplateElement) { const overlay = this.getAndResetOverlay(); if (!overlay) { return; } this.moveOverlayToAppropriateParent(overlay, targetEl); - const popover = this.cloneStaticPopover(overlay, protoPopover); + const popover = this.popoverFromTemplate(overlay, popoverTemplate); this.isShowingHoverCard = true; this.previousTarget = targetEl; @@ -272,11 +272,11 @@ export default class HoverCardTriggerController extends ApplicationController { return url === 'about:blank' ? '' : url; } - private getPopoverFromId(el:HTMLElement):HTMLElement|null { + private getPopoverTemplateFromId(el:HTMLElement):HTMLTemplateElement|null { const id = el.getAttribute('data-hover-card-popover-id'); if (!id) { return null; } - return document.getElementById(id); + return document.getElementById(id) as HTMLTemplateElement; } private async reposition(element:HTMLElement, target:HTMLElement) { @@ -317,14 +317,14 @@ export default class HoverCardTriggerController extends ApplicationController { return { turboFrame, popover }; } - private cloneStaticPopover(overlay:HTMLElement, staticPopover:HTMLElement):HTMLElement { - const popover = staticPopover.cloneNode(true) as HTMLElement; + private popoverFromTemplate(overlay:HTMLElement, template:HTMLTemplateElement):HTMLElement { + const popoverFragment = template.content.cloneNode(true) as DocumentFragment; - popover.removeAttribute('id'); + overlay.appendChild(popoverFragment); + + const popover = overlay.children[0] as HTMLElement; this.setPopoverAttributes(popover); - overlay.appendChild(popover); - return popover; } From a3c61ccdf0be7486daef3001e10400810b01ffde Mon Sep 17 00:00:00 2001 From: Tobias Dillmann Date: Tue, 2 Dec 2025 17:22:11 +0100 Subject: [PATCH 038/147] [#69596] Remove unused CSS class --- frontend/src/global_styles/content/_hover_cards.sass | 3 --- 1 file changed, 3 deletions(-) diff --git a/frontend/src/global_styles/content/_hover_cards.sass b/frontend/src/global_styles/content/_hover_cards.sass index f381e94fd02..6487295d793 100644 --- a/frontend/src/global_styles/content/_hover_cards.sass +++ b/frontend/src/global_styles/content/_hover_cards.sass @@ -52,6 +52,3 @@ &:popover-open opacity: 1 - - &--hidden-container - display: none From 5d2953af55d2be05a717e94ab1218e18194ec0c0 Mon Sep 17 00:00:00 2001 From: Tobias Dillmann Date: Tue, 2 Dec 2025 18:02:32 +0100 Subject: [PATCH 039/147] [#69596] Use wrapper div for hover card blueprint --- app/components/portfolios/details_component.sass | 3 +++ .../controllers/hover-card-trigger.controller.ts | 11 ++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/app/components/portfolios/details_component.sass b/app/components/portfolios/details_component.sass index 43fda50c700..bd946da2a46 100644 --- a/app/components/portfolios/details_component.sass +++ b/app/components/portfolios/details_component.sass @@ -51,3 +51,6 @@ $status_not-set: var(--progressBar-track-bgColor) // invisible background color @media screen and (max-width: $breakpoint-sm) margin-top: var(--base-size-16, 1rem) margin-bottom: var(--base-size-16, 1rem) !important + +.op-hover-card:has(.op-portfolios--popover) + width: fit-content diff --git a/frontend/src/stimulus/controllers/hover-card-trigger.controller.ts b/frontend/src/stimulus/controllers/hover-card-trigger.controller.ts index d5e871ce772..1e4ffb6f5b6 100644 --- a/frontend/src/stimulus/controllers/hover-card-trigger.controller.ts +++ b/frontend/src/stimulus/controllers/hover-card-trigger.controller.ts @@ -318,13 +318,14 @@ export default class HoverCardTriggerController extends ApplicationController { } private popoverFromTemplate(overlay:HTMLElement, template:HTMLTemplateElement):HTMLElement { - const popoverFragment = template.content.cloneNode(true) as DocumentFragment; - - overlay.appendChild(popoverFragment); - - const popover = overlay.children[0] as HTMLElement; + const popover = document.createElement('div'); this.setPopoverAttributes(popover); + const popoverFragment = template.content.cloneNode(true) as DocumentFragment; + popover.appendChild(popoverFragment); + + overlay.appendChild(popover); + return popover; } From 7222729e43fcb31101f6e18c9aba76c08b238f40 Mon Sep 17 00:00:00 2001 From: Tobias Dillmann Date: Fri, 12 Dec 2025 17:18:52 +0100 Subject: [PATCH 040/147] [#69596] Update lookbook documentation --- lookbook/docs/components/hover-cards.md.erb | 34 +++++++++------------ 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/lookbook/docs/components/hover-cards.md.erb b/lookbook/docs/components/hover-cards.md.erb index 3d5df90ded2..773bef0b93a 100644 --- a/lookbook/docs/components/hover-cards.md.erb +++ b/lookbook/docs/components/hover-cards.md.erb @@ -59,8 +59,8 @@ The content of a hover card can be defined in two ways: 1. Via a turbo frame that is fetched from a URL. This is the preferred way if you want to lazily load the contents of the hover card when needed. -2. Via an existing DOM element that is present (but hidden) in the document on page load. This is useful when the - content is already present and no additional fetching is necessary. +2. Via an existing `