From 046df33911a90c6f0e60e90c72f0bf6acc55f7ba Mon Sep 17 00:00:00 2001
From: Christophe Bliard
Date: Mon, 12 Aug 2024 16:39:57 +0200
Subject: [PATCH 002/147] Add tests for html diff of markdown content
Used for wiki diffs
---
app/controllers/wiki_controller.rb | 11 +--
lib/open_project/html_diff.rb | 47 ++++++++++
spec/lib/open_project/html_diff_spec.rb | 110 ++++++++++++++++++++++++
3 files changed, 161 insertions(+), 7 deletions(-)
create mode 100644 lib/open_project/html_diff.rb
create mode 100644 spec/lib/open_project/html_diff_spec.rb
diff --git a/app/controllers/wiki_controller.rb b/app/controllers/wiki_controller.rb
index 8ec4252105cc..bb3233ac0fd7 100644
--- a/app/controllers/wiki_controller.rb
+++ b/app/controllers/wiki_controller.rb
@@ -261,13 +261,10 @@ def history
def diff
if (@diff = @page.diff(params[:version_to], params[:version_from]))
- @html_diff = HTMLDiff::DiffBuilder.new(
- helpers.format_text(@diff.content_from.data.text, disable_macro_expansion: true),
- helpers.format_text(@diff.content_to.data.text, disable_macro_expansion: true)
- ).build
- .gsub(/\n\r?<\/ins>/, '')
- .gsub(/\n\r?<\/del>/, '')
- .gsub(/^()/, '\1')
+ @html_diff = OpenProject::HtmlDiff.from_markdown(
+ @diff.content_from.data.text,
+ @diff.content_to.data.text
+ )
else
render_404
end
diff --git a/lib/open_project/html_diff.rb b/lib/open_project/html_diff.rb
new file mode 100644
index 000000000000..6471778aec2f
--- /dev/null
+++ b/lib/open_project/html_diff.rb
@@ -0,0 +1,47 @@
+# frozen_string_literal: true
+
+#-- copyright
+# OpenProject is an open source project management software.
+# Copyright (C) 2012-2024 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 OpenProject
+ module HtmlDiff
+ extend OpenProject::TextFormatting
+
+ module_function
+
+ def from_markdown(markdown_from, markdown_to)
+ ::HTMLDiff::DiffBuilder.new(
+ format_text(markdown_from, disable_macro_expansion: true),
+ format_text(markdown_to, disable_macro_expansion: true)
+ ).build
+ .gsub(/(\n\r?)<\/ins>/, '\1')
+ .gsub(/(\n\r?)<\/del>/, '\1')
+ .gsub(/^()/, '\1')
+ end
+ end
+end
diff --git a/spec/lib/open_project/html_diff_spec.rb b/spec/lib/open_project/html_diff_spec.rb
new file mode 100644
index 000000000000..429022babed0
--- /dev/null
+++ b/spec/lib/open_project/html_diff_spec.rb
@@ -0,0 +1,110 @@
+# frozen_string_literal: true
+
+#-- copyright
+# OpenProject is an open source project management software.
+# Copyright (C) 2012-2024 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 OpenProject::HtmlDiff do
+ describe ".from_markdown" do
+ it "hightlights additions with tags" do
+ from = ""
+ to = "Hello, world!"
+ expect(described_class.from_markdown(from, to))
+ .to eq(<<~HTML.strip)
+
Hello, world!
+ HTML
+ end
+
+ it "hightlights removals with tags" do
+ from = "Hello, world!"
+ to = ""
+ expect(described_class.from_markdown(from, to))
+ .to eq(<<~HTML.strip)
+
Hello, world!
+ HTML
+ end
+
+ it "hightlights modifications with both and tags" do
+ from = "Hello, world!"
+ to = "Hello, OpenProject!"
+ expect(described_class.from_markdown(from, to))
+ .to eq(<<~HTML.strip)
+
Hello, world!OpenProject!
+ HTML
+ end
+
+ context "with a list" do
+ it "removes extra newlines from the diff" do # rubocop:disable RSpec/ExampleLength
+ from = <<~MARKDOWN
+ Deletion:
+
+ * Item 1
+
+ * Item 2
+
+ Insertion:
+
+ * Item A
+ MARKDOWN
+ to = <<~MARKDOWN
+ Deletion:
+
+ * Item 1
+
+ Insertion:
+
+ * Item A
+
+ * Item B
+ MARKDOWN
+ expect(described_class.from_markdown(from, to))
+ .to eq(<<~HTML.strip)
+
Deletion:
+
+
+
Item 1
+
+
+
Item 2
+
+
+
Insertion:
+
+
+
Item A
+
+
+
Item B
+
+
+ HTML
+ end
+ end
+ end
+end
From 3e28baaa27cfa108cecaeb33533e54eea664295a Mon Sep 17 00:00:00 2001
From: Christophe Bliard
Date: Tue, 13 Aug 2024 10:09:58 +0200
Subject: [PATCH 003/147] Fix test flakiness by forcing work packages order
`WorkPackage.all` could return the work packages in any order, which can
occasionnally make the test fail as it expects the results in a certain
order.
---
spec/models/journable/with_historic_attributes_spec.rb | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/spec/models/journable/with_historic_attributes_spec.rb b/spec/models/journable/with_historic_attributes_spec.rb
index d5fd106b9b9c..24f6287831a7 100644
--- a/spec/models/journable/with_historic_attributes_spec.rb
+++ b/spec/models/journable/with_historic_attributes_spec.rb
@@ -149,7 +149,7 @@
end
context "with active record relation of work packages" do
- let(:work_packages) { WorkPackage.all }
+ let(:work_packages) { WorkPackage.order(subject: :asc).all }
it "provides access to the work-package attributes" do
expect(subject.map(&:subject)).to eq ["The current work package 1", "The current work package 2"]
@@ -246,7 +246,7 @@
end
context "with active record relation of work packages" do
- let(:work_packages) { WorkPackage.all }
+ let(:work_packages) { WorkPackage.order(subject: :asc).all }
it "provides access to the work-package attributes at timestamps" do
expect(subject.first.attributes_by_timestamp["2022-01-01T00:00:00Z"].subject).to eq "The original work package 1"
From dc77722a7f720ec888969e94dfe7aa753cddef4d Mon Sep 17 00:00:00 2001
From: Pavel Balashou
Date: Mon, 26 Aug 2024 17:24:24 +0200
Subject: [PATCH 004/147] [#57068] Nextcloud "recheck connection" checks for
GroupFolderApp though AMPF is deactivated
https://community.openproject.org/work_packages/57068
---
.../nextcloud_connection_validator.rb | 12 +++++------
.../nextcloud_connection_validator_spec.rb | 20 ++++++++++++++++++-
2 files changed, 24 insertions(+), 8 deletions(-)
diff --git a/modules/storages/app/common/storages/peripherals/nextcloud_connection_validator.rb b/modules/storages/app/common/storages/peripherals/nextcloud_connection_validator.rb
index faae38e27587..b5645fa7a4ed 100644
--- a/modules/storages/app/common/storages/peripherals/nextcloud_connection_validator.rb
+++ b/modules/storages/app/common/storages/peripherals/nextcloud_connection_validator.rb
@@ -83,7 +83,7 @@ def missing_dependencies
capabilities = query.result
- if !capabilities.app_enabled? || !capabilities.group_folder_enabled?
+ if !capabilities.app_enabled? || (@storage.automatically_managed? && !capabilities.group_folder_enabled?)
app_name = if capabilities.app_enabled?
I18n.t("storages.dependencies.nextcloud.group_folders_app")
else
@@ -114,28 +114,26 @@ def version_mismatch
min_group_folder_version = SemanticVersion.parse(config.dig("dependencies", "group_folders_app", "min_version"))
capabilities = query.result
- fetched_app_version = capabilities.app_version
- fetched_group_folder_version = capabilities.group_folder_version
- if fetched_app_version < min_app_version
+ if capabilities.app_version < min_app_version
Some(
ConnectionValidation.new(
type: :error,
error_code: :err_unexpected_version,
timestamp: Time.current,
description: I18n.t("storages.health.connection_validation.app_version_mismatch",
- found: fetched_app_version.to_s,
+ found: capabilities.app_version.to_s,
expected: min_app_version.to_s)
)
)
- elsif fetched_group_folder_version < min_group_folder_version
+ elsif @storage.automatically_managed? && capabilities.group_folder_version < min_group_folder_version
Some(
ConnectionValidation.new(
type: :error,
error_code: :err_unexpected_version,
timestamp: Time.current,
description: I18n.t("storages.health.connection_validation.group_folder_version_mismatch",
- found: fetched_group_folder_version.to_s,
+ found: capabilities.group_folder_version.to_s,
expected: min_group_folder_version.to_s)
)
)
diff --git a/modules/storages/spec/common/storages/peripherals/nextcloud_connection_validator_spec.rb b/modules/storages/spec/common/storages/peripherals/nextcloud_connection_validator_spec.rb
index 3a0109f4a59b..1ab254fd0ed4 100644
--- a/modules/storages/spec/common/storages/peripherals/nextcloud_connection_validator_spec.rb
+++ b/modules/storages/spec/common/storages/peripherals/nextcloud_connection_validator_spec.rb
@@ -59,7 +59,7 @@
end
context "if request returns a capabilities response" do
- let(:storage) { create(:nextcloud_storage_configured) }
+ let(:storage) { create(:nextcloud_storage_configured, :as_automatically_managed) }
let(:app_enabled) { true }
let(:app_version) { Storages::SemanticVersion.parse("2.6.3") }
let(:group_folder_enabled) { true }
@@ -110,6 +110,15 @@
expect(subject.description).to eq("A required dependency is missing on the file storage. " \
"Please add the following dependency: Group folders.")
end
+
+ context "if storage is not automatically_managed" do
+ let(:storage) { create(:nextcloud_storage_configured) }
+
+ it "does not check group_folder app" do
+ expect(subject.type).to eq(:healthy)
+ expect(subject.error_code).to eq(:none)
+ end
+ end
end
context "with outdated group folder app" do
@@ -121,6 +130,15 @@
expect(subject.description)
.to eq("The Group Folder version is not supported. Please update your Nextcloud server.")
end
+
+ context "if storage is not automatically_managed" do
+ let(:storage) { create(:nextcloud_storage_configured) }
+
+ it "does not check group_folder app" do
+ expect(subject.type).to eq(:healthy)
+ expect(subject.error_code).to eq(:none)
+ end
+ end
end
end
end
From e5c4cbb5ae80dce9f7f590418dd392829bf79a6b Mon Sep 17 00:00:00 2001
From: Marcello Rocha
Date: Tue, 27 Aug 2024 15:40:11 +0200
Subject: [PATCH 005/147] Finishes implementation of logging and adds new tests
to the service
---
.../nextcloud/files_info_query.rb | 106 ++++++++----------
.../one_drive/files_info_query.rb | 1 +
.../file_links/copy_file_links_service.rb | 54 +++++----
.../copy_file_links_service_spec.rb | 88 +++++++++++++++
4 files changed, 166 insertions(+), 83 deletions(-)
create mode 100644 modules/storages/spec/services/storages/file_links/copy_file_links_service_spec.rb
diff --git a/modules/storages/app/common/storages/peripherals/storage_interaction/nextcloud/files_info_query.rb b/modules/storages/app/common/storages/peripherals/storage_interaction/nextcloud/files_info_query.rb
index 3eee5b468003..dd7fa8ac98bc 100644
--- a/modules/storages/app/common/storages/peripherals/storage_interaction/nextcloud/files_info_query.rb
+++ b/modules/storages/app/common/storages/peripherals/storage_interaction/nextcloud/files_info_query.rb
@@ -33,6 +33,7 @@ module Peripherals
module StorageInteraction
module Nextcloud
class FilesInfoQuery
+ include TaggedLogging
using ServiceResultRefinements
FILES_INFO_PATH = "ocs/v1.php/apps/integration_openproject/filesinfo"
@@ -46,17 +47,20 @@ def initialize(storage)
end
def call(auth_strategy:, file_ids:)
- if file_ids.nil?
- return Util.error(:error, "File IDs can not be nil", file_ids)
- end
+ with_tagged_logger do
+ if file_ids.nil?
+ return Util.error(:error, "File IDs can not be nil", file_ids)
+ end
- if file_ids.empty?
- return ServiceResult.success(result: [])
- end
+ if file_ids.empty?
+ return ServiceResult.success(result: [])
+ end
- http_options = Util.ocs_api_request.deep_merge(Util.accept_json)
- Authentication[auth_strategy].call(storage: @storage, http_options:) do |http|
- files_info(http, file_ids).map(&parse_json) >> handle_failure >> create_storage_file_infos
+ http_options = Util.ocs_api_request.deep_merge(Util.accept_json)
+ Authentication[auth_strategy].call(storage: @storage, http_options:) do |http|
+ parsed_response = files_info(http, file_ids).on_failure { return _1 }.result
+ create_storage_file_infos(parsed_response)
+ end
end
end
@@ -68,7 +72,12 @@ def files_info(http, file_ids)
case response
in { status: 200..299 }
- ServiceResult.success(result: response.body)
+ json_response = response.json(symbolize_keys: true)
+ if json_response.dig(:ocs, :meta, :status) == "ok"
+ ServiceResult.success(result: json_response)
+ else
+ Util.error(:error, "Outbound request failed!", error_data)
+ end
in { status: 404 }
Util.error(:not_found, "Outbound request destination not found!", error_data)
in { status: 401 }
@@ -78,57 +87,36 @@ def files_info(http, file_ids)
end
end
- def parse_json
- ->(response_body) do
- # rubocop:disable Style/OpenStructUse
- JSON.parse(response_body, object_class: OpenStruct)
- # rubocop:enable Style/OpenStructUse
- end
- end
-
- def handle_failure
- ->(response_object) do
- if response_object.ocs.meta.status == "ok"
- ServiceResult.success(result: response_object)
- else
- error_data = StorageErrorData.new(source: self.class, payload: response_object)
- Util.error(:error, "Outbound request failed!", error_data)
- end
- end
- end
-
# rubocop:disable Metrics/AbcSize
- def create_storage_file_infos
- ->(response_object) do
- ServiceResult.success(
- result: response_object.ocs.data.each_pair.map do |key, value|
- if value.statuscode == 200
- StorageFileInfo.new(
- status: value.status,
- status_code: value.statuscode,
- id: value.id,
- name: value.name,
- last_modified_at: Time.zone.at(value.mtime),
- created_at: Time.zone.at(value.ctime),
- mime_type: value.mimetype,
- size: value.size,
- owner_name: value.owner_name,
- owner_id: value.owner_id,
- last_modified_by_name: value.modifier_name,
- last_modified_by_id: value.modifier_id,
- permissions: value.dav_permissions,
- location: location(value.path, value.mimetype)
- )
- else
- StorageFileInfo.new(
- status: value.status,
- status_code: value.statuscode,
- id: key.to_s.to_i
- )
- end
+ def create_storage_file_infos(parsed_json)
+ ServiceResult.success(
+ result: parsed_json.dig(:ocs, :data)&.map do |(key, value)|
+ if value[:statuscode] == 200
+ StorageFileInfo.new(
+ status: value[:status],
+ status_code: value[:statuscode],
+ id: value[:id],
+ name: value[:name],
+ last_modified_at: Time.zone.at(value[:mtime]),
+ created_at: Time.zone.at(value[:ctime]),
+ mime_type: value[:mimetype],
+ size: value[:size],
+ owner_name: value[:owner_name],
+ owner_id: value[:owner_id],
+ last_modified_by_name: value[:modifier_name],
+ last_modified_by_id: value[:modifier_id],
+ permissions: value[:dav_permissions],
+ location: location(value[:path], value[:mimetype])
+ )
+ else
+ StorageFileInfo.new(
+ status: value[:status],
+ status_code: value[:statuscode],
+ id: key.to_s.to_i
+ )
end
- )
- end
+ end
+ )
end
# rubocop:enable Metrics/AbcSize
diff --git a/modules/storages/app/common/storages/peripherals/storage_interaction/one_drive/files_info_query.rb b/modules/storages/app/common/storages/peripherals/storage_interaction/one_drive/files_info_query.rb
index cd8e40723a2a..939027ac7524 100644
--- a/modules/storages/app/common/storages/peripherals/storage_interaction/one_drive/files_info_query.rb
+++ b/modules/storages/app/common/storages/peripherals/storage_interaction/one_drive/files_info_query.rb
@@ -33,6 +33,7 @@ module Peripherals
module StorageInteraction
module OneDrive
class FilesInfoQuery
+ include TaggedLogging
using ServiceResultRefinements
def self.call(storage:, auth_strategy:, file_ids: [])
diff --git a/modules/storages/app/services/storages/file_links/copy_file_links_service.rb b/modules/storages/app/services/storages/file_links/copy_file_links_service.rb
index 259a048e103c..718b620c0ea3 100644
--- a/modules/storages/app/services/storages/file_links/copy_file_links_service.rb
+++ b/modules/storages/app/services/storages/file_links/copy_file_links_service.rb
@@ -31,6 +31,7 @@
module Storages
module FileLinks
class CopyFileLinksService
+ include TaggedLogging
include OpenProject::LocaleHelper
def self.call(source:, target:, user:, work_packages_map:)
@@ -45,42 +46,51 @@ def initialize(source:, target:, user:, work_packages_map:)
end
def call
- source_file_links = FileLink
- .includes(:creator)
- .where(storage: @source.storage,
- container_id: @work_packages_map.keys,
- container_type: "WorkPackage")
-
- with_locale_for(@user) do
- if @source.project_folder_automatic?
- create_managed_file_links(source_file_links)
- else
- create_unmanaged_file_links(source_file_links)
+ with_tagged_logger([self.class, @source.id, @target.id]) do
+ source_file_links = FileLink.includes(:creator)
+ .where(storage: @source.storage,
+ container_id: @work_packages_map.keys,
+ container_type: "WorkPackage")
+
+ info "Found #{source_file_links.count} source file links"
+ with_locale_for(@user) do
+ info "Creating file links..."
+ if @source.project_folder_automatic?
+ create_managed_file_links(source_file_links)
+ else
+ create_unmanaged_file_links(source_file_links)
+ end
end
end
+ info "File link creation finished"
end
private
# rubocop:disable Metrics/AbcSize
def create_managed_file_links(source_file_links)
+ info "Getting information about the source file links"
source_info = source_files_info(source_file_links).on_failure do |failed|
- log_errors(failed)
+ log_storage_error(failed.errors)
return failed
end
+ info "Getting information about the copied target files"
target_map = target_files_map.on_failure do |failed|
- log_errors(failed)
+ log_storage_error(failed.errors)
return failed
end
+ info "Building equivalency map..."
location_map = build_location_map(source_info.result, target_map.result)
+ info "Creating file links based on the location map #{location_map}"
source_file_links.find_each do |source_link|
- next unless location_map.has_key?(source_link.origin_id)
+ next if location_map[source_link.origin_id].blank?
attributes = source_link.dup.attributes
attributes.merge!(
+ "storage_id" => @target.storage_id,
"creator_id" => @user.id,
"container_id" => @work_packages_map[source_link.container_id],
"origin_id" => location_map[source_link.origin_id]
@@ -92,15 +102,11 @@ def create_managed_file_links(source_file_links)
end
# rubocop:enable Metrics/AbcSize
- # rubocop:disable Metrics/AbcSize
def build_location_map(source_files, target_location_map)
# We need this due to inconsistencies of how we represent the File Path
target_location_map.transform_keys! { |key| key.starts_with?("/") ? key : "/#{key}" }
- # Since right now we can't make the relevant call as a remote admin we need to filter out 403 responses
- source_location_map = source_files.filter { |info| info.status_code.to_i == 200 }.to_h do |info|
- [info.id.to_s, info.clean_location]
- end
+ source_location_map = source_files.to_h { |info| [info.id.to_s, info.clean_location] }
source_location_map.each_with_object({}) do |(id, location), output|
target = location.gsub(@source.managed_project_folder_path, @target.managed_project_folder_path)
@@ -108,7 +114,6 @@ def build_location_map(source_files, target_location_map)
output[id] = target_location_map[target]&.id || id
end
end
- # rubocop:enable Metrics/AbcSize
def auth_strategy
Peripherals::Registry.resolve("#{@source.storage.short_provider_type}.authentication.userless").call
@@ -122,13 +127,14 @@ def source_files_info(source_file_links)
def target_files_map
Peripherals::Registry
- .resolve("#{@source.storage.short_provider_type}.queries.file_path_to_id_map")
- .call(storage: @source.storage, auth_strategy:, folder: Peripherals::ParentFolder.new(@target.project_folder_location))
+ .resolve("#{@target.storage.short_provider_type}.queries.file_path_to_id_map")
+ .call(storage: @target.storage, auth_strategy:, folder: Peripherals::ParentFolder.new(@target.project_folder_location))
end
def create_unmanaged_file_links(source_file_links)
source_file_links.find_each do |source_file_link|
attributes = source_file_link.dup.attributes
+ attributes["storage_id"] = @target.storage_id
attributes["creator_id"] = @user.id
attributes["container_id"] = @work_packages_map[source_file_link.container_id]
@@ -138,8 +144,8 @@ def create_unmanaged_file_links(source_file_links)
end
def log_errors(failure)
- OpenProject.logger.error failure.inspect
- OpenProject.logger.error failure.errors.inspect
+ error failure.inspect
+ error failure.errors.inspect
end
end
end
diff --git a/modules/storages/spec/services/storages/file_links/copy_file_links_service_spec.rb b/modules/storages/spec/services/storages/file_links/copy_file_links_service_spec.rb
new file mode 100644
index 000000000000..afe18b5932a4
--- /dev/null
+++ b/modules/storages/spec/services/storages/file_links/copy_file_links_service_spec.rb
@@ -0,0 +1,88 @@
+#-- copyright
+#++
+
+require "spec_helper"
+require_module_spec_helper
+
+RSpec.describe Storages::FileLinks::CopyFileLinksService, :webmock do
+ let(:source) { create(:nextcloud_storage_with_complete_configuration) }
+ let(:target) { create(:nextcloud_storage_with_complete_configuration) }
+
+ let(:source_storage) { create(:project_storage, storage: source, project_folder_mode: "automatic") }
+ let(:target_storage) { create(:project_storage, storage: target, project_folder_mode: "automatic") }
+
+ let(:source_wp) { create_list(:work_package, 5, project: source_storage.project) }
+ let(:target_wp) { create_list(:work_package, 5, project: target_storage.project) }
+
+ let(:source_links) { source_wp.map { create(:file_link, container: _1, storage: source) } }
+
+ let(:wp_map) { source_wp.map(&:id).zip(target_wp.map(&:id)).to_h }
+
+ let(:user) { create(:user) }
+
+ subject(:service) { described_class.new(source: source_storage, target: target_storage, user:, work_packages_map: wp_map) }
+
+ before { source_links }
+
+ context "when unmanaged storage" do
+ let(:source_storage) { create(:project_storage, storage: source, project_folder_mode: "manual") }
+ let(:target_storage) { create(:project_storage, storage: target, project_folder_mode: "manual") }
+
+ it "creates file links pointing to the same files" do
+ expect { service.call }.to change(Storages::FileLink, :count).by(5)
+
+ Storages::FileLink.last(5).each_with_index do |link, index|
+ expect(link.origin_id).to eq(source_links[index].origin_id)
+ end
+ end
+ end
+
+ context "when AMPF is enabled" do
+ let(:files_info) { class_double(Storages::Peripherals::StorageInteraction::Nextcloud::FilesInfoQuery) }
+ let(:file_path_to_id) { class_double(Storages::Peripherals::StorageInteraction::Nextcloud::FilePathToIdMapQuery) }
+ let(:auth_strategy) do
+ Storages::Peripherals::StorageInteraction::AuthenticationStrategies::Strategy.new(key: :basic_auth)
+ end
+
+ let(:target_folder) { Storages::Peripherals::ParentFolder.new(target_storage.managed_project_folder_path) }
+
+ let(:remote_source_info) do
+ source_links.map do |link|
+ Storages::StorageFileInfo.new(status: "ok", status_code: 200, id: link.origin_id, name: link.origin_name,
+ location: File.join(source_storage.managed_project_folder_path, link.origin_name))
+ end
+ end
+
+ let(:path_to_ids) do
+ source_links.each_with_object({}) do |link, hash|
+ key = File.join(target_storage.managed_project_folder_path, link.origin_name)
+ id = Storages::StorageFileId.new(id: "#{link.origin_id}_target")
+ hash[key] = id
+ end
+ end
+
+ before do
+ Storages::Peripherals::Registry.stub("nextcloud.queries.files_info", files_info)
+ Storages::Peripherals::Registry.stub("nextcloud.authentication.userless", -> { auth_strategy })
+ Storages::Peripherals::Registry.stub("nextcloud.queries.file_path_to_id_map", file_path_to_id)
+
+ allow(Storages::Peripherals::ParentFolder).to receive(:new).with(target_storage.project_folder_location)
+ .and_return(target_folder)
+
+ allow(files_info).to receive(:call).with(file_ids: source_links.map(&:origin_id), storage: source, auth_strategy:)
+ .and_return(ServiceResult.success(result: remote_source_info))
+
+ allow(file_path_to_id).to receive(:call).with(storage: target, auth_strategy:, folder: target_folder)
+ .and_return(ServiceResult.success(result: path_to_ids))
+ end
+
+ it "create links to the newly copied files" do
+ expect { service.call }.to change(Storages::FileLink, :count).by(5)
+
+ Storages::FileLink.last(5).each do |link|
+ expect(link.origin_id).to match /_target$/
+ expect(link.storage_id).to eq(target.id)
+ end
+ end
+ end
+end
From 86c276b470ad544601f82e7c86cf13018b0f454c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Oliver=20G=C3=BCnther?=
Date: Wed, 28 Aug 2024 09:47:21 +0200
Subject: [PATCH 006/147] Add release-notes file
---
docs/release-notes/14-4-1/README.md | 32 +++++++++++++++++++++++++++++
docs/release-notes/README.md | 7 +++++++
2 files changed, 39 insertions(+)
create mode 100644 docs/release-notes/14-4-1/README.md
diff --git a/docs/release-notes/14-4-1/README.md b/docs/release-notes/14-4-1/README.md
new file mode 100644
index 000000000000..f161e68d01bd
--- /dev/null
+++ b/docs/release-notes/14-4-1/README.md
@@ -0,0 +1,32 @@
+---
+title: OpenProject 14.4.1
+sidebar_navigation:
+ title: 14.4.1
+release_version: 14.4.1
+release_date: 2024-08-28
+---
+
+# OpenProject 14.4.1
+
+Release date: 2024-08-28
+
+We released OpenProject [OpenProject 14.4.1](https://community.openproject.org/versions/2110).
+The release contains several bug fixes and we recommend updating to the newest version.
+In these Release Notes, we will give an overview of important feature changes.
+At the end, you will find a complete list of all changes and bug fixes.
+
+
+
+## Bug fixes and changes
+
+
+
+
+- Bugfix: Project Storage Members breaks when Groups or Placeholder Users are members of a project \[[#57260](https://community.openproject.org/wp/57260)\]
+- Bugfix: Custom field filter in project list causes internal server error when opening it \[[#57298](https://community.openproject.org/wp/57298)\]
+- Bugfix: Robots follow sort header links unnecessarily \[[#57306](https://community.openproject.org/wp/57306)\]
+- Bugfix: Internal error when trying to access notifications menu \[[#57351](https://community.openproject.org/wp/57351)\]
+- Bugfix: \[API\] File link creation does not work for legacy nextcloud storage data \[[#57501](https://community.openproject.org/wp/57501)\]
+
+
+
diff --git a/docs/release-notes/README.md b/docs/release-notes/README.md
index ae1f4c0886e0..20ef61cebbe5 100644
--- a/docs/release-notes/README.md
+++ b/docs/release-notes/README.md
@@ -13,6 +13,13 @@ Stay up to date and get an overview of the new features included in the releases
+## 14.4.1
+
+Release date: 2024-08-28
+
+[Release Notes](14-4-1/)
+
+
## 14.4.0
Release date: 2024-08-14
From 0dcf4680f71bab824e9170a029dafaf555e7a657 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Oliver=20G=C3=BCnther?=
Date: Wed, 28 Aug 2024 09:47:22 +0200
Subject: [PATCH 007/147] Bumped version to 14.4.2
[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 915cc3386ec8..082f629b9299 100644
--- a/lib/open_project/version.rb
+++ b/lib/open_project/version.rb
@@ -33,7 +33,7 @@ module OpenProject
module VERSION # :nodoc:
MAJOR = 14
MINOR = 4
- PATCH = 1
+ PATCH = 2
class << self
# Used by semver to define the special version (if any).
From 68bd0bb2566c893b272482bd44b29981b613cb5a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Oliver=20G=C3=BCnther?=
Date: Wed, 28 Aug 2024 10:43:42 +0200
Subject: [PATCH 008/147] Remove reference to storybook
---
docs/development/design-system/README.md | 4 ----
1 file changed, 4 deletions(-)
diff --git a/docs/development/design-system/README.md b/docs/development/design-system/README.md
index 58aa524fd4b9..812763f929e2 100644
--- a/docs/development/design-system/README.md
+++ b/docs/development/design-system/README.md
@@ -8,7 +8,3 @@ keywords: Design system, Primer, styles, design, components
# Design System and Component Libraries
Starting in OpenProject 13.0., the [Primer Design System](https://primer.style/design/) is being used in OpenProject. Relevant reusable components from Primer as well as common patterns and compositions of these components will be documented in our [Lookbook](https://qa.openproject-edge.com/lookbook/).
-
-Prior to 13.0., components were defined in its own Design System called SPOT which is slowly being replaced by Primer.
-Components still defined for SPOT are documented in the last build of storybook found
-here: https://opf.github.io/design-system
From b3e497d6a8dc138e11bbc890e63c0e445bbb8bb5 Mon Sep 17 00:00:00 2001
From: Aaron Contreras
Date: Tue, 27 Aug 2024 11:30:32 -0500
Subject: [PATCH 009/147] Allow "Accountable" to be a settable field via
inbound mails
---
app/models/mail_handler.rb | 27 ++++++++++++-------
.../wp_mention_reply_with_attributes.eml | 1 +
.../mail_handler/wp_on_given_project.eml | 1 +
.../wp_on_given_project_group_assignment.eml | 1 +
.../wp_reply_with_quoted_reply_above.eml | 1 +
.../wp_with_invalid_attributes.eml | 1 +
spec/models/mail_handler_spec.rb | 20 +++++++++++++-
7 files changed, 42 insertions(+), 10 deletions(-)
diff --git a/app/models/mail_handler.rb b/app/models/mail_handler.rb
index c404f5d4e238..3525d0d6ba26 100644
--- a/app/models/mail_handler.rb
+++ b/app/models/mail_handler.rb
@@ -377,17 +377,18 @@ def target_project
# Returns a Hash of issue attributes extracted from keywords in the email body
def wp_attributes_from_keywords(work_package)
{
- "type_id" => wp_type_from_keywords(work_package),
- "status_id" => wp_status_from_keywords,
- "parent_id" => wp_parent_from_keywords,
- "priority_id" => wp_priority_from_keywords,
- "category_id" => wp_category_from_keywords(work_package),
"assigned_to_id" => wp_assignee_from_keywords(work_package),
- "version_id" => wp_version_from_keywords(work_package),
- "start_date" => wp_start_date_from_keywords,
+ "category_id" => wp_category_from_keywords(work_package),
"due_date" => wp_due_date_from_keywords,
"estimated_hours" => wp_estimated_hours_from_keywords,
- "remaining_hours" => wp_remaining_hours_from_keywords
+ "parent_id" => wp_parent_from_keywords,
+ "priority_id" => wp_priority_from_keywords,
+ "remaining_hours" => wp_remaining_hours_from_keywords,
+ "responsible_id" => wp_accountable_from_keywords(work_package),
+ "start_date" => wp_start_date_from_keywords,
+ "status_id" => wp_status_from_keywords,
+ "type_id" => wp_type_from_keywords(work_package),
+ "version_id" => wp_version_from_keywords(work_package)
}.compact_blank!
end
@@ -541,8 +542,16 @@ def wp_category_from_keywords(work_package)
lookup_case_insensitive_key(work_package.project.categories, :category)
end
+ def wp_accountable_from_keywords(work_package)
+ get_assignable_principal_from_keywords(:responsible, work_package)
+ end
+
def wp_assignee_from_keywords(work_package)
- keyword = get_keyword(:assigned_to, override: true)
+ get_assignable_principal_from_keywords(:assigned_to, work_package)
+ end
+
+ def get_assignable_principal_from_keywords(keyword, work_package)
+ keyword = get_keyword(keyword, override: true)
return nil if keyword.blank?
diff --git a/spec/fixtures/mail_handler/wp_mention_reply_with_attributes.eml b/spec/fixtures/mail_handler/wp_mention_reply_with_attributes.eml
index 2dfa10986161..ec585e24d3b6 100644
--- a/spec/fixtures/mail_handler/wp_mention_reply_with_attributes.eml
+++ b/spec/fixtures/mail_handler/wp_mention_reply_with_attributes.eml
@@ -52,6 +52,7 @@ The text of the reply.
Status: Resolved
due date: 2010-12-31
Start Date:2010-01-01
+Accountable: jsmith@somenet.foo
Assigned to: jsmith@somenet.foo
float field: 52.6
diff --git a/spec/fixtures/mail_handler/wp_on_given_project.eml b/spec/fixtures/mail_handler/wp_on_given_project.eml
index 92e06b5fbf11..6802e2ca5150 100644
--- a/spec/fixtures/mail_handler/wp_on_given_project.eml
+++ b/spec/fixtures/mail_handler/wp_on_given_project.eml
@@ -53,6 +53,7 @@ Project: onlinestore
Status: Resolved
due date: 2010-12-31
Start Date:2010-01-01
+Accountable: John Smith
Assigned to: John Smith
Version: alpha
estimated hours: 2.5
diff --git a/spec/fixtures/mail_handler/wp_on_given_project_group_assignment.eml b/spec/fixtures/mail_handler/wp_on_given_project_group_assignment.eml
index 1a3b1be315a4..34fc9753ffcf 100644
--- a/spec/fixtures/mail_handler/wp_on_given_project_group_assignment.eml
+++ b/spec/fixtures/mail_handler/wp_on_given_project_group_assignment.eml
@@ -53,6 +53,7 @@ Project: onlinestore
Status: Resolved
due date: 2010-12-31
Start Date:2010-01-01
+Accountable: A-Team
Assigned to: A-Team
Version: alpha
estimated hours: 2.5
diff --git a/spec/fixtures/mail_handler/wp_reply_with_quoted_reply_above.eml b/spec/fixtures/mail_handler/wp_reply_with_quoted_reply_above.eml
index 15a20bfe81cd..6748f37c9b1d 100644
--- a/spec/fixtures/mail_handler/wp_reply_with_quoted_reply_above.eml
+++ b/spec/fixtures/mail_handler/wp_reply_with_quoted_reply_above.eml
@@ -39,6 +39,7 @@ platea dictumst.
>
> Subject changed from Projects with JSON to Project JSON API
> Status changed from New to Assigned
+> Accountable set to Jerry Smith
> Assignee set to Eric Davis
> Priority changed from Low to Normal
> Estimated time deleted (1.00)
diff --git a/spec/fixtures/mail_handler/wp_with_invalid_attributes.eml b/spec/fixtures/mail_handler/wp_with_invalid_attributes.eml
index 9c2b93637317..9a7802bc822c 100644
--- a/spec/fixtures/mail_handler/wp_with_invalid_attributes.eml
+++ b/spec/fixtures/mail_handler/wp_with_invalid_attributes.eml
@@ -40,6 +40,7 @@ pulvinar dui, a gravida orci mi eget odio. Nunc a lacus.
Project: onlinestore
Type: Feature request
category: Stock management
+accountable: jerrysmith@foo.bar
assigned to: miscuser9@foo.bar
priority: foo
start date: some day
diff --git a/spec/models/mail_handler_spec.rb b/spec/models/mail_handler_spec.rb
index 49bc97a62f37..eb4b177667e0 100644
--- a/spec/models/mail_handler_spec.rb
+++ b/spec/models/mail_handler_spec.rb
@@ -557,6 +557,11 @@
.to eql("2010-12-31")
end
+ it "sets the accountable" do
+ expect(subject.responsible)
+ .to eql(user)
+ end
+
it "sets the assignee" do
expect(subject.assigned_to)
.to eql(user)
@@ -652,6 +657,11 @@
it_behaves_like "work package created"
+ it "sets the accountable to the group" do
+ expect(subject.responsible)
+ .to eql(group)
+ end
+
it "sets the assignee to the group" do
expect(subject.assigned_to)
.to eql(group)
@@ -1078,6 +1088,9 @@
it_behaves_like "work package created"
it "ignores the invalid attributes and set default ones where possible" do
+ expect(subject.responsible)
+ .to be_nil
+
expect(subject.assigned_to)
.to be_nil
@@ -1212,14 +1225,18 @@
member_with_permissions: { project => %i(view_work_packages) },
notification_settings: [build(:notification_setting, assignee: true, responsible: true)])
+ responsible = create(:user,
+ member_with_permissions: { project => %i(view_work_packages) },
+ notification_settings: [build(:notification_setting, assignee: true, responsible: true)])
work_package.update_column(:assigned_to_id, assignee.id)
+ work_package.update_column(:responsible_id, responsible.id)
# Sends notifications for the assignee and the author who is listening for all changes.
expect do
perform_enqueued_jobs do
subject
end
- end.to change(Notification, :count).by(1)
+ end.to change(Notification, :count).by(2)
end
end
@@ -1269,6 +1286,7 @@
.to eql(
"due_date" => [nil, Date.parse("Fri, 31 Dec 2010")],
"status_id" => [original_status.id, resolved_status.id],
+ "responsible_id" => [nil, other_user.id],
"assigned_to_id" => [nil, other_user.id],
"start_date" => [nil, Date.parse("Fri, 01 Jan 2010")],
"duration" => [nil, 365],
From 93a6873dd954237a0fcfc9c4c25f737465e66ff0 Mon Sep 17 00:00:00 2001
From: Christophe Bliard
Date: Wed, 28 Aug 2024 14:37:09 +0200
Subject: [PATCH 010/147] [57512] Make it easier to clear all fields
https://community.openproject.org/wp/57512
When work is modified and remaining work and % complete are both empty,
the % complete field should not be untouched because that would lead to
it having a value again, which is tedious when one wants to clear all
values.
---
.../touched-field-marker.controller.ts | 3 ++
.../work_packages/progress_modal_spec.rb | 29 ++++++++++++++++-
.../work_packages/progress_popover.rb | 31 ++++++++++++++++++-
.../edit_fields/progress_edit_field.rb | 23 ++++++++++++++
4 files changed, 84 insertions(+), 2 deletions(-)
diff --git a/frontend/src/stimulus/controllers/dynamic/work-packages/progress/touched-field-marker.controller.ts b/frontend/src/stimulus/controllers/dynamic/work-packages/progress/touched-field-marker.controller.ts
index faed942b2fb9..7c96bcd31913 100644
--- a/frontend/src/stimulus/controllers/dynamic/work-packages/progress/touched-field-marker.controller.ts
+++ b/frontend/src/stimulus/controllers/dynamic/work-packages/progress/touched-field-marker.controller.ts
@@ -73,6 +73,9 @@ export default class TouchedFieldMarkerController extends Controller {
private untouchFieldsWhenWorkIsEdited() {
if (this.areBothTouched('remaining_hours', 'done_ratio')) {
+ if (this.isValueEmpty('done_ratio') && this.isValueEmpty('remaining_hours')) {
+ return;
+ }
if (this.isValueEmpty('done_ratio')) {
this.markUntouched('done_ratio');
} else {
diff --git a/spec/features/work_packages/progress_modal_spec.rb b/spec/features/work_packages/progress_modal_spec.rb
index 658c7b131034..c84db5bd44a4 100644
--- a/spec/features/work_packages/progress_modal_spec.rb
+++ b/spec/features/work_packages/progress_modal_spec.rb
@@ -514,7 +514,7 @@ def visit_progress_query_displaying_work_package
end
# scenario from https://community.openproject.org/wp/57370
- specify "Case 33-14: when work and % complete are cleared, and then work " \
+ specify "Case 33-1: when work and % complete are cleared, and then work " \
"is set again then % complete is derived again" do
visit_progress_query_displaying_work_package
@@ -528,6 +528,33 @@ def visit_progress_query_displaying_work_package
# => % complete is derived
progress_popover.expect_values(work: "20h", remaining_work: "4h", percent_complete: "80%")
end
+
+ # scenario from https://community.openproject.org/wp/57370
+ specify "Case 33-2: when remaining work and % complete are cleared, " \
+ "changing or clearing work does not modify % complete at all" do
+ puts "#{Time.current.iso8601(3)} #{__FILE__}:#{__LINE__} "
+ visit_progress_query_displaying_work_package
+ puts "#{Time.current.iso8601(3)} #{__FILE__}:#{__LINE__} "
+
+ progress_popover.open
+ progress_popover.set_values(remaining_work: "")
+ progress_popover.expect_values(work: "", remaining_work: "", percent_complete: "60%")
+ progress_popover.expect_hints(work: :cleared_because_remaining_work_is_empty)
+
+ progress_popover.set_values(percent_complete: "")
+ progress_popover.expect_values(work: "10h", remaining_work: "", percent_complete: "")
+ progress_popover.expect_hints(work: nil, remaining_work: nil, percent_complete: nil)
+
+ # partially deleting work value like when pressing backspace
+ progress_popover.set_values(work: "1")
+ progress_popover.expect_values(work: "1", remaining_work: "", percent_complete: "")
+ progress_popover.expect_hints(work: nil, remaining_work: nil, percent_complete: nil)
+
+ # completly clearing work value
+ progress_popover.set_values(work: "")
+ progress_popover.expect_values(work: "", remaining_work: "", percent_complete: "")
+ progress_popover.expect_hints(work: nil, remaining_work: nil, percent_complete: nil)
+ end
end
context "given work, remaining work, and % complete are all empty" do
diff --git a/spec/support/components/work_packages/progress_popover.rb b/spec/support/components/work_packages/progress_popover.rb
index 92cf954cc839..1d311c2d64d0 100644
--- a/spec/support/components/work_packages/progress_popover.rb
+++ b/spec/support/components/work_packages/progress_popover.rb
@@ -49,6 +49,15 @@ class ProgressPopover
work: :estimatedTime
}.freeze
+ WORK_PACKAGE_FIELD_NAME_MAP = {
+ estimated_time: :estimated_hours,
+ percent_complete: :done_ratio,
+ percentage_done: :done_ratio,
+ remaining_work: :remaining_hours,
+ remaining_time: :remaining_hours,
+ work: :estimated_hours
+ }.freeze
+
attr_reader :container, :create_form
def initialize(container: page, create_form: false)
@@ -118,13 +127,26 @@ def expect_value(field_name, value, **properties)
end
def expect_values(**field_value_pairs)
- aggregate_failures("progress popover expectations") do
+ aggregate_failures("progress popover values expectations") do
field_value_pairs.each do |field_name, value|
expect_value(field_name, value)
end
end
end
+ def expect_hint(field_name, hint)
+ expected_caption = hint && I18n.t("work_package.progress.derivation_hints.#{wp_field_name(field_name)}.#{hint}")
+ field(field_name).expect_caption(expected_caption)
+ end
+
+ def expect_hints(**field_hint_pairs)
+ aggregate_failures("progress popover hints expectations") do
+ field_hint_pairs.each do |field_name, hint|
+ expect_hint(field_name, hint)
+ end
+ end
+ end
+
private
def field(field_name)
@@ -138,6 +160,13 @@ def js_field_name(field_name)
raise ArgumentError, "cannot map '#{field_name.inspect}' to its javascript field name"
end
end
+
+ def wp_field_name(field_name)
+ field_name = field_name.to_s.underscore.to_sym
+ WORK_PACKAGE_FIELD_NAME_MAP.fetch(field_name) do
+ raise ArgumentError, "cannot map '#{field_name.inspect}' to its work package field name"
+ end
+ end
end
end
end
diff --git a/spec/support/edit_fields/progress_edit_field.rb b/spec/support/edit_fields/progress_edit_field.rb
index 229849c2eb36..5ba98108a023 100644
--- a/spec/support/edit_fields/progress_edit_field.rb
+++ b/spec/support/edit_fields/progress_edit_field.rb
@@ -38,6 +38,12 @@ class ProgressEditField < EditField
"percentageDone" => :done_ratio,
"statusWithinProgressModal" => :status_id
}.freeze
+ HUMAN_FIELD_NAME_MAP = {
+ "estimatedTime" => "work",
+ "remainingTime" => "remaining work",
+ "percentageDone" => "% complete",
+ "statusWithinProgressModal" => "status"
+ }.freeze
def initialize(context,
property_name,
@@ -46,6 +52,7 @@ def initialize(context,
super
@field_name = "work_package_#{FIELD_NAME_MAP.fetch(@property_name)}"
+ @human_field_name = HUMAN_FIELD_NAME_MAP.fetch(@property_name)
@trigger_selector = "input[id$=inline-edit--field-#{@property_name}]"
end
@@ -108,6 +115,13 @@ def input_element
modal_element.find_field(field_name)
end
+ def input_caption_element
+ input_element["aria-describedby"]
+ .split
+ .find { _1.start_with?("caption-") }
+ &.then { |caption_id| find(id: caption_id) }
+ end
+
def trigger_element
within @context do
page.find(@trigger_selector)
@@ -203,6 +217,15 @@ def expect_modal_field_value(value, disabled: false, readonly: false)
end
end
+ def expect_caption(expected_caption)
+ if expected_caption.nil?
+ expect(input_caption_element).to be_nil, "Expected no caption for #{@human_field_name} field, " \
+ "got \"#{input_caption_element&.text}\""
+ else
+ expect(input_caption_element).to have_text(expected_caption)
+ end
+ end
+
def expect_select_field_with_options(*expected_options)
within modal_element do
expect(page).to have_select(field_name, with_options: expected_options)
From 4ec1286a0d41ce8ae48d52e323d88f516a630d6f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Oliver=20G=C3=BCnther?=
Date: Wed, 28 Aug 2024 14:22:05 +0200
Subject: [PATCH 011/147] Remove duplicate instructions if ldap and identity
provider
---
app/views/my/account.html.erb | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/app/views/my/account.html.erb b/app/views/my/account.html.erb
index dbffe52a7b1a..316e5c7db6f6 100644
--- a/app/views/my/account.html.erb
+++ b/app/views/my/account.html.erb
@@ -60,8 +60,7 @@ See COPYRIGHT and LICENSE files for more details.
<%= f.text_field :firstname, required: true, container_class: '-middle', disabled: login_via_provider || login_via_ldap %>
<% if login_via_provider %>
<%= t('user.text_change_disabled_for_provider_login') %>
- <% end %>
- <% if login_via_ldap %>
+ <% elsif login_via_ldap %>
<%= t('user.text_change_disabled_for_ldap_login') %>
<% end %>
@@ -69,14 +68,15 @@ See COPYRIGHT and LICENSE files for more details.
<%= f.text_field :lastname, required: true, container_class: '-middle', disabled: login_via_provider || login_via_ldap %>
<% if login_via_provider %>
<%= t('user.text_change_disabled_for_provider_login') %>
- <% end %>
- <% if login_via_ldap %>
+ <% elsif login_via_ldap %>
<%= t('user.text_change_disabled_for_ldap_login') %>
<% end %>
From 6d19bfd552f913fc5a8a45ce757b25f4b9faa60f Mon Sep 17 00:00:00 2001
From: Christophe Bliard
Date: Wed, 28 Aug 2024 16:04:56 +0200
Subject: [PATCH 012/147] Remove debug statements
---
spec/features/work_packages/progress_modal_spec.rb | 2 --
1 file changed, 2 deletions(-)
diff --git a/spec/features/work_packages/progress_modal_spec.rb b/spec/features/work_packages/progress_modal_spec.rb
index c84db5bd44a4..9856c79a6ae2 100644
--- a/spec/features/work_packages/progress_modal_spec.rb
+++ b/spec/features/work_packages/progress_modal_spec.rb
@@ -532,9 +532,7 @@ def visit_progress_query_displaying_work_package
# scenario from https://community.openproject.org/wp/57370
specify "Case 33-2: when remaining work and % complete are cleared, " \
"changing or clearing work does not modify % complete at all" do
- puts "#{Time.current.iso8601(3)} #{__FILE__}:#{__LINE__} "
visit_progress_query_displaying_work_package
- puts "#{Time.current.iso8601(3)} #{__FILE__}:#{__LINE__} "
progress_popover.open
progress_popover.set_values(remaining_work: "")
From 157c57e842625e521f90e0f9c8a0899bfcda5806 Mon Sep 17 00:00:00 2001
From: Christophe Bliard
Date: Wed, 28 Aug 2024 16:05:22 +0200
Subject: [PATCH 013/147] Make raise_exceptions an option in ChronicDuration
It avoids having a global state which is always a bit brittle in tests.
---
app/services/duration_converter.rb | 22 +++-------------------
lib/chronic_duration.rb | 10 +++++-----
spec/lib/chronic_duration_spec.rb | 13 +++++++++++++
3 files changed, 21 insertions(+), 24 deletions(-)
diff --git a/app/services/duration_converter.rb b/app/services/duration_converter.rb
index 1df40065e91f..e2efe5a771e7 100644
--- a/app/services/duration_converter.rb
+++ b/app/services/duration_converter.rb
@@ -78,23 +78,7 @@ class << self
def parse(duration_string)
return nil if duration_string.blank?
- # Assume the next logical unit to allow users to write
- # durations such as "2h 1" assuming "1" is "1 minute"
- last_unit_in_string = duration_string.scan(/[a-zA-Z]+/)
- .last
- default_unit = if last_unit_in_string
- last_unit_in_string
- .then { |last_unit| UNIT_ABBREVIATION_MAP[last_unit.downcase] }
- .then { |last_unit| NEXT_UNIT_MAP[last_unit] }
- else
- "hours"
- end
-
- ChronicDuration.raise_exceptions = true
- ChronicDuration.parse(duration_string,
- keep_zero: true,
- default_unit:,
- **duration_length_options) / 3600.to_f
+ do_parse(duration_string)
end
def valid?(duration)
@@ -130,7 +114,7 @@ def parseable?(duration_string)
number >= 0
else
begin
- internal_parse(duration_string)
+ do_parse(duration_string)
true
rescue ChronicDuration::DurationParseError
false
@@ -138,7 +122,7 @@ def parseable?(duration_string)
end
end
- def internal_parse(duration_string)
+ def do_parse(duration_string)
# Assume the next logical unit to allow users to write
# durations such as "2h 1" assuming "1" is "1 minute"
last_unit_in_string = duration_string.scan(/[a-zA-Z]+/)
diff --git a/lib/chronic_duration.rb b/lib/chronic_duration.rb
index a26e2eb0807a..945001248116 100644
--- a/lib/chronic_duration.rb
+++ b/lib/chronic_duration.rb
@@ -74,7 +74,7 @@ def self.days_per_month=(value)
# return an integer (or float, if fractions of a
# second are input)
def parse(string, opts = {})
- result = calculate_from_words(cleanup(string), opts)
+ result = calculate_from_words(cleanup(string, opts), opts)
!opts[:keep_zero] && result == 0 ? nil : result
end
@@ -247,11 +247,11 @@ def calculate_from_words(string, opts)
val
end
- def cleanup(string)
+ def cleanup(string, opts = {})
res = string.downcase
res = filter_by_type(res)
res = res.gsub(float_matcher) { |n| " #{n} " }.squeeze(" ").strip
- filter_through_white_list(res)
+ filter_through_white_list(res, opts)
end
def convert_to_number(string)
@@ -308,7 +308,7 @@ def float_matcher
# Get rid of unknown words and map found
# words to defined time units
- def filter_through_white_list(string)
+ def filter_through_white_list(string, opts)
res = []
string.split.each do |word|
if word&.match?(float_matcher)
@@ -318,7 +318,7 @@ def filter_through_white_list(string)
stripped_word = word.strip.gsub(/^,/, "").gsub(/,$/, "")
if mappings.has_key?(stripped_word)
res << mappings[stripped_word]
- elsif !join_words.include?(stripped_word) and ChronicDuration.raise_exceptions # rubocop:disable Rails/NegateInclude
+ elsif !join_words.include?(stripped_word) and opts.fetch(:raise_exceptions, ChronicDuration.raise_exceptions) # rubocop:disable Rails/NegateInclude
raise DurationParseError, "An invalid word #{word.inspect} was used in the string to be parsed."
end
end
diff --git a/spec/lib/chronic_duration_spec.rb b/spec/lib/chronic_duration_spec.rb
index 32e9ebc6563f..b47039765c59 100644
--- a/spec/lib/chronic_duration_spec.rb
+++ b/spec/lib/chronic_duration_spec.rb
@@ -79,6 +79,19 @@
it "raises with ChronicDuration::DurationParseError" do
expect { described_class.parse("23 gobblygoos") }.to raise_error(ChronicDuration::DurationParseError)
end
+
+ context "when passing `raise_exceptions: false` as an option" do
+ it "overrides @@raise_exception and returns nil" do
+ expect(described_class.parse("gobblygoos", raise_exceptions: false)).to be_nil
+ end
+ end
+ end
+
+ context "when passing `raise_exceptions: true` as an option" do
+ it "overrides @@raise_exception and raises with ChronicDuration::DurationParseError" do
+ expect { described_class.parse("23 gobblygoos", raise_exceptions: true) }
+ .to raise_error(ChronicDuration::DurationParseError)
+ end
end
end
From 964581d24239a166227d0c0b4b548dba92554215 Mon Sep 17 00:00:00 2001
From: Ivan Kuchin
Date: Fri, 23 Aug 2024 12:30:41 +0200
Subject: [PATCH 014/147] [#57401] Sorting by link custom field causes
exception
https://community.openproject.org/work_packages/57401
From baab1ce42a579037547832756f723abe5889badb Mon Sep 17 00:00:00 2001
From: Ivan Kuchin
Date: Fri, 23 Aug 2024 19:25:02 +0200
Subject: [PATCH 015/147] allow ordering by link custom field
---
app/models/custom_field/order_statements.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/models/custom_field/order_statements.rb b/app/models/custom_field/order_statements.rb
index c5463cf147c8..e13a19a9f306 100644
--- a/app/models/custom_field/order_statements.rb
+++ b/app/models/custom_field/order_statements.rb
@@ -38,7 +38,7 @@ def order_statements
else
[select_custom_option_position]
end
- when "string", "text", "date", "bool"
+ when "string", "text", "date", "bool", "link"
if multi_value?
[select_custom_values_as_group]
else
From 6b313e4a5bf13cbce43ca5d1cf7ee62d2648a09c Mon Sep 17 00:00:00 2001
From: Ivan Kuchin
Date: Fri, 23 Aug 2024 19:27:49 +0200
Subject: [PATCH 016/147] test all ordering using all custom field formats
---
spec/factories/custom_field_factory.rb | 3 +
.../results_cf_sorting_integration_spec.rb | 290 +++++++++++++++---
2 files changed, 257 insertions(+), 36 deletions(-)
diff --git a/spec/factories/custom_field_factory.rb b/spec/factories/custom_field_factory.rb
index 4ce3ad459488..4b3d266f1db6 100644
--- a/spec/factories/custom_field_factory.rb
+++ b/spec/factories/custom_field_factory.rb
@@ -217,8 +217,11 @@
factory :float_wp_custom_field, traits: [:float]
factory :date_wp_custom_field, traits: [:date]
factory :list_wp_custom_field, traits: [:list]
+ factory :multi_list_wp_custom_field, traits: [:multi_list]
factory :version_wp_custom_field, traits: [:version]
+ factory :multi_version_wp_custom_field, traits: [:multi_version]
factory :user_wp_custom_field, traits: [:user]
+ factory :multi_user_wp_custom_field, traits: [:multi_user]
factory :link_wp_custom_field, traits: [:link]
end
diff --git a/spec/models/query/results_cf_sorting_integration_spec.rb b/spec/models/query/results_cf_sorting_integration_spec.rb
index 28f7e01532db..7957b1b85a9e 100644
--- a/spec/models/query/results_cf_sorting_integration_spec.rb
+++ b/spec/models/query/results_cf_sorting_integration_spec.rb
@@ -28,15 +28,11 @@
require "spec_helper"
-RSpec.describe Query::Results, "Sorting of custom field floats" do
+RSpec.describe Query::Results, "Sorting by custom field" do
+ shared_let(:user) { create(:admin) }
+
let(:query_results) do
- Query::Results.new query
- end
- let(:user) do
- create(:user,
- firstname: "user",
- lastname: "1",
- member_with_permissions: { project => [:view_work_packages] })
+ described_class.new query
end
let(:type) { create(:type_standard, custom_fields: [custom_field]) }
@@ -45,22 +41,6 @@
types: [type],
work_package_custom_fields: [custom_field])
end
- let(:work_package_with_float) do
- create(:work_package,
- type:,
- project:,
- custom_values: { custom_field.id => "6.25" })
- end
-
- let(:work_package_without_float) do
- create(:work_package,
- type:,
- project:)
- end
-
- let(:custom_field) do
- create(:float_wp_custom_field, name: "MyFloat")
- end
let(:query) do
build(:query,
@@ -74,25 +54,263 @@
before do
login_as(user)
- work_package_with_float
- work_package_without_float
end
- describe "sorting ASC by float cf" do
- let(:sort_criteria) { [[custom_field.column_name, "asc"]] }
+ def wp_with_cf_value(value)
+ create(:work_package, type:, project:, custom_values: { custom_field.id => value })
+ end
+
+ shared_examples "it sorts" do
+ let(:work_package_desc) { work_packages.reverse }
- it "returns the correctly sorted result" do
- expect(query_results.work_packages.pluck(:id))
- .to match [work_package_without_float, work_package_with_float].map(&:id)
+ before { work_packages }
+
+ context "in ascending order" do
+ let(:sort_criteria) { [[custom_field.column_name, "asc"], %w[id asc]] }
+
+ it "returns the correctly sorted result" do
+ expect(query_results.work_packages.map(&:id))
+ .to eq work_packages.map(&:id)
+ end
+ end
+
+ context "in descending order" do
+ let(:sort_criteria) { [[custom_field.column_name, "desc"], %w[id asc]] }
+
+ it "returns the correctly sorted result" do
+ expect(query_results.work_packages.map(&:id))
+ .to eq work_package_desc.map(&:id)
+ end
end
end
- describe "sorting DESC by float cf" do
- let(:sort_criteria) { [[custom_field.column_name, "desc"]] }
+ context "for string format" do
+ include_examples "it sorts" do
+ let(:custom_field) { create(:string_wp_custom_field) }
+
+ let(:work_packages) do
+ [
+ create(:work_package, type:, project:),
+ wp_with_cf_value("16"),
+ wp_with_cf_value("6.25")
+ ]
+ end
+ end
+ end
+
+ context "for link format" do
+ include_examples "it sorts" do
+ let(:custom_field) { create(:link_wp_custom_field) }
+
+ let(:work_packages) do
+ [
+ create(:work_package, type:, project:),
+ wp_with_cf_value("https://openproject.org/intro/"),
+ wp_with_cf_value("https://openproject.org/pricing/")
+ ]
+ end
+ end
+ end
+
+ context "for int format" do
+ include_examples "it sorts" do
+ let(:custom_field) { create(:integer_wp_custom_field) }
+
+ let(:work_packages) do
+ [
+ create(:work_package, type:, project:),
+ wp_with_cf_value("6"),
+ wp_with_cf_value("16")
+ ]
+ end
+ end
+ end
+
+ context "for float format" do
+ include_examples "it sorts" do
+ let(:custom_field) { create(:float_wp_custom_field) }
+
+ let(:work_packages) do
+ [
+ create(:work_package, type:, project:),
+ wp_with_cf_value("6.25"),
+ wp_with_cf_value("16")
+ ]
+ end
+ end
+ end
+
+ context "for date format" do
+ include_examples "it sorts" do
+ let(:custom_field) { create(:date_wp_custom_field) }
+
+ let(:work_packages) do
+ [
+ create(:work_package, type:, project:),
+ wp_with_cf_value("2024-01-01"),
+ wp_with_cf_value("2030-01-01"),
+ wp_with_cf_value("999-01-01") # TODO: should be at index 1
+ ]
+ end
+ end
+ end
+
+ context "for bool format" do
+ include_examples "it sorts" do
+ let(:custom_field) { create(:boolean_wp_custom_field) }
+
+ let(:work_packages) do
+ [
+ create(:work_package, type:, project:),
+ wp_with_cf_value("0"),
+ wp_with_cf_value("1")
+ ]
+ end
+ end
+ end
+
+ context "for list format" do
+ let(:possible_values) { %w[100 3 20] }
+ let(:id_by_value) { custom_field.possible_values.to_h { [_1.value, _1.id] } }
+
+ context "if not allowing multi select" do
+ include_examples "it sorts" do
+ let(:custom_field) { create(:list_wp_custom_field, possible_values:) }
+
+ let(:work_packages) do
+ [
+ # sorting is done by position, and not by value
+ wp_with_cf_value(id_by_value.fetch("100")),
+ wp_with_cf_value(id_by_value.fetch("3")),
+ wp_with_cf_value(id_by_value.fetch("20")),
+ create(:work_package, type:, project:) # TODO: should be at index 0
+ ]
+ end
+ end
+ end
+
+ context "if allowing multi select" do
+ include_examples "it sorts" do
+ let(:custom_field) { create(:multi_list_wp_custom_field, possible_values:) }
+
+ let(:work_packages) do
+ [
+ create(:work_package, type:, project:),
+ # TODO: sorting is done by values sorted by position and joined by `.`, why?
+ wp_with_cf_value(id_by_value.fetch_values("100")), # => 100
+ wp_with_cf_value(id_by_value.fetch_values("20", "100")), # => 100.20
+ wp_with_cf_value(id_by_value.fetch_values("3", "100")), # => 100.3
+ wp_with_cf_value(id_by_value.fetch_values("100", "3", "20")), # => 100.3.20
+ wp_with_cf_value(id_by_value.fetch_values("20")), # => 20
+ wp_with_cf_value(id_by_value.fetch_values("3")), # => 3
+ wp_with_cf_value(id_by_value.fetch_values("3", "20")) # => 3.20
+ ]
+ end
+ end
+ end
+ end
+
+ context "for user format" do
+ shared_let(:users) do
+ [
+ create(:user, lastname: "B", firstname: "B", login: "bb1"),
+ create(:user, lastname: "B", firstname: "B", login: "bb2"),
+ create(:user, lastname: "B", firstname: "A", login: "ba"),
+ create(:user, lastname: "A", firstname: "X", login: "ax")
+ ]
+ end
+ shared_let(:id_by_login) { users.to_h { [_1.login, _1.id] } }
+
+ shared_let(:role) { create(:project_role) }
+
+ before do
+ users.each do |user|
+ create(:member, project:, principal: user, roles: [role])
+ end
+ end
+
+ context "if not allowing multi select" do
+ include_examples "it sorts" do
+ let(:custom_field) { create(:user_wp_custom_field) }
+
+ let(:work_packages) do
+ [
+ wp_with_cf_value(id_by_login.fetch("ax")),
+ wp_with_cf_value(id_by_login.fetch("ba")),
+ wp_with_cf_value(id_by_login.fetch("bb1")),
+ wp_with_cf_value(id_by_login.fetch("bb2")),
+ create(:work_package, type:, project:) # TODO: should be at index 0
+ ]
+ end
+ end
+ end
+
+ context "if allowing multi select" do
+ include_examples "it sorts" do
+ let(:custom_field) { create(:multi_user_wp_custom_field) }
+
+ let(:work_packages) do
+ [
+ wp_with_cf_value(id_by_login.fetch_values("ax")),
+ wp_with_cf_value(id_by_login.fetch_values("ba")),
+ # TODO: second user is ignored
+ wp_with_cf_value(id_by_login.fetch_values("bb1", "ba")),
+ wp_with_cf_value(id_by_login.fetch_values("bb1", "ax")),
+ create(:work_package, type:, project:) # TODO: should be at index 0
+ ]
+ end
+
+ # TODO: second user is ignored, so order due to falling back on id asc
+ let(:work_package_desc) { work_packages.values_at(4, 2, 3, 1, 0) }
+ end
+ end
+ end
+
+ context "for version format" do
+ let(:versions) do
+ [
+ create(:version, project:, sharing: "system", name: "10.10.10"),
+ create(:version, project:, sharing: "system", name: "10.10.2"),
+ create(:version, project:, sharing: "system", name: "10.2"),
+ create(:version, project:, sharing: "system", name: "9")
+ ]
+ end
+ let(:id_by_name) { versions.to_h { [_1.name, _1.id] } }
+
+ context "if not allowing multi select" do
+ include_examples "it sorts" do
+ let(:custom_field) { create(:version_wp_custom_field) }
+
+ let(:work_packages) do
+ [
+ wp_with_cf_value(id_by_name.fetch("10.10.10")),
+ wp_with_cf_value(id_by_name.fetch("10.10.2")),
+ wp_with_cf_value(id_by_name.fetch("10.2")),
+ wp_with_cf_value(id_by_name.fetch("9")),
+ create(:work_package, type:, project:) # TODO: should be at index 0
+ ]
+ end
+ end
+ end
+
+ context "if allowing multi select" do
+ include_examples "it sorts" do
+ let(:custom_field) { create(:multi_version_wp_custom_field) }
+
+ let(:work_packages) do
+ [
+ wp_with_cf_value(id_by_name.fetch_values("10.10.10")),
+ wp_with_cf_value(id_by_name.fetch_values("10.10.2")),
+ # TODO: second version is ignored
+ wp_with_cf_value(id_by_name.fetch_values("9", "10.10.2")),
+ wp_with_cf_value(id_by_name.fetch_values("9", "10.10.10")),
+ create(:work_package, type:, project:) # TODO: should be at index 0
+ ]
+ end
- it "returns the correctly sorted result" do
- expect(query_results.work_packages.pluck(:id))
- .to match [work_package_with_float, work_package_without_float].map(&:id)
+ # TODO: second version is ignored, so order due to falling back on id asc
+ let(:work_package_desc) { work_packages.values_at(4, 2, 3, 1, 0) }
+ end
end
end
end
From acbcb07029e34f6335452c86830ca77a8fcc189d Mon Sep 17 00:00:00 2001
From: OpenProject Actions CI
Date: Thu, 29 Aug 2024 03:08:53 +0000
Subject: [PATCH 017/147] update locales from crowdin [ci skip]
---
config/locales/crowdin/af.yml | 47 +++++--
config/locales/crowdin/ar.yml | 47 +++++--
config/locales/crowdin/az.yml | 47 +++++--
config/locales/crowdin/be.yml | 47 +++++--
config/locales/crowdin/bg.yml | 47 +++++--
config/locales/crowdin/ca.yml | 47 +++++--
config/locales/crowdin/ckb-IR.yml | 47 +++++--
config/locales/crowdin/cs.yml | 95 ++++++++-----
config/locales/crowdin/da.yml | 47 +++++--
config/locales/crowdin/de.yml | 47 +++++--
config/locales/crowdin/el.yml | 47 +++++--
config/locales/crowdin/eo.yml | 47 +++++--
config/locales/crowdin/es.yml | 47 +++++--
config/locales/crowdin/et.yml | 47 +++++--
config/locales/crowdin/eu.yml | 47 +++++--
config/locales/crowdin/fa.yml | 47 +++++--
config/locales/crowdin/fi.yml | 47 +++++--
config/locales/crowdin/fil.yml | 47 +++++--
config/locales/crowdin/fr.yml | 47 +++++--
config/locales/crowdin/he.yml | 47 +++++--
config/locales/crowdin/hi.yml | 47 +++++--
config/locales/crowdin/hr.yml | 47 +++++--
config/locales/crowdin/hu.yml | 47 +++++--
config/locales/crowdin/id.yml | 47 +++++--
config/locales/crowdin/it.yml | 47 +++++--
config/locales/crowdin/ja.yml | 47 +++++--
config/locales/crowdin/js-af.yml | 10 +-
config/locales/crowdin/js-ar.yml | 14 +-
config/locales/crowdin/js-az.yml | 10 +-
config/locales/crowdin/js-be.yml | 12 +-
config/locales/crowdin/js-bg.yml | 10 +-
config/locales/crowdin/js-ca.yml | 10 +-
config/locales/crowdin/js-ckb-IR.yml | 10 +-
config/locales/crowdin/js-cs.yml | 12 +-
config/locales/crowdin/js-da.yml | 10 +-
config/locales/crowdin/js-de.yml | 10 +-
config/locales/crowdin/js-el.yml | 10 +-
config/locales/crowdin/js-eo.yml | 10 +-
config/locales/crowdin/js-es.yml | 10 +-
config/locales/crowdin/js-et.yml | 10 +-
config/locales/crowdin/js-eu.yml | 10 +-
config/locales/crowdin/js-fa.yml | 10 +-
config/locales/crowdin/js-fi.yml | 10 +-
config/locales/crowdin/js-fil.yml | 10 +-
config/locales/crowdin/js-fr.yml | 10 +-
config/locales/crowdin/js-he.yml | 12 +-
config/locales/crowdin/js-hi.yml | 10 +-
config/locales/crowdin/js-hr.yml | 11 +-
config/locales/crowdin/js-hu.yml | 10 +-
config/locales/crowdin/js-id.yml | 9 +-
config/locales/crowdin/js-it.yml | 10 +-
config/locales/crowdin/js-ja.yml | 9 +-
config/locales/crowdin/js-ka.yml | 10 +-
config/locales/crowdin/js-kk.yml | 10 +-
config/locales/crowdin/js-ko.yml | 9 +-
config/locales/crowdin/js-lt.yml | 12 +-
config/locales/crowdin/js-lv.yml | 11 +-
config/locales/crowdin/js-mn.yml | 10 +-
config/locales/crowdin/js-ms.yml | 9 +-
config/locales/crowdin/js-ne.yml | 10 +-
config/locales/crowdin/js-nl.yml | 10 +-
config/locales/crowdin/js-no.yml | 10 +-
config/locales/crowdin/js-pl.yml | 12 +-
config/locales/crowdin/js-pt-BR.yml | 10 +-
config/locales/crowdin/js-pt-PT.yml | 10 +-
config/locales/crowdin/js-ro.yml | 11 +-
config/locales/crowdin/js-ru.yml | 12 +-
config/locales/crowdin/js-rw.yml | 10 +-
config/locales/crowdin/js-si.yml | 10 +-
config/locales/crowdin/js-sk.yml | 12 +-
config/locales/crowdin/js-sl.yml | 12 +-
config/locales/crowdin/js-sr.yml | 11 +-
config/locales/crowdin/js-sv.yml | 10 +-
config/locales/crowdin/js-th.yml | 9 +-
config/locales/crowdin/js-tr.yml | 10 +-
config/locales/crowdin/js-uk.yml | 12 +-
config/locales/crowdin/js-uz.yml | 10 +-
config/locales/crowdin/js-vi.yml | 9 +-
config/locales/crowdin/js-zh-CN.yml | 9 +-
config/locales/crowdin/js-zh-TW.yml | 9 +-
config/locales/crowdin/ka.yml | 47 +++++--
config/locales/crowdin/kk.yml | 47 +++++--
config/locales/crowdin/ko.yml | 47 +++++--
config/locales/crowdin/lt.yml | 47 +++++--
config/locales/crowdin/lv.yml | 47 +++++--
config/locales/crowdin/mn.yml | 47 +++++--
config/locales/crowdin/ms.yml | 47 +++++--
config/locales/crowdin/ne.yml | 47 +++++--
config/locales/crowdin/nl.yml | 47 +++++--
config/locales/crowdin/no.yml | 47 +++++--
config/locales/crowdin/pl.yml | 47 +++++--
config/locales/crowdin/pt-BR.yml | 47 +++++--
config/locales/crowdin/pt-PT.yml | 47 +++++--
config/locales/crowdin/ro.yml | 47 +++++--
config/locales/crowdin/ru.yml | 47 +++++--
config/locales/crowdin/rw.yml | 47 +++++--
config/locales/crowdin/si.yml | 47 +++++--
config/locales/crowdin/sk.yml | 47 +++++--
config/locales/crowdin/sl.yml | 47 +++++--
config/locales/crowdin/sr.yml | 47 +++++--
config/locales/crowdin/sv.yml | 47 +++++--
config/locales/crowdin/th.yml | 47 +++++--
config/locales/crowdin/tr.yml | 47 +++++--
config/locales/crowdin/uk.yml | 47 +++++--
config/locales/crowdin/uz.yml | 47 +++++--
config/locales/crowdin/vi.yml | 47 +++++--
config/locales/crowdin/zh-CN.yml | 53 ++++---
config/locales/crowdin/zh-TW.yml | 129 ++++++++++--------
.../config/locales/crowdin/zh-TW.yml | 28 ++--
modules/meeting/config/locales/crowdin/cs.yml | 2 +-
.../meeting/config/locales/crowdin/zh-CN.yml | 2 +-
.../meeting/config/locales/crowdin/zh-TW.yml | 6 +-
.../storages/config/locales/crowdin/cs.yml | 2 +-
.../storages/config/locales/crowdin/zh-TW.yml | 2 +-
.../config/locales/crowdin/cs.yml | 2 +-
115 files changed, 2430 insertions(+), 846 deletions(-)
diff --git a/config/locales/crowdin/af.yml b/config/locales/crowdin/af.yml
index 7bce04a742ea..2e44ea426ef8 100644
--- a/config/locales/crowdin/af.yml
+++ b/config/locales/crowdin/af.yml
@@ -1040,10 +1040,10 @@ af:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "is not on start date, although this is required for milestones."
@@ -1073,15 +1073,17 @@ af:
does_not_exist: "Die spesefieke kategorie bestaan nie."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3118,8 +3120,10 @@ af:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3502,9 +3506,26 @@ af:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Opmerking"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/ar.yml b/config/locales/crowdin/ar.yml
index f7e5682a284a..9494864a26f2 100644
--- a/config/locales/crowdin/ar.yml
+++ b/config/locales/crowdin/ar.yml
@@ -1068,10 +1068,10 @@ ar:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "ليس في تاريخ البدء، وعلى الرغم من أن هذا المطلوب للمعالم."
@@ -1101,15 +1101,17 @@ ar:
does_not_exist: "الفئة المحددة غير موجودة."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3264,8 +3266,10 @@ ar:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_properties: "خصائص مجموعة العمل"
setting_work_package_startdate_is_adddate: "استخدام التاريخ الحالي كتاريخ البدء لمجموعات العمل الجديدة"
setting_work_packages_projects_export_limit: "حد تصدير حزم العمل / المشاريع"
@@ -3652,9 +3656,26 @@ ar:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "تعليق"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/az.yml b/config/locales/crowdin/az.yml
index 22404c827720..187327f6e154 100644
--- a/config/locales/crowdin/az.yml
+++ b/config/locales/crowdin/az.yml
@@ -1040,10 +1040,10 @@ az:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "is not on start date, although this is required for milestones."
@@ -1073,15 +1073,17 @@ az:
does_not_exist: "The specified category does not exist."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3118,8 +3120,10 @@ az:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3502,9 +3506,26 @@ az:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Comment"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/be.yml b/config/locales/crowdin/be.yml
index ba92155ff9dd..3a89b5721d57 100644
--- a/config/locales/crowdin/be.yml
+++ b/config/locales/crowdin/be.yml
@@ -1054,10 +1054,10 @@ be:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "is not on start date, although this is required for milestones."
@@ -1087,15 +1087,17 @@ be:
does_not_exist: "The specified category does not exist."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3192,8 +3194,10 @@ be:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3578,9 +3582,26 @@ be:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Comment"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/bg.yml b/config/locales/crowdin/bg.yml
index 6b3e2f34cd2c..e449214a6517 100644
--- a/config/locales/crowdin/bg.yml
+++ b/config/locales/crowdin/bg.yml
@@ -1040,10 +1040,10 @@ bg:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Изисква се, когато е зададена Оставаща работа."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "не е на начална дата, въпреки че това е необходимо за важни събития."
@@ -1073,15 +1073,17 @@ bg:
does_not_exist: "Определената категория не съществува."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Не може да бъде по-ниско от Оставащата работа."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Не може да бъде по-високо от Работа."
- must_be_set_when_work_is_set: "Изисква се, когато е зададена Работа."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "Работният пакет е в състояние само за четене, така че атрибутите му не могат да бъдат променяни."
type:
attributes:
@@ -3118,8 +3120,10 @@ bg:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3502,9 +3506,26 @@ bg:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Коментар"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/ca.yml b/config/locales/crowdin/ca.yml
index c5a724b2e127..2ca0e9078d98 100644
--- a/config/locales/crowdin/ca.yml
+++ b/config/locales/crowdin/ca.yml
@@ -1036,10 +1036,10 @@ ca:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "no és la data d'inici, tot i que és necessari per a les fites."
@@ -1069,15 +1069,17 @@ ca:
does_not_exist: "La categoria especificada no existeix."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "No pot ser inferior al treball restant."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "El paquet de treball està en un estat de només lectura, per això els seus atributs no poden ser modificats."
type:
attributes:
@@ -3107,8 +3109,10 @@ ca:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3491,9 +3495,26 @@ ca:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Comentari"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/ckb-IR.yml b/config/locales/crowdin/ckb-IR.yml
index 7de33375727a..312b45ca7129 100644
--- a/config/locales/crowdin/ckb-IR.yml
+++ b/config/locales/crowdin/ckb-IR.yml
@@ -1040,10 +1040,10 @@ ckb-IR:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "is not on start date, although this is required for milestones."
@@ -1073,15 +1073,17 @@ ckb-IR:
does_not_exist: "The specified category does not exist."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3118,8 +3120,10 @@ ckb-IR:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3502,9 +3506,26 @@ ckb-IR:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Comment"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/cs.yml b/config/locales/crowdin/cs.yml
index e111687c2550..ec5ed0a63091 100644
--- a/config/locales/crowdin/cs.yml
+++ b/config/locales/crowdin/cs.yml
@@ -273,7 +273,7 @@ cs:
favored: "Oblíbené projekty"
archived: "Archivované projekty"
shared: "Sdílené seznamy projektů"
- my_lists: "My project lists"
+ my_lists: "Moje seznamy projektů"
new:
placeholder: "Nový seznam projektů"
delete_modal:
@@ -496,7 +496,7 @@ cs:
is_readonly: "Pouze pro čtení"
excluded_from_totals: "Vyloučeno z celkových hodnot"
themes:
- dark: "Dark (Beta)"
+ dark: "Tmavý (Beta)"
light: "Světlý"
light_high_contrast: "Světlý kontrast"
types:
@@ -729,7 +729,7 @@ cs:
is_closed: "Pracovní balíček uzavřen"
is_readonly: "Pracovní balíček jen pro čtení"
excluded_from_totals: "Exclude from calculation of totals in hierarchy"
- default_done_ratio: "% Complete"
+ default_done_ratio: "% Dokončeno"
time_entry:
activity: "Aktivita"
hours: "Hodiny"
@@ -1054,10 +1054,10 @@ cs:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "není v počátečním datu, i když je to nutné pro milníky."
@@ -1087,15 +1087,17 @@ cs:
does_not_exist: "Zadaná kategorie neexistuje."
estimated_hours:
not_a_number: "není platná doba trvání."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "není platná doba trvání."
- cant_exceed_work: "Nemůže být vyšší než Práce."
- must_be_set_when_work_is_set: "Vyžadováno, když je nastavena práce."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "Pracovní balíček je ve stavu jen pro čtení, takže jeho atributy nelze změnit."
type:
attributes:
@@ -1721,7 +1723,7 @@ cs:
title: "Export"
submit: "Export"
format:
- label: "File format"
+ label: "Formát souboru"
options:
csv:
label: "CSV"
@@ -1735,28 +1737,28 @@ cs:
input_caption_table: "By default all attributes added as columns in the work package list are selected. Long text fields are not available in table based exports."
pdf:
export_type:
- label: "PDF export type"
+ label: "Typ exportu do PDF"
options:
table:
- label: "Table"
+ label: "Tabulka"
caption: "Export the work packages list in a table with the desired columns."
report:
label: "Report"
caption: "Export the work package on a detailed report of all work packages in the list."
gantt:
- label: "Gantt chart"
+ label: "Ganttův diagram"
caption: "Export the work packages list in a Gantt diagram view."
include_images:
- label: "Include images"
+ label: "Včetně obrázků"
caption: "Exclude images to reduce the size of the PDF export."
gantt_zoom_levels:
- label: "Zoom levels"
+ label: "Úrovně přiblížení"
caption: "Select what is the zoom level for dates displayed in the chart."
options:
- days: "Days"
- weeks: "Weeks"
- months: "Months"
- quarters: "Quarters"
+ days: "Dny"
+ weeks: "Týdny"
+ months: "Měsíce"
+ quarters: "Čtvrtletí"
column_width:
label: "Table column width"
options:
@@ -2011,7 +2013,7 @@ cs:
label_ldap_auth_source_plural: "Připojení LDAP"
label_attribute_expand_text: "Úplný text pro '%{attribute}'"
label_authentication: "Ověření"
- label_authentication_settings: "Authentication settings"
+ label_authentication_settings: "Nastavení ověření"
label_available_global_roles: "Dostupné globální role"
label_available_project_attributes: "Dostupné atributy projektu"
label_available_project_forums: "Dostupná fóra"
@@ -2209,7 +2211,7 @@ cs:
label_introduction_video: "Seznamovací video"
label_invite_user: "Pozvat uživatele"
label_share: "Sdílet"
- label_share_project_list: "Share project list"
+ label_share_project_list: "Sdílet seznam projektů"
label_share_work_package: "Sdílet pracovní balíček"
label_show_hide: "Zobrazit/skrýt"
label_show_hide_n_items: "Show/hide %{count} items"
@@ -2306,8 +2308,8 @@ cs:
label_next_week: "Příští týden"
label_no_change_option: "(Beze změny)"
label_no_data: "Žádná data k zobrazení"
- label_no_due_date: "no finish date"
- label_no_start_date: "no start date"
+ 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_nothing_display: "Nic k zobrazení"
label_nobody: "nikdo"
@@ -2433,7 +2435,7 @@ cs:
label_role_search: "Přiřadit roli novým členům"
label_scm: "SCM"
label_search: "Vyhledávání"
- label_search_by_name: "Search by name"
+ label_search_by_name: "Hledat podle názvu"
label_send_information: "Poslat nové přihlašovací údaje uživateli"
label_send_test_email: "Odeslat testovací email"
label_session: "Relace"
@@ -2546,7 +2548,7 @@ cs:
label_work_package_new: "Nový pracovní balíček"
label_work_package_edit: "Upravit pracovní balíček %{name}"
label_work_package_plural: "Pracovní balíčky"
- label_work_packages_settings: "Work packages settings"
+ label_work_packages_settings: "Nastavení pracovních balíčků"
label_work_package_status: "Stav pracovního balíčku"
label_work_package_status_new: "Nový stav"
label_work_package_status_plural: "Stav pracovního balíčku"
@@ -2892,7 +2894,7 @@ cs:
permission_edit_own_messages: "Upravit vlastní zprávy"
permission_edit_own_time_entries: "Upravit vlastní časové záznamy"
permission_edit_project: "Upravit projekt"
- permission_edit_project_attributes: "Edit project attributes"
+ permission_edit_project_attributes: "Úprava atributů projektu"
permission_edit_reportings: "Upravit přehledy"
permission_edit_time_entries: "Upravit časové záznamy pro ostatní uživatele"
permission_edit_timelines: "Úpravy časové osy"
@@ -2943,7 +2945,7 @@ cs:
permission_work_package_assigned: "Staňte se řešitelem/odpovědným"
permission_work_package_assigned_explanation: "Pracovní balíčky mohou být přiřazeny uživatelům a skupinám, které tuto roli vlastní v příslušném projektu"
permission_view_project_activity: "Zobrazit aktivitu projektu"
- permission_view_project_attributes: "View project attributes"
+ permission_view_project_attributes: "Zobrazit atributy projektu"
permission_save_bcf_queries: "Uložit dotazy BCF"
permission_manage_public_bcf_queries: "Spravovat veřejné dotazy BCF."
permission_edit_attribute_help_texts: "Upravit text nápovědy atributu"
@@ -3170,9 +3172,9 @@ cs:
setting_default_projects_public: "Nové projekty nastavovat jako veřejné"
setting_diff_max_lines_displayed: "Maximální počet zobrazených řádků rozdílu"
setting_display_subprojects_work_packages: "Automaticky zobrazit úkoly podprojektu v hlavním projektu"
- setting_duration_format: "Duration format"
- setting_duration_format_hours_only: "Hours only"
- setting_duration_format_days_and_hours: "Days and hours"
+ setting_duration_format: "Formát doby trvání"
+ setting_duration_format_hours_only: "Pouze hodiny"
+ setting_duration_format_days_and_hours: "Dny a hodiny"
setting_duration_format_instructions: "This defines how Work, Remaining work, and Time spent durations are displayed."
setting_emails_footer: "Zápatí emailů"
setting_emails_header: "Záhlaví emailů"
@@ -3191,8 +3193,10 @@ cs:
setting_work_package_done_ratio: "Výpočet průběhu"
setting_work_package_done_ratio_field: "Na základě práce"
setting_work_package_done_ratio_status: "Na základě stavu"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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ů"
@@ -3576,9 +3580,26 @@ cs:
progress:
label_note: "Poznámka:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Komentář"
comment_description: "Může zobrazit a komentovat tento pracovní balíček."
diff --git a/config/locales/crowdin/da.yml b/config/locales/crowdin/da.yml
index 3a60aecb7928..cd069d10f239 100644
--- a/config/locales/crowdin/da.yml
+++ b/config/locales/crowdin/da.yml
@@ -1038,10 +1038,10 @@ da:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "er ikke på startdato, selvom dette er påkrævet for milepæle."
@@ -1071,15 +1071,17 @@ da:
does_not_exist: "Den angivne kategori findes ikke."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3114,8 +3116,10 @@ da:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3498,9 +3502,26 @@ da:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Kommentér"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/de.yml b/config/locales/crowdin/de.yml
index 6f46536181a8..a883c3319fe0 100644
--- a/config/locales/crowdin/de.yml
+++ b/config/locales/crowdin/de.yml
@@ -1034,10 +1034,10 @@ de:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "stimmt nicht mit Aufwand und Verbleibender Aufwand überein"
- cannot_be_set_when_work_is_zero: "kann nicht eingestellt werden, wenn Aufwand gleich Null ist"
- must_be_set_when_remaining_work_is_set: "Ist erforderlich, wenn Verbleibender Aufwand gesetzt ist."
- must_be_set_when_work_and_remaining_work_are_set: "Ist erforderlich, wenn Aufwand und Verbleibender Aufwand gesetzt ist."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "muss zwischen 0 und 100 liegen."
due_date:
not_start_date: "ist nicht identisch mit dem Startdatum, obwohl dies bei Meilensteinen Pflicht ist."
@@ -1067,15 +1067,17 @@ de:
does_not_exist: "Die angegebene Kategorie existiert nicht."
estimated_hours:
not_a_number: "ist keine gültige Dauer."
- cant_be_inferior_to_remaining_work: "Kann nicht niedriger sein als Verbleibender Aufwand."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Erforderlich, wenn Verbleibender Aufwand und % abgeschlossen eingestellt sind."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "ist keine gültige Dauer."
- cant_exceed_work: "Kann nicht größer als der Aufwand sein."
- must_be_set_when_work_is_set: "Ist erforderlich, wenn Aufwand gesetzt ist."
- must_be_set_when_work_and_percent_complete_are_set: "Erforderlich, wenn Aufwand und % abgeschlossen eingestellt sind."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "Das Arbeitspaket befindet sich in einem schreibgeschützten Status, so dass seine Attribute nicht geändert werden können."
type:
attributes:
@@ -3112,8 +3114,10 @@ de:
setting_work_package_done_ratio: "Fortschrittsberechnung"
setting_work_package_done_ratio_field: "Arbeitsbezogen"
setting_work_package_done_ratio_status: "Statusbezogen"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- Im aufwandsbezogenen Modus wird % Abgeschlossen durch das Verhältnis zu, Gesamtaufwand berechnet. Im statusbezogenen Modus ist mit jedem Status ein fester Wert für % Abgeschlossen verbunden. Wenn Sie den Status ändern, ändert sich dadurch auch das % Abgeschlossen Attribut.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3495,9 +3499,26 @@ de:
progress:
label_note: "Hinweis:"
modal:
- work_based_help_text: "% Abgeschlossen wird automatisch aus Aufwand und Verbleibender Aufwand abgeleitet."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Abgeschlossen wird durch den Status des Arbeitspakets festgelegt."
migration_warning_text: "Im aufwandsbezogenen Modus, kann % Fertig nicht manuell eingegeben werden und ist immer an den Aufwand gebunden. Der vorhandene Wert wurde beibehalten, kann aber nicht bearbeitet werden. Bitte geben Sie zuerst den Wert für Aufwand ein."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Kommentar"
comment_description: "Kann dieses Arbeitspaket anzeigen und kommentieren."
diff --git a/config/locales/crowdin/el.yml b/config/locales/crowdin/el.yml
index ba3d60d18df8..b968ac9a5edc 100644
--- a/config/locales/crowdin/el.yml
+++ b/config/locales/crowdin/el.yml
@@ -1036,10 +1036,10 @@ el:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "δεν είναι στην ημερομηνία έναρξης, παρόλο που απαιτείται από τα ορόσημα."
@@ -1069,15 +1069,17 @@ el:
does_not_exist: "Η καθορισμένη κατηγορία δεν υπάρχει."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3113,8 +3115,10 @@ el:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_properties: "Ιδιότητες πακέτου εργασίας"
setting_work_package_startdate_is_adddate: "Χρήση σημερινής ημερομηνίας ως ημερομηνία έναρξης για νέα πακέτα εργασίας"
setting_work_packages_projects_export_limit: "Work packages / Projects export limit"
@@ -3496,9 +3500,26 @@ el:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Σχόλιο"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/eo.yml b/config/locales/crowdin/eo.yml
index 812e46bcebcb..ace0ab3fc8da 100644
--- a/config/locales/crowdin/eo.yml
+++ b/config/locales/crowdin/eo.yml
@@ -1040,10 +1040,10 @@ eo:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "is not on start date, although this is required for milestones."
@@ -1073,15 +1073,17 @@ eo:
does_not_exist: "The specified category does not exist."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3118,8 +3120,10 @@ eo:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3502,9 +3506,26 @@ eo:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Komento"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/es.yml b/config/locales/crowdin/es.yml
index 2eebf89af918..d2bec73660ac 100644
--- a/config/locales/crowdin/es.yml
+++ b/config/locales/crowdin/es.yml
@@ -1037,10 +1037,10 @@ es:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "no coincide el trabajo y el trabajo restante"
- cannot_be_set_when_work_is_zero: "no puede fijarse cuando el trabajo es cero"
- must_be_set_when_remaining_work_is_set: "Obligatorio cuando el Trabajo restante está establecido."
- must_be_set_when_work_and_remaining_work_are_set: "Obligatorio cuando se fijan Trabajo y Trabajo restante."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "debe estar entre 0 y 100."
due_date:
not_start_date: "no es en fecha de inicio, aunque esto es necesario para hitos."
@@ -1070,15 +1070,17 @@ es:
does_not_exist: "La categoría especificada no existe."
estimated_hours:
not_a_number: "no es una duración válida."
- cant_be_inferior_to_remaining_work: "No puede ser inferior al Trabajo restante."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Obligatorio cuando se fijan Trabajo restante y % completado."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "no es una duración válida."
- cant_exceed_work: "No puede ser superior a Trabajo."
- must_be_set_when_work_is_set: "Obligatorio cuando Trabajo está establecido."
- must_be_set_when_work_and_percent_complete_are_set: "Obligatorio cuando se fijan Trabajo y % completado."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "El paquete de trabajo está en un estado de sólo lectura por lo que sus atributos no se pueden cambiar."
type:
attributes:
@@ -3114,8 +3116,10 @@ es:
setting_work_package_done_ratio: "Cálculo del progreso"
setting_work_package_done_ratio_field: "Basado en el trabajo"
setting_work_package_done_ratio_status: "Basado en el estado"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- En el modo basado en el trabajo, el % completado se calcula a partir de cuánto trabajo se ha realizado en relación con el trabajo total. En el modo basado en el estado, cada estado tiene asociado un valor de % completado. El cambio de estado modificará el % completado.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3497,9 +3501,26 @@ es:
progress:
label_note: "Nota:"
modal:
- work_based_help_text: "El % completado se obtiene automáticamente a partir del Trabajo y del Trabajo restante."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% completado se establece por el estado del paquete de trabajo."
migration_warning_text: "En el modo de cálculo del progreso basado en el trabajo, el % completado no puede fijarse manualmente y está vinculado al Trabajo. El valor existente se mantiene, pero no puede editarse. Introduzca primero el Trabajo."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Comentario"
comment_description: "Puede ver y comentar este paquete de trabajo."
diff --git a/config/locales/crowdin/et.yml b/config/locales/crowdin/et.yml
index 4da9ddeff3f8..cc2e4ee8cb00 100644
--- a/config/locales/crowdin/et.yml
+++ b/config/locales/crowdin/et.yml
@@ -1040,10 +1040,10 @@ et:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "verstapostil on vajalik määrata alguskuupäev."
@@ -1073,15 +1073,17 @@ et:
does_not_exist: "The specified category does not exist."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3118,8 +3120,10 @@ et:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3502,9 +3506,26 @@ et:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Kommentaar"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/eu.yml b/config/locales/crowdin/eu.yml
index bf1c5f266aad..8e562c32eeeb 100644
--- a/config/locales/crowdin/eu.yml
+++ b/config/locales/crowdin/eu.yml
@@ -1040,10 +1040,10 @@ eu:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "is not on start date, although this is required for milestones."
@@ -1073,15 +1073,17 @@ eu:
does_not_exist: "The specified category does not exist."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3118,8 +3120,10 @@ eu:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3502,9 +3506,26 @@ eu:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Comment"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/fa.yml b/config/locales/crowdin/fa.yml
index c053e42366b9..3d0398f47c35 100644
--- a/config/locales/crowdin/fa.yml
+++ b/config/locales/crowdin/fa.yml
@@ -1040,10 +1040,10 @@ fa:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "is not on start date, although this is required for milestones."
@@ -1073,15 +1073,17 @@ fa:
does_not_exist: "دسته انتخاب شده وجود ندارد."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3118,8 +3120,10 @@ fa:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3502,9 +3506,26 @@ fa:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "نظر"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/fi.yml b/config/locales/crowdin/fi.yml
index 0af4a6e939dc..391e2249d9da 100644
--- a/config/locales/crowdin/fi.yml
+++ b/config/locales/crowdin/fi.yml
@@ -1040,10 +1040,10 @@ fi:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "ei ole aloituspäivänä, vaikka välitavoite vaatii sen olevan."
@@ -1073,15 +1073,17 @@ fi:
does_not_exist: "Määritettyä luokkaa ei ole."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3118,8 +3120,10 @@ fi:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3502,9 +3506,26 @@ fi:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Kommentti"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/fil.yml b/config/locales/crowdin/fil.yml
index 0fc6e2f9a514..2365685dafd2 100644
--- a/config/locales/crowdin/fil.yml
+++ b/config/locales/crowdin/fil.yml
@@ -1040,10 +1040,10 @@ fil:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "hindi sa petsa ng pagsisimula, kahit naa ito ay kinakailangan para sa mga milestone."
@@ -1073,15 +1073,17 @@ fil:
does_not_exist: "Ang tinukoy na kategorya ay hindi umiiral."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3116,8 +3118,10 @@ fil:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3500,9 +3504,26 @@ fil:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Komento"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/fr.yml b/config/locales/crowdin/fr.yml
index dec27a2ceea8..5638c54d1a0d 100644
--- a/config/locales/crowdin/fr.yml
+++ b/config/locales/crowdin/fr.yml
@@ -1039,10 +1039,10 @@ fr:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "ne correspond pas au travail et au travail restant"
- cannot_be_set_when_work_is_zero: "ne peut pas être défini lorsque le travail est nul"
- must_be_set_when_remaining_work_is_set: "Requis lorsque le travail restant est défini."
- must_be_set_when_work_and_remaining_work_are_set: "Requis lorsque le travail et les travaux restants sont définis."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "doit être compris entre 0 et 100."
due_date:
not_start_date: "n'est pas identique à la date de début, bien que cela soit requis pour les jalons."
@@ -1072,15 +1072,17 @@ fr:
does_not_exist: "La catégorie spécifiée n'existe pas."
estimated_hours:
not_a_number: "n'est pas une durée valide."
- cant_be_inferior_to_remaining_work: "Ne peut être inférieur au Travail restant."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Requis lorsque le travail restant et le % d'achèvement sont définis."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "n'est pas une durée valide."
- cant_exceed_work: "Ne peut être supérieur au Travail."
- must_be_set_when_work_is_set: "Requis lorsque le Travail est défini."
- must_be_set_when_work_and_percent_complete_are_set: "Requis lorsque le travail et le % d'achèvement sont définis."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "Le lot de travaux est en lecture seule, ses attributs ne peuvent donc pas être changés."
type:
attributes:
@@ -3117,8 +3119,10 @@ fr:
setting_work_package_done_ratio: "Calcul de la progression"
setting_work_package_done_ratio_field: "Basé sur le travail"
setting_work_package_done_ratio_status: "Basé sur le statut"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- En mode Basé sur le travail, le % réalisé est calculé à partir de la quantité de travail effectuée par rapport au travail total. En mode Basé sur le statut, chaque statut est associé à une valeur de % réalisé. La modification du statut entraîne une modification du % réalisé.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3500,9 +3504,26 @@ fr:
progress:
label_note: "Note :"
modal:
- work_based_help_text: "Le % réalisé est automatiquement dérivé de Travail et Travail restant."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "Le % réalisé est défini par le statut du lot de travaux."
migration_warning_text: "Dans le mode de calcul de la progression basé sur le travail, le % réalisé ne peut pas être défini manuellement et est lié au travail. La valeur existante a été conservée mais ne peut pas être modifiée. Veuillez d'abord renseigner Travail."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Commentaire"
comment_description: "Peut consulter et commenter ce lot de travaux."
diff --git a/config/locales/crowdin/he.yml b/config/locales/crowdin/he.yml
index 49fb233eec1e..6b5e3234fab1 100644
--- a/config/locales/crowdin/he.yml
+++ b/config/locales/crowdin/he.yml
@@ -1054,10 +1054,10 @@ he:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "is not on start date, although this is required for milestones."
@@ -1087,15 +1087,17 @@ he:
does_not_exist: "הקטגוריה שצוינה אינה קיימת."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3192,8 +3194,10 @@ he:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3578,9 +3582,26 @@ he:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "תגובה"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/hi.yml b/config/locales/crowdin/hi.yml
index 0ce7ad74aafc..ca1cdebb33f3 100644
--- a/config/locales/crowdin/hi.yml
+++ b/config/locales/crowdin/hi.yml
@@ -1038,10 +1038,10 @@ hi:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "is not on start date, although this is required for milestones."
@@ -1071,15 +1071,17 @@ hi:
does_not_exist: "निर्दिष्ट श्रेणी मौजूद नहीं है ।"
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3116,8 +3118,10 @@ hi:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3500,9 +3504,26 @@ hi:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "टिप्पणी"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/hr.yml b/config/locales/crowdin/hr.yml
index 7fdf2c0ade16..81c8c1662d5f 100644
--- a/config/locales/crowdin/hr.yml
+++ b/config/locales/crowdin/hr.yml
@@ -1047,10 +1047,10 @@ hr:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "nije na datum početka, međutim potrebno je za ključne točke."
@@ -1080,15 +1080,17 @@ hr:
does_not_exist: "Navedena kategorija ne postoji."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3155,8 +3157,10 @@ hr:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3540,9 +3544,26 @@ hr:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Komentar"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/hu.yml b/config/locales/crowdin/hu.yml
index 485c31eeb520..375a4168a936 100644
--- a/config/locales/crowdin/hu.yml
+++ b/config/locales/crowdin/hu.yml
@@ -1037,10 +1037,10 @@ hu:
assigned_to:
format: "%{message}\n"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "nincs kezdő dátum, ez szükséges a fordulóponthoz."
@@ -1070,15 +1070,17 @@ hu:
does_not_exist: "A megadott kategória nem létezik."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}\n"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}\n"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "A munkacsomag írásvédett, ezért a tulajdonságai nem módosíthatók."
type:
attributes:
@@ -3114,8 +3116,10 @@ hu:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3498,9 +3502,26 @@ hu:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Vélemény"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/id.yml b/config/locales/crowdin/id.yml
index aefedcd62594..fc6d5d91aa9a 100644
--- a/config/locales/crowdin/id.yml
+++ b/config/locales/crowdin/id.yml
@@ -1026,10 +1026,10 @@ id:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "tanggal mulai dan berakhir pada milestone harus sama."
@@ -1059,15 +1059,17 @@ id:
does_not_exist: "Kategori yang dipilih tidak ada."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3070,8 +3072,10 @@ id:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3453,9 +3457,26 @@ id:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Komentar"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/it.yml b/config/locales/crowdin/it.yml
index a9189e81a727..ab5d960a9014 100644
--- a/config/locales/crowdin/it.yml
+++ b/config/locales/crowdin/it.yml
@@ -1037,10 +1037,10 @@ it:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "non corrisponde al lavoro e al lavoro residuo"
- cannot_be_set_when_work_is_zero: "non può essere impostata quando il lavoro è zero"
- must_be_set_when_remaining_work_is_set: "Obbligatorio quando si imposta Lavoro residuo."
- must_be_set_when_work_and_remaining_work_are_set: "Obbligatorio quando si impostano Lavoro e Lavoro residuo."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "deve essere compresa tra 0 e 100."
due_date:
not_start_date: "non è sulla data di inizio, nonostante sia obbligatorio per i traguardi."
@@ -1070,15 +1070,17 @@ it:
does_not_exist: "La categoria specificata non esiste."
estimated_hours:
not_a_number: "non è una durata valida."
- cant_be_inferior_to_remaining_work: "Non può essere inferiore al Lavoro residuo."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Richiesto quando sono impostate le opzioni Lavoro residuo e % completamento."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "non è una durata valida."
- cant_exceed_work: "Non può essere superiore a Lavoro."
- must_be_set_when_work_is_set: "Obbligatorio quando è impostato Lavoro."
- must_be_set_when_work_and_percent_complete_are_set: "Richiesto quando sono impostate le opzioni Lavoro e % completamento."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "La macro-attività è in uno stato di sola lettura perciò i suoi attributi non possono essere modificati."
type:
attributes:
@@ -3115,8 +3117,10 @@ it:
setting_work_package_done_ratio: "Calcolo dei progressi"
setting_work_package_done_ratio_field: "Basato sul lavoro"
setting_work_package_done_ratio_status: "Basato sullo stato"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- Nella modalità basata sul lavoro, la % di completamento viene calcolata in base alla quantità di lavoro svolto rispetto al lavoro totale. Nella modalità basata sullo stato, a ogni stato è associato un valore di % completamento. La modifica dello stato cambierà la % completamento.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3499,9 +3503,26 @@ it:
progress:
label_note: "Nota:"
modal:
- work_based_help_text: "La % completamento viene ricavata automaticamente dal lavoro e dal lavoro residuo."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "La % completamento è stabilita dallo stato della macro-attività."
migration_warning_text: "Nella modalità di calcolo basata sul lavoro, la % completamento non può essere impostata manualmente ed è legata al lavoro. Il valore esistente è stato mantenuto ma non può essere modificato. Specifica prima il lavoro."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Commentare"
comment_description: "Può visualizzare e commentare questa macro-attività."
diff --git a/config/locales/crowdin/ja.yml b/config/locales/crowdin/ja.yml
index 9ea2a8e2e45c..5f263fc3e1ea 100644
--- a/config/locales/crowdin/ja.yml
+++ b/config/locales/crowdin/ja.yml
@@ -1029,10 +1029,10 @@ ja:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "は開始日になっていません。これはマイルストーンの場倍、必要である。"
@@ -1062,15 +1062,17 @@ ja:
does_not_exist: "指定されたカテゴリは存在しません。"
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3077,8 +3079,10 @@ ja:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_properties: "項目名"
setting_work_package_startdate_is_adddate: "今日の日付を新しいワークパッケージの開始日とする"
setting_work_packages_projects_export_limit: "Work packages / Projects export limit"
@@ -3459,9 +3463,26 @@ ja:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "コメント"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/js-af.yml b/config/locales/crowdin/js-af.yml
index 51171b86d736..59c8f7063574 100644
--- a/config/locales/crowdin/js-af.yml
+++ b/config/locales/crowdin/js-af.yml
@@ -138,6 +138,8 @@ af:
description_select_work_package: "Kies werkspakket #%{id}"
description_subwork_package: "Kind van werkspakket #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Toggle preview mode"
source_code: "Toggle Markdown source mode"
error_saving_failed: "Saving the document failed with the following error: %{error}"
@@ -276,8 +278,10 @@ af:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ af:
label_create: "Skep"
label_create_work_package: "Create new work package"
label_created_by: "Created by"
+ label_current: "current"
label_date: "Datum"
label_date_with_format: "Tik die %{date_attribute} in die volgende formaat: %{format}"
label_deactivate: "Deactivate"
@@ -1182,6 +1187,9 @@ af:
one: "1 dag"
other: "%{count} dae"
zero: "0 days"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Activate zen mode"
button_deactivate: "Deactivate zen mode"
diff --git a/config/locales/crowdin/js-ar.yml b/config/locales/crowdin/js-ar.yml
index e2689d339bb5..67c66f6142eb 100644
--- a/config/locales/crowdin/js-ar.yml
+++ b/config/locales/crowdin/js-ar.yml
@@ -138,6 +138,8 @@ ar:
description_select_work_package: "اختر مجموعة العمل #%{id}"
description_subwork_package: "إنتاج مجموعة العمل #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Toggle preview mode"
source_code: "Toggle Markdown source mode"
error_saving_failed: "Saving the document failed with the following error: %{error}"
@@ -276,8 +278,10 @@ ar:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ ar:
label_create: "إنشاء"
label_create_work_package: "إنشاء حزمة جديدة"
label_created_by: "أنشئ بواسطة"
+ label_current: "current"
label_date: "التاريخ"
label_date_with_format: "أدخل %{date_attribute} باستخدام التنسيق التالي: %{format}"
label_deactivate: "تعطيل"
@@ -1194,6 +1199,13 @@ ar:
one: "1 يوم"
other: "%{count} يوم"
zero: "0 days"
+ word:
+ zero: "%{count} words"
+ one: "1 word"
+ two: "%{count} words"
+ few: "%{count} words"
+ many: "%{count} words"
+ other: "%{count} words"
zen_mode:
button_activate: "Activate zen mode"
button_deactivate: "Deactivate zen mode"
diff --git a/config/locales/crowdin/js-az.yml b/config/locales/crowdin/js-az.yml
index b1be89ad35de..2e0ab9648773 100644
--- a/config/locales/crowdin/js-az.yml
+++ b/config/locales/crowdin/js-az.yml
@@ -138,6 +138,8 @@ az:
description_select_work_package: "Select work package #%{id}"
description_subwork_package: "Child of work package #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Toggle preview mode"
source_code: "Toggle Markdown source mode"
error_saving_failed: "Saving the document failed with the following error: %{error}"
@@ -276,8 +278,10 @@ az:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ az:
label_create: "Create"
label_create_work_package: "Create new work package"
label_created_by: "Created by"
+ label_current: "current"
label_date: "Date"
label_date_with_format: "Enter the %{date_attribute} using the following format: %{format}"
label_deactivate: "Söndür"
@@ -1182,6 +1187,9 @@ az:
one: "1 day"
other: "%{count} days"
zero: "0 days"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Activate zen mode"
button_deactivate: "Deactivate zen mode"
diff --git a/config/locales/crowdin/js-be.yml b/config/locales/crowdin/js-be.yml
index 29a6fea761ea..8d0243e24336 100644
--- a/config/locales/crowdin/js-be.yml
+++ b/config/locales/crowdin/js-be.yml
@@ -138,6 +138,8 @@ be:
description_select_work_package: "Select work package #%{id}"
description_subwork_package: "Child of work package #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Toggle preview mode"
source_code: "Toggle Markdown source mode"
error_saving_failed: "Saving the document failed with the following error: %{error}"
@@ -276,8 +278,10 @@ be:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ be:
label_create: "Create"
label_create_work_package: "Create new work package"
label_created_by: "Created by"
+ label_current: "current"
label_date: "Дата"
label_date_with_format: "Enter the %{date_attribute} using the following format: %{format}"
label_deactivate: "Deactivate"
@@ -1188,6 +1193,11 @@ be:
one: "1 day"
other: "%{count} days"
zero: "0 days"
+ word:
+ one: "1 word"
+ few: "%{count} words"
+ many: "%{count} words"
+ other: "%{count} words"
zen_mode:
button_activate: "Activate zen mode"
button_deactivate: "Deactivate zen mode"
diff --git a/config/locales/crowdin/js-bg.yml b/config/locales/crowdin/js-bg.yml
index a9fed73b3646..a776d0e9eece 100644
--- a/config/locales/crowdin/js-bg.yml
+++ b/config/locales/crowdin/js-bg.yml
@@ -138,6 +138,8 @@ bg:
description_select_work_package: "Избери работен пакет #%{id}"
description_subwork_package: "Подработен пакет #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Toggle preview mode"
source_code: "Toggle Markdown source mode"
error_saving_failed: "Saving the document failed with the following error: %{error}"
@@ -276,8 +278,10 @@ bg:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ bg:
label_create: "Създаване"
label_create_work_package: "Създаване на нов работен пакет"
label_created_by: "Created by"
+ label_current: "current"
label_date: "Дата"
label_date_with_format: "Въведете %{date_attribute}, като използвате следния формат: %{format}"
label_deactivate: "Деактивирай"
@@ -1182,6 +1187,9 @@ bg:
one: "1 ден"
other: "%{count} дни"
zero: "0 days"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Activate zen mode"
button_deactivate: "Deactivate zen mode"
diff --git a/config/locales/crowdin/js-ca.yml b/config/locales/crowdin/js-ca.yml
index f21ff37aeb0f..748575e1696a 100644
--- a/config/locales/crowdin/js-ca.yml
+++ b/config/locales/crowdin/js-ca.yml
@@ -138,6 +138,8 @@ ca:
description_select_work_package: "Selecciona el paquet de treball #%{id}"
description_subwork_package: "Fill del paquet de treball #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Canvia al mode de vista prèvia"
source_code: "Canvia al mode de font Markdown"
error_saving_failed: "No s'ha pogut guardar el document per culpa del següent error: %{error}"
@@ -276,8 +278,10 @@ ca:
Els canvis poden tardar un temps a ser aplicats. Et notificarem un cop s'hagin actualitzat tots els paquets de treball rellevants.
Estàs segur que vols continuar?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ ca:
label_create: "Crear"
label_create_work_package: "Crear nou paquet de treball"
label_created_by: "Creat per"
+ label_current: "current"
label_date: "Data"
label_date_with_format: "Introdueix el %{date_attribute} amb el format següent: %{format}"
label_deactivate: "Desactivar"
@@ -1182,6 +1187,9 @@ ca:
one: "1 dia"
other: "%{count} dies"
zero: "0 dies"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Activa el mode zen"
button_deactivate: "Desactiva el mode zen"
diff --git a/config/locales/crowdin/js-ckb-IR.yml b/config/locales/crowdin/js-ckb-IR.yml
index 97b05d7c9cd7..7d3a413846e8 100644
--- a/config/locales/crowdin/js-ckb-IR.yml
+++ b/config/locales/crowdin/js-ckb-IR.yml
@@ -138,6 +138,8 @@ ckb-IR:
description_select_work_package: "Select work package #%{id}"
description_subwork_package: "Child of work package #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Toggle preview mode"
source_code: "Toggle Markdown source mode"
error_saving_failed: "Saving the document failed with the following error: %{error}"
@@ -276,8 +278,10 @@ ckb-IR:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ ckb-IR:
label_create: "Create"
label_create_work_package: "Create new work package"
label_created_by: "Created by"
+ label_current: "current"
label_date: "Date"
label_date_with_format: "Enter the %{date_attribute} using the following format: %{format}"
label_deactivate: "Deactivate"
@@ -1182,6 +1187,9 @@ ckb-IR:
one: "1 day"
other: "%{count} days"
zero: "0 days"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Activate zen mode"
button_deactivate: "Deactivate zen mode"
diff --git a/config/locales/crowdin/js-cs.yml b/config/locales/crowdin/js-cs.yml
index bce3f5cf525e..d27f8ecf91f6 100644
--- a/config/locales/crowdin/js-cs.yml
+++ b/config/locales/crowdin/js-cs.yml
@@ -138,6 +138,8 @@ cs:
description_select_work_package: "Vyberte pracovní balíček #%{id}"
description_subwork_package: "Podřazený pracovního balíčku #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Přepnout režim náhledu"
source_code: "Přepnout zdrojový mód Markdown"
error_saving_failed: "Uložení dokumentu se nezdařilo s následující chybou: %{error}"
@@ -275,8 +277,10 @@ cs:
warning: >
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -397,6 +401,7 @@ cs:
label_create: "Vytvořit"
label_create_work_package: "Vytvořit nový pracovní balíček"
label_created_by: "Vytvořil(a)"
+ label_current: "current"
label_date: "Datum"
label_date_with_format: "Zadejte %{date_attribute} v následujícím formátu: %{format}"
label_deactivate: "Deaktivovat"
@@ -1187,6 +1192,11 @@ cs:
one: "1 den"
other: "%{count} dní"
zero: "0 dní"
+ word:
+ one: "1 word"
+ few: "%{count} words"
+ many: "%{count} words"
+ other: "%{count} words"
zen_mode:
button_activate: "Aktivovat zen režim"
button_deactivate: "Deaktivovat zen režim"
diff --git a/config/locales/crowdin/js-da.yml b/config/locales/crowdin/js-da.yml
index 18ff291e892e..6e34ff7e00a8 100644
--- a/config/locales/crowdin/js-da.yml
+++ b/config/locales/crowdin/js-da.yml
@@ -138,6 +138,8 @@ da:
description_select_work_package: "Vælg arbejds pakke #%{id}"
description_subwork_package: "Barn af arbejds-pakke #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Toggle forhåndsvisning"
source_code: "Toggle Markdown kilde-visning"
error_saving_failed: "Lagring af dokumentet mislykkedes med følgende fejl: %{error}"
@@ -275,8 +277,10 @@ da:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -397,6 +401,7 @@ da:
label_create: "Opret"
label_create_work_package: "Opret ny arbejdspakke"
label_created_by: "Created by"
+ label_current: "current"
label_date: "Dato"
label_date_with_format: "Enter the %{date_attribute} using the following format: %{format}"
label_deactivate: "Deaktivér"
@@ -1181,6 +1186,9 @@ da:
one: "1 dag"
other: "%{count} dage"
zero: "0 days"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Activate zen mode"
button_deactivate: "Deactivate zen mode"
diff --git a/config/locales/crowdin/js-de.yml b/config/locales/crowdin/js-de.yml
index b0d2329a8172..d0ec8e4711fc 100644
--- a/config/locales/crowdin/js-de.yml
+++ b/config/locales/crowdin/js-de.yml
@@ -138,6 +138,8 @@ de:
description_select_work_package: "Arbeitspaket #%{id} auswählen"
description_subwork_package: "Kind von Arbeitspaket #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Vorschau-Modus ein/aus"
source_code: "Wechseln zwischen Markdown-Source und WYSIWYG"
error_saving_failed: "Fehler beim Speichern des Dokuments: %{error}"
@@ -275,8 +277,10 @@ de:
Es kann einige Zeit dauern, bis die Änderungen wirksam werden. Sie werden benachrichtigt, wenn alle relevanten Arbeitspakete aktualisiert worden sind.
Sind Sie sicher, dass Sie fortfahren möchten?
work_packages_settings:
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
+ Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
warning_progress_calculation_mode_change_from_status_to_field_html: >-
- Wenn Sie den Modus der Fortschrittsberechnung von statusbezogen auf aufwandsbezogen ändern, wird % Abgeschlossen zu einem nicht editierbaren Feld, dessen Wert von Aufwand und Verbleibender Aufwand abgeleitet wird. Vorhandene Werte für % Abgeschlossen werden beibehalten. Wenn die Werte für Aufwand und Verbleibender Aufwand nicht vorhanden waren, werden sie benötigt, um % Abgeschlossen zu ändern.
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Wenn Sie den Modus der Fortschrittsberechnung von aufwandsbezogen auf statusbezogen ändern, gehen alle bestehenden Werte für % Fertigstellung verloren und werden durch Werte ersetzt, die mit dem jeweiligen Status verbunden sind. Bestehende Werte für Verbleibender Aufwand können ebenfalls neu berechnet werden, um diese Änderung widerzuspiegeln. Diese Aktion ist nicht umkehrbar.
custom_actions:
@@ -397,6 +401,7 @@ de:
label_create: "Erstellen"
label_create_work_package: "Erstelle neues Arbeitspaket"
label_created_by: "Erstellt von"
+ label_current: "current"
label_date: "Datum"
label_date_with_format: "Die %{date_attribute} im folgenden Format eingeben: %{format}"
label_deactivate: "Deaktiviere"
@@ -1181,6 +1186,9 @@ de:
one: "1 Tag"
other: "%{count} Tage"
zero: "0 Tage"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Zen-Modus aktivieren"
button_deactivate: "Zen-Modus deaktivieren"
diff --git a/config/locales/crowdin/js-el.yml b/config/locales/crowdin/js-el.yml
index ee2cce95fc3a..36994192495f 100644
--- a/config/locales/crowdin/js-el.yml
+++ b/config/locales/crowdin/js-el.yml
@@ -138,6 +138,8 @@ el:
description_select_work_package: "Επιλέξτε πακέτο εργασίας #%{id}"
description_subwork_package: "Παιδί του πακέτου εργασίας #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Ενεργοποίηση λειτουργίας προεπισκόπησης"
source_code: "Ενεργοποίηση λειτουργίας Markdown source"
error_saving_failed: "Η αποθήκευση του αρχείου απέτυχε δίνοντας το ακόλουθο μήνυμα: %{error}"
@@ -275,8 +277,10 @@ el:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -397,6 +401,7 @@ el:
label_create: "Δημιουργία"
label_create_work_package: "Δημιουργήστε νέο πακέτο εργασίας"
label_created_by: "Δημιουργήθηκε από"
+ label_current: "current"
label_date: "Ημερομηνία"
label_date_with_format: "Εισάγετε την %{date_attribute} χρησιμοποιώντας την ακόλουθη μορφοποίηση: %{format}"
label_deactivate: "Απενεργοποίηση"
@@ -1181,6 +1186,9 @@ el:
one: "1 ημέρα"
other: "%{count} ημέρες"
zero: "0 days"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Ενεργοποίηση λειτουργίας zen"
button_deactivate: "Απενεργοποίηση λειτουργίας zen"
diff --git a/config/locales/crowdin/js-eo.yml b/config/locales/crowdin/js-eo.yml
index 167ba8baa574..6db7e9189022 100644
--- a/config/locales/crowdin/js-eo.yml
+++ b/config/locales/crowdin/js-eo.yml
@@ -138,6 +138,8 @@ eo:
description_select_work_package: "Select work package #%{id}"
description_subwork_package: "Child of work package #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Baskuligi antaŭrigarda reĝimo"
source_code: "Baskuligi Markdown fonta reĝimo"
error_saving_failed: "Ne eblis konservi la dokumenton pro la jena eraro: %{error}"
@@ -276,8 +278,10 @@ eo:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ eo:
label_create: "Krei"
label_create_work_package: "Create new work package"
label_created_by: "Kreita de"
+ label_current: "current"
label_date: "Dato"
label_date_with_format: "Enter the %{date_attribute} using the following format: %{format}"
label_deactivate: "Malaktivigi"
@@ -1182,6 +1187,9 @@ eo:
one: "1 tago"
other: "%{count} tagoj"
zero: "0 days"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Aktivigi zen reĝimo"
button_deactivate: "Malaktivigi zen reĝimo"
diff --git a/config/locales/crowdin/js-es.yml b/config/locales/crowdin/js-es.yml
index 93758bdaaee0..1804c45121fb 100644
--- a/config/locales/crowdin/js-es.yml
+++ b/config/locales/crowdin/js-es.yml
@@ -138,6 +138,8 @@ es:
description_select_work_package: "Seleccione el paquete de trabajo #%{id}"
description_subwork_package: "Seleccione el paquete de trabajo #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Activar modo de vista previa"
source_code: "Activar modo de visualización Markdown"
error_saving_failed: "No se pudo guardar el documento debido al siguiente error: %{error}"
@@ -276,8 +278,10 @@ es:
Los cambios pueden tardar algún tiempo en surtir efecto. Se le notificará cuando todos los paquetes de trabajo relevantes hayan sido actualizados.
¿Está seguro de que desea continuar?
work_packages_settings:
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
+ Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
warning_progress_calculation_mode_change_from_status_to_field_html: >-
- Cambiar el modo de cálculo del progreso de basado en el estado a basado en el trabajo hará que % completado sea un campo no editable cuyo valor se deriva de Trabajo y Trabajo restante. Los valores existentes para % completado se conservan. Si los valores para Trabajo y Trabajo restante no estaban presentes, serán necesarios para cambiar % completado.
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
El cambio del modo de cálculo del progreso de basado en el trabajo a basado en el estado hará que todos los valores existentes de % completado se pierdan y se sustituyan por valores asociados a cada estado. Los valores existentes para Trabajo restante también pueden recalcularse para reflejar este cambio. Esta acción no es reversible.
custom_actions:
@@ -398,6 +402,7 @@ es:
label_create: "Crear"
label_create_work_package: "Crear un nuevo paquete de trabajo"
label_created_by: "Creado por"
+ label_current: "current"
label_date: "Fecha"
label_date_with_format: "Introduzca el %{date_attribute} usando el siguiente formato: %{format}"
label_deactivate: "Desactivar"
@@ -1182,6 +1187,9 @@ es:
one: "1 día"
other: "%{count} días"
zero: "0 días"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Activar modo zen"
button_deactivate: "Desactivar modo zen"
diff --git a/config/locales/crowdin/js-et.yml b/config/locales/crowdin/js-et.yml
index e9bf7a10f2aa..bcaaf4d917fb 100644
--- a/config/locales/crowdin/js-et.yml
+++ b/config/locales/crowdin/js-et.yml
@@ -138,6 +138,8 @@ et:
description_select_work_package: "Select work package #%{id}"
description_subwork_package: "Child of work package #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Toggle preview mode"
source_code: "Toggle Markdown source mode"
error_saving_failed: "Saving the document failed with the following error: %{error}"
@@ -276,8 +278,10 @@ et:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ et:
label_create: "Loo uus"
label_create_work_package: "Lisa uus teema"
label_created_by: "Created by"
+ label_current: "current"
label_date: "Kuupäev"
label_date_with_format: "Enter the %{date_attribute} using the following format: %{format}"
label_deactivate: "Deactivate"
@@ -1182,6 +1187,9 @@ et:
one: "1 päev"
other: "%{count} päeva"
zero: "0 days"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Activate zen mode"
button_deactivate: "Deactivate zen mode"
diff --git a/config/locales/crowdin/js-eu.yml b/config/locales/crowdin/js-eu.yml
index ad04877e8d6d..e09f597ca49a 100644
--- a/config/locales/crowdin/js-eu.yml
+++ b/config/locales/crowdin/js-eu.yml
@@ -138,6 +138,8 @@ eu:
description_select_work_package: "Select work package #%{id}"
description_subwork_package: "Child of work package #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Toggle preview mode"
source_code: "Toggle Markdown source mode"
error_saving_failed: "Saving the document failed with the following error: %{error}"
@@ -276,8 +278,10 @@ eu:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ eu:
label_create: "Create"
label_create_work_package: "Create new work package"
label_created_by: "Created by"
+ label_current: "current"
label_date: "Date"
label_date_with_format: "Enter the %{date_attribute} using the following format: %{format}"
label_deactivate: "Deactivate"
@@ -1182,6 +1187,9 @@ eu:
one: "1 day"
other: "%{count} days"
zero: "0 days"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Activate zen mode"
button_deactivate: "Deactivate zen mode"
diff --git a/config/locales/crowdin/js-fa.yml b/config/locales/crowdin/js-fa.yml
index aec2cd41c730..85dac0af3395 100644
--- a/config/locales/crowdin/js-fa.yml
+++ b/config/locales/crowdin/js-fa.yml
@@ -138,6 +138,8 @@ fa:
description_select_work_package: "Select work package #%{id}"
description_subwork_package: "Child of work package #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Toggle preview mode"
source_code: "Toggle Markdown source mode"
error_saving_failed: "ذخیره سازی مستند، ناموفق بود، خطا: %{error}"
@@ -276,8 +278,10 @@ fa:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ fa:
label_create: "ایجاد"
label_create_work_package: "Create new work package"
label_created_by: "ایجاد شده توسط"
+ label_current: "current"
label_date: "تاریخ"
label_date_with_format: "%{date_attribute} را با این فرمت وارد کنید: %{format}"
label_deactivate: "غیر فعال کردن"
@@ -1182,6 +1187,9 @@ fa:
one: "1 day"
other: "%{count} روز"
zero: "0 days"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Activate zen mode"
button_deactivate: "Deactivate zen mode"
diff --git a/config/locales/crowdin/js-fi.yml b/config/locales/crowdin/js-fi.yml
index 1c29ae6593b4..cb6e9c4d76a5 100644
--- a/config/locales/crowdin/js-fi.yml
+++ b/config/locales/crowdin/js-fi.yml
@@ -138,6 +138,8 @@ fi:
description_select_work_package: "Valitse tehtävä #%{id}"
description_subwork_package: "Tehtävän #%{id} alitehtävä"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Esikatselutila"
source_code: "Lähdekoodi"
error_saving_failed: "Tallennus epäonnistui: %{error}"
@@ -276,8 +278,10 @@ fi:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ fi:
label_create: "Uusi"
label_create_work_package: "Uusi tehtävä"
label_created_by: "Luonut"
+ label_current: "current"
label_date: "Päivämäärä"
label_date_with_format: "Kirjoita %{date_attribute} seuraavassa muodossa: %{format}"
label_deactivate: "Poistaa käytöstä"
@@ -1182,6 +1187,9 @@ fi:
one: "päivä"
other: "%{count} päivää"
zero: "0 days"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Koko näyttö"
button_deactivate: "Sulje koko näyttö"
diff --git a/config/locales/crowdin/js-fil.yml b/config/locales/crowdin/js-fil.yml
index 921993122e3e..02c377429a92 100644
--- a/config/locales/crowdin/js-fil.yml
+++ b/config/locales/crowdin/js-fil.yml
@@ -138,6 +138,8 @@ fil:
description_select_work_package: "Piliin ang work package #%{id}"
description_subwork_package: "Bata ng work package #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Toggle preview mode"
source_code: "Toggle Markdown source mode"
error_saving_failed: "Saving the document failed with the following error: %{error}"
@@ -276,8 +278,10 @@ fil:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ fil:
label_create: "Lumikha"
label_create_work_package: "Lumikha ng bagong work package"
label_created_by: "Nilikha ni"
+ label_current: "current"
label_date: "Petsa"
label_date_with_format: "Ipasok anv %{date_attribute} gamit ang sumusunod na format: %{format}"
label_deactivate: "I-deactivate"
@@ -1182,6 +1187,9 @@ fil:
one: "Isang araw"
other: "mga Isang %{count} araw"
zero: "0 days"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "I-aktibo ang zen mode"
button_deactivate: "I-deactive ang zen mode"
diff --git a/config/locales/crowdin/js-fr.yml b/config/locales/crowdin/js-fr.yml
index 0a7bcdda7388..0952189c86a9 100644
--- a/config/locales/crowdin/js-fr.yml
+++ b/config/locales/crowdin/js-fr.yml
@@ -138,6 +138,8 @@ fr:
description_select_work_package: "Sélectionner le lot de travaux #%{id}"
description_subwork_package: "Enfant du lot de travaux #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Basculer en mode aperçu"
source_code: "Basculer en mode source Markdown"
error_saving_failed: "L'enregistrement du document a échoué en raison de l'erreur suivante : %{error}"
@@ -276,8 +278,10 @@ fr:
Les modifications pourraient prendre un certain temps pour être appliquées. Vous serez averti(e) lorsque tous les lots de travaux pertinents auront été mis à jour.
Voulez-vous continuer ?
work_packages_settings:
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
+ Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
warning_progress_calculation_mode_change_from_status_to_field_html: >-
- Passer du mode de calcul de la progression basé sur le statut au mode basé sur le travail transformera % réalisé en champ non modifiable dont la valeur est dérivée des champs Travail et Travail restant. Les valeurs existantes pour % réalisé sont conservées. Des valeurs pour Travail et Travail restant sont requises pour modifier % réalisé.
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Passer du mode de calcul de la progression basé sur le travail au mode basé sur le statut entraînera la perte de toutes les valeurs de % réalisé existantes et leur remplacement par les valeurs associées à chaque statut. Les valeurs existantes pour Travail restant peuvent également être recalculées pour refléter ce changement. Cette action est irréversible.
custom_actions:
@@ -398,6 +402,7 @@ fr:
label_create: "Créer"
label_create_work_package: "Créer un nouveau lot de travaux"
label_created_by: "Créé par"
+ label_current: "current"
label_date: "date"
label_date_with_format: "Saisissez l'attribut %{date_attribute} en utilisant le format suivant : %{format}"
label_deactivate: "Désactiver"
@@ -1182,6 +1187,9 @@ fr:
one: "1 jour"
other: "%{count} jours"
zero: "0 jour"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Activer le mode zen"
button_deactivate: "Désactiver le mode zen"
diff --git a/config/locales/crowdin/js-he.yml b/config/locales/crowdin/js-he.yml
index 6d1dc6089e38..56d938579d5d 100644
--- a/config/locales/crowdin/js-he.yml
+++ b/config/locales/crowdin/js-he.yml
@@ -138,6 +138,8 @@ he:
description_select_work_package: "Select work package #%{id}"
description_subwork_package: "Child of work package #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Toggle preview mode"
source_code: "Toggle Markdown source mode"
error_saving_failed: "Saving the document failed with the following error: %{error}"
@@ -276,8 +278,10 @@ he:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ he:
label_create: "צור"
label_create_work_package: "Create new work package"
label_created_by: "Created by"
+ label_current: "current"
label_date: "תאריך"
label_date_with_format: "Enter the %{date_attribute} using the following format: %{format}"
label_deactivate: "השבת"
@@ -1188,6 +1193,11 @@ he:
one: "יום אחד"
other: "%{count} ימים"
zero: "0 days"
+ word:
+ one: "1 word"
+ two: "%{count} words"
+ many: "%{count} words"
+ other: "%{count} words"
zen_mode:
button_activate: "Activate zen mode"
button_deactivate: "Deactivate zen mode"
diff --git a/config/locales/crowdin/js-hi.yml b/config/locales/crowdin/js-hi.yml
index 080b3c2c4760..789b8e4a0e36 100644
--- a/config/locales/crowdin/js-hi.yml
+++ b/config/locales/crowdin/js-hi.yml
@@ -138,6 +138,8 @@ hi:
description_select_work_package: "Select work package #%{id}"
description_subwork_package: "Child of work package #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Toggle preview mode"
source_code: "Markdown स्रोत मोड टॉगल करें"
error_saving_failed: "दस्तावेज़ को सहेजना निम्न त्रुटि के साथ विफल हुआ: %{error}"
@@ -276,8 +278,10 @@ hi:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ hi:
label_create: "रचना करें"
label_create_work_package: "Create new work package"
label_created_by: "Created by"
+ label_current: "current"
label_date: "तिथि"
label_date_with_format: "Enter the %{date_attribute} using the following format: %{format}"
label_deactivate: "निष्क्रिय करें"
@@ -1182,6 +1187,9 @@ hi:
one: "1 दिन"
other: "%{count} days"
zero: "0 days"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Activate zen mode"
button_deactivate: "Deactivate zen mode"
diff --git a/config/locales/crowdin/js-hr.yml b/config/locales/crowdin/js-hr.yml
index f5f498fc1d16..0a79c465a4d4 100644
--- a/config/locales/crowdin/js-hr.yml
+++ b/config/locales/crowdin/js-hr.yml
@@ -138,6 +138,8 @@ hr:
description_select_work_package: "Odaberite radni paket #%{id}"
description_subwork_package: "Child of work package #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Toggle preview mode"
source_code: "Toggle Markdown source mode"
error_saving_failed: "Saving the document failed with the following error: %{error}"
@@ -276,8 +278,10 @@ hr:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ hr:
label_create: "Stvori"
label_create_work_package: "Kreirajte novi radni paket"
label_created_by: "Kreirao korisnik"
+ label_current: "current"
label_date: "Datum"
label_date_with_format: "Enter the %{date_attribute} using the following format: %{format}"
label_deactivate: "Deaktivirajte"
@@ -1185,6 +1190,10 @@ hr:
one: "1 dan"
other: "%{count} dana"
zero: "0 days"
+ word:
+ one: "1 word"
+ few: "%{count} words"
+ other: "%{count} words"
zen_mode:
button_activate: "Activate zen mode"
button_deactivate: "Deactivate zen mode"
diff --git a/config/locales/crowdin/js-hu.yml b/config/locales/crowdin/js-hu.yml
index 051f82fc470f..7ff296cf1146 100644
--- a/config/locales/crowdin/js-hu.yml
+++ b/config/locales/crowdin/js-hu.yml
@@ -138,6 +138,8 @@ hu:
description_select_work_package: "Munkacsomag kiválasztás #%{id}"
description_subwork_package: "Munkacsomag gyermeke #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Váltás az előnézeti módra"
source_code: "Váltás Markdown forrás módra"
error_saving_failed: "A dokumentum mentése a következő hiba miatt nem sikerült: %{error}"
@@ -276,8 +278,10 @@ hu:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ hu:
label_create: "Létrehoz"
label_create_work_package: "Új munkacsomag létrehozása"
label_created_by: "Létrehozta"
+ label_current: "current"
label_date: "dátum"
label_date_with_format: "Adja meg a %{date_attribute}, a következő formátumban: %{format}"
label_deactivate: "Kikapcsol"
@@ -1182,6 +1187,9 @@ hu:
one: "1 nap"
other: "%{count} nap"
zero: "0 days"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Zen mód aktiválása"
button_deactivate: "Zen mód kikapcsolása"
diff --git a/config/locales/crowdin/js-id.yml b/config/locales/crowdin/js-id.yml
index 886d19f0c34d..55f9a40004f1 100644
--- a/config/locales/crowdin/js-id.yml
+++ b/config/locales/crowdin/js-id.yml
@@ -138,6 +138,8 @@ id:
description_select_work_package: "Select work package #%{id}"
description_subwork_package: "Child of work package #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Beralih ke mode preview"
source_code: "Toggle Markdown source mode"
error_saving_failed: "Saving the document failed with the following error: %{error}"
@@ -276,8 +278,10 @@ id:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ id:
label_create: "Buat baru"
label_create_work_package: "Buat Paket-Penugasan baru"
label_created_by: "Created by"
+ label_current: "current"
label_date: "Tanggal"
label_date_with_format: "Enter the %{date_attribute} using the following format: %{format}"
label_deactivate: "Nonaktifkan"
@@ -1179,6 +1184,8 @@ id:
one: "1 day"
other: "%{count} hari"
zero: "0 days"
+ word:
+ other: "%{count} words"
zen_mode:
button_activate: "Mengaktifkan modus zen"
button_deactivate: "Menonaktifkan modus zen"
diff --git a/config/locales/crowdin/js-it.yml b/config/locales/crowdin/js-it.yml
index d332e70d53a5..8b17fd570f46 100644
--- a/config/locales/crowdin/js-it.yml
+++ b/config/locales/crowdin/js-it.yml
@@ -138,6 +138,8 @@ it:
description_select_work_package: "Seleziona la macro-attività #%{id}"
description_subwork_package: "Subordinata alla macro-attività #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Attiva/disattiva modalità anteprima"
source_code: "Attiva/Disattiva modalità origine Marcatura"
error_saving_failed: "Il salvataggio del documento è fallito con il seguente errore: %{error}"
@@ -276,8 +278,10 @@ it:
L'applicazione delle modifiche potrebbe richiedere del tempo. Riceverai una notifica quando tutti i pacchetti di lavoro pertinenti saranno aggiornati.
Vuoi davvero continuare?
work_packages_settings:
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
+ Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
warning_progress_calculation_mode_change_from_status_to_field_html: >-
- Cambiare la modalità di calcolo dell'avanzamento da basata sullo stato a basata su lavoro renderà % Completa un campo non modificabile il cui valore è derivato da Lavoro e Lavoro rimanente. I valori esistenti per % Complete sono conservati. Se i valori per Lavoro e Lavoro rimanente non erano presenti, saranno necessari per modificare % Complete.
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Cambiando la modalità di calcolo dell'avanzamento da basata sul lavoro a basata sullo stato porvocherà la perdita di tutti i valori % Complete esistenti e saranno sostituiti con i valori associati ad ogni stato. I valori esistenti per il lavoro rimanente potrebbero anche essere ricalcolati per riflettere questo cambiamento. Questa azione non è reversibile.
custom_actions:
@@ -398,6 +402,7 @@ it:
label_create: "Crea"
label_create_work_package: "Crea una nuova macro-attività"
label_created_by: "Creato da"
+ label_current: "current"
label_date: "Data"
label_date_with_format: "Immettere il %{date_attribute} utilizzando il seguente formato: %{format}"
label_deactivate: "Disattivare"
@@ -1182,6 +1187,9 @@ it:
one: "1 giorno"
other: "%{count} giorni"
zero: "0 giorni"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Attiva modalità zen"
button_deactivate: "Disattiva modalità zen"
diff --git a/config/locales/crowdin/js-ja.yml b/config/locales/crowdin/js-ja.yml
index efe8fab1c711..c3e4953bf501 100644
--- a/config/locales/crowdin/js-ja.yml
+++ b/config/locales/crowdin/js-ja.yml
@@ -139,6 +139,8 @@ ja:
description_select_work_package: "作業項目を選択 #%{id}"
description_subwork_package: "作業項目の子 #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "プレビューモードの切り替え"
source_code: "Markdown ソースモードの切り替え"
error_saving_failed: "次のエラーで文書を保存するのに失敗しました: %{error}"
@@ -277,8 +279,10 @@ ja:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -399,6 +403,7 @@ ja:
label_create: "作成"
label_create_work_package: "新しいワークパッケージを作成"
label_created_by: "作成者:"
+ label_current: "current"
label_date: "日付"
label_date_with_format: "次の形式を使用して %{date_attribute} を入力してください: %{format}"
label_deactivate: "無効"
@@ -1180,6 +1185,8 @@ ja:
one: "1 day"
other: "%{count}日間"
zero: "0 days"
+ word:
+ other: "%{count} words"
zen_mode:
button_activate: "マナーモードをアクティブにする"
button_deactivate: "マナーモードを非アクティブにする"
diff --git a/config/locales/crowdin/js-ka.yml b/config/locales/crowdin/js-ka.yml
index 98c54102bc8a..233ff758bde0 100644
--- a/config/locales/crowdin/js-ka.yml
+++ b/config/locales/crowdin/js-ka.yml
@@ -138,6 +138,8 @@ ka:
description_select_work_package: "Select work package #%{id}"
description_subwork_package: "Child of work package #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Toggle preview mode"
source_code: "Toggle Markdown source mode"
error_saving_failed: "Saving the document failed with the following error: %{error}"
@@ -276,8 +278,10 @@ ka:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ ka:
label_create: "შექმნა"
label_create_work_package: "Create new work package"
label_created_by: "ავტორი"
+ label_current: "current"
label_date: "თარიღი"
label_date_with_format: "Enter the %{date_attribute} using the following format: %{format}"
label_deactivate: "დეაქტივაცია"
@@ -1182,6 +1187,9 @@ ka:
one: "1 დღე"
other: "%{count} დღე"
zero: "0 დღე"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Activate zen mode"
button_deactivate: "Deactivate zen mode"
diff --git a/config/locales/crowdin/js-kk.yml b/config/locales/crowdin/js-kk.yml
index 5a85236462d0..49aa639d5b3e 100644
--- a/config/locales/crowdin/js-kk.yml
+++ b/config/locales/crowdin/js-kk.yml
@@ -138,6 +138,8 @@ kk:
description_select_work_package: "Select work package #%{id}"
description_subwork_package: "Child of work package #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Toggle preview mode"
source_code: "Toggle Markdown source mode"
error_saving_failed: "Saving the document failed with the following error: %{error}"
@@ -276,8 +278,10 @@ kk:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ kk:
label_create: "Create"
label_create_work_package: "Create new work package"
label_created_by: "Created by"
+ label_current: "current"
label_date: "Date"
label_date_with_format: "Enter the %{date_attribute} using the following format: %{format}"
label_deactivate: "Deactivate"
@@ -1182,6 +1187,9 @@ kk:
one: "1 day"
other: "%{count} days"
zero: "0 days"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Activate zen mode"
button_deactivate: "Deactivate zen mode"
diff --git a/config/locales/crowdin/js-ko.yml b/config/locales/crowdin/js-ko.yml
index 6139005fa515..de00872f4943 100644
--- a/config/locales/crowdin/js-ko.yml
+++ b/config/locales/crowdin/js-ko.yml
@@ -138,6 +138,8 @@ ko:
description_select_work_package: "작업 패키지 #%{id} 선택"
description_subwork_package: "작업 패키지 #%{id}의 자식"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "미리 보기 모드 토글"
source_code: "Markdown 소스 모드 토글"
error_saving_failed: "다음 오류로 인해 문서를 저장하지 못했습니다: %{error}"
@@ -276,8 +278,10 @@ ko:
변경 사항이 적용되는 데 시간이 걸릴 수 있습니다. 모든 관련 작업 패키지가 업데이트되면 알림이 전송됩니다.
계속하시겠습니까?
work_packages_settings:
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
+ Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
warning_progress_calculation_mode_change_from_status_to_field_html: >-
- 진행률 계산 모드를 상태 기반에서 작업 기반으로 변경하면 완료 %가 편집할 수 없는 필드가 되며 해당 값은 작업 및 남은 작업에서 파생됩니다. 완료 %의 기존 값은 유지됩니다. 작업 및 남은 작업의 값이 없는 경우, 완료 %를 변경하려면 해당 값이 필요합니다.
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
진행률 계산 모드를 작업 기반에서 상태 기반으로 변경하면 기존의 모든 완료 % 값이 손실되고 각 상태와 관련된 값으로 대체됩니다. 남은 작업의 기존 값도 이 변경 사항을 반영하기 위해 다시 계산될 수 있습니다. 이 작업은 되돌릴 수 없습니다.
custom_actions:
@@ -398,6 +402,7 @@ ko:
label_create: "만들기"
label_create_work_package: "새 작업 패키지 만들기"
label_created_by: "작성자"
+ label_current: "current"
label_date: "날짜"
label_date_with_format: "%{date_attribute} 는 %{format} 과 같이 입력되어야 합니다."
label_deactivate: "비활성화"
@@ -1179,6 +1184,8 @@ ko:
one: "1일"
other: "%{count}일"
zero: "0일"
+ word:
+ other: "%{count} words"
zen_mode:
button_activate: "Zen 모드 활성화"
button_deactivate: "Zen 모드 비활성화"
diff --git a/config/locales/crowdin/js-lt.yml b/config/locales/crowdin/js-lt.yml
index 5121b4a7050e..9acf538d97a2 100644
--- a/config/locales/crowdin/js-lt.yml
+++ b/config/locales/crowdin/js-lt.yml
@@ -138,6 +138,8 @@ lt:
description_select_work_package: "Pasirinkite darbų paketą #%{id}"
description_subwork_package: "Darbų paketo vaikas #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Perjungti peržiūros režimą"
source_code: "Perjungti Markdown išeities kodo režimą"
error_saving_failed: "Dokumento išsaugoti nepavyko. Klaida: %{error}"
@@ -276,8 +278,10 @@ lt:
Pakeitimų įsigaliojimas gali užtrukti. Jums bus pranešta, kai visi susiję darbo paketai bus atnaujinti.
Ar tikrai norite tęsti?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ lt:
label_create: "Kurti"
label_create_work_package: "Kurti naują darbų paketą"
label_created_by: "Sukūrė"
+ label_current: "current"
label_date: "Data"
label_date_with_format: "Įveskite %{date_attribute} naudodami šį formatą: %{format}"
label_deactivate: "Išjungti"
@@ -1188,6 +1193,11 @@ lt:
one: "1 dieną"
other: "%{count} dienas (-ą, -ų)"
zero: "0 dienų"
+ word:
+ one: "1 word"
+ few: "%{count} words"
+ many: "%{count} words"
+ other: "%{count} words"
zen_mode:
button_activate: "Įjungti Zen režimą"
button_deactivate: "Išjungti Zen režimą"
diff --git a/config/locales/crowdin/js-lv.yml b/config/locales/crowdin/js-lv.yml
index 9440bab5a8c9..8275a54e8493 100644
--- a/config/locales/crowdin/js-lv.yml
+++ b/config/locales/crowdin/js-lv.yml
@@ -138,6 +138,8 @@ lv:
description_select_work_package: "Select work package #%{id}"
description_subwork_package: "Child of work package #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Toggle preview mode"
source_code: "Toggle Markdown source mode"
error_saving_failed: "Saving the document failed with the following error: %{error}"
@@ -276,8 +278,10 @@ lv:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ lv:
label_create: "Izveidot"
label_create_work_package: "Create new work package"
label_created_by: "Created by"
+ label_current: "current"
label_date: "Datums"
label_date_with_format: "Enter the %{date_attribute} using the following format: %{format}"
label_deactivate: "Deaktivizēt"
@@ -1185,6 +1190,10 @@ lv:
one: "1 dienas"
other: "%{count} dienām"
zero: "0 days"
+ word:
+ zero: "%{count} words"
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Activate zen mode"
button_deactivate: "Deactivate zen mode"
diff --git a/config/locales/crowdin/js-mn.yml b/config/locales/crowdin/js-mn.yml
index 99190a800ba7..ebfa0c211315 100644
--- a/config/locales/crowdin/js-mn.yml
+++ b/config/locales/crowdin/js-mn.yml
@@ -138,6 +138,8 @@ mn:
description_select_work_package: "Select work package #%{id}"
description_subwork_package: "Child of work package #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Toggle preview mode"
source_code: "Toggle Markdown source mode"
error_saving_failed: "Saving the document failed with the following error: %{error}"
@@ -276,8 +278,10 @@ mn:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ mn:
label_create: "Create"
label_create_work_package: "Create new work package"
label_created_by: "Created by"
+ label_current: "current"
label_date: "Date"
label_date_with_format: "Enter the %{date_attribute} using the following format: %{format}"
label_deactivate: "Deactivate"
@@ -1182,6 +1187,9 @@ mn:
one: "1 day"
other: "%{count} days"
zero: "0 days"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Activate zen mode"
button_deactivate: "Deactivate zen mode"
diff --git a/config/locales/crowdin/js-ms.yml b/config/locales/crowdin/js-ms.yml
index a97e1ac6b8f6..215adb82447a 100644
--- a/config/locales/crowdin/js-ms.yml
+++ b/config/locales/crowdin/js-ms.yml
@@ -138,6 +138,8 @@ ms:
description_select_work_package: "Pilih pakej kerja #%{id}"
description_subwork_package: "Anak kepada pakej kerja #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Tukar mod tinjauan"
source_code: "Tukar mod sumber Markdown"
error_saving_failed: "Penyimpanan dokumen gagal dengan ralat yang berikut: %{error}"
@@ -276,8 +278,10 @@ ms:
Perubahan mungkin mengambil sedikit masa untuk berkesan. Anda akan dimaklumkan apabila semua pakej kerja yang berkaitan telah dikemas kini.
Adakah anda pasti anda ingin teruskan?
work_packages_settings:
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
+ Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
warning_progress_calculation_mode_change_from_status_to_field_html: >-
- Mengubah mod pengiraan perkembangan daripada berdasarkan-status kepada berdasarkan-kerja akan menjadikan % Selesai ruang yang tidak boleh diedit yang nilainya diperoleh daripada Kerja dan Kerja yang berbaki. Nilai yang sedia ada bagi % Selesai dikekalkan. Jika nilai Kerja dan Kerja yang berbaki tiada, nilai tersebut akan diperlukan untuk mengubah % Selesai.
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Mengubah mod pengiraan perkembangan daripada berasaskan-kerja kepada berasaskan-status akan menjadikan semua nilai % Selesai yang sedia ada hilang dan digantikan dengan nilai yang berkaitan dengan setiap status. Nilai sedia ada bagi Kerja yang berbaki juga akan dikira semula untuk menggambarkan perubahan ini. Tindakan ini tidak boleh dipulihkan.
custom_actions:
@@ -398,6 +402,7 @@ ms:
label_create: "Cipta"
label_create_work_package: "Cipta pakej kerja baharu"
label_created_by: "Dicipta oleh"
+ label_current: "current"
label_date: "Tarikh"
label_date_with_format: "Masukkan %{date_attribute} menggunakan format berikut: %{format}"
label_deactivate: "Nyahaktifkan"
@@ -1179,6 +1184,8 @@ ms:
one: "1 hari"
other: "%{count} hari"
zero: "0 hari"
+ word:
+ other: "%{count} words"
zen_mode:
button_activate: "Aktifkan mod zen"
button_deactivate: "Nyahaktifkan mod zen"
diff --git a/config/locales/crowdin/js-ne.yml b/config/locales/crowdin/js-ne.yml
index b31d1666edbf..d20b15db62ad 100644
--- a/config/locales/crowdin/js-ne.yml
+++ b/config/locales/crowdin/js-ne.yml
@@ -138,6 +138,8 @@ ne:
description_select_work_package: "Select work package #%{id}"
description_subwork_package: "Child of work package #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Toggle preview mode"
source_code: "Toggle Markdown source mode"
error_saving_failed: "Saving the document failed with the following error: %{error}"
@@ -276,8 +278,10 @@ ne:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ ne:
label_create: "Create"
label_create_work_package: "Create new work package"
label_created_by: "Created by"
+ label_current: "current"
label_date: "Date"
label_date_with_format: "Enter the %{date_attribute} using the following format: %{format}"
label_deactivate: "Deactivate"
@@ -1182,6 +1187,9 @@ ne:
one: "1 day"
other: "%{count} days"
zero: "0 days"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Activate zen mode"
button_deactivate: "Deactivate zen mode"
diff --git a/config/locales/crowdin/js-nl.yml b/config/locales/crowdin/js-nl.yml
index 4be9f106e041..01476b3fed01 100644
--- a/config/locales/crowdin/js-nl.yml
+++ b/config/locales/crowdin/js-nl.yml
@@ -138,6 +138,8 @@ nl:
description_select_work_package: "Selecteer werk pakket #%{id}"
description_subwork_package: "Kind van werkpakket #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Voorbeeld modus wijzigen"
source_code: "Wissel Markdown bronmodus"
error_saving_failed: "Het opslaan van het document is mislukt met de volgende foutmelding:%{error}"
@@ -276,8 +278,10 @@ nl:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ nl:
label_create: "Maken"
label_create_work_package: "Nieuw werkpakket maken"
label_created_by: "Gemaakt door"
+ label_current: "current"
label_date: "Datum"
label_date_with_format: "Geef de %{date_attribute} met gebruik van volgend formaat: %{format}"
label_deactivate: "Deactiveren"
@@ -1182,6 +1187,9 @@ nl:
one: "1 dag"
other: "%{count} dagen"
zero: "0 dagen"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Zen-modus activeren"
button_deactivate: "Deactiveren van zen modus"
diff --git a/config/locales/crowdin/js-no.yml b/config/locales/crowdin/js-no.yml
index 3c602175cee4..ce8edd7cc2a5 100644
--- a/config/locales/crowdin/js-no.yml
+++ b/config/locales/crowdin/js-no.yml
@@ -138,6 +138,8 @@
description_select_work_package: "Velg arbeidspakke #%{id}"
description_subwork_package: "Barn av arbeidspakke #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Veksle forhåndsvisningsmodus"
source_code: "Veksle 'Markdown'-kildemodus"
error_saving_failed: "Lagring av dokumentet mislyktes med følgende feil: %{error}"
@@ -276,8 +278,10 @@
Endringene kan ta noe tid på å bli effektivisert. Du vil bli varslet når alle relevante arbeidspakker har blitt oppdatert.
Er du sikker på at du vil fortsette?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@
label_create: "Opprett"
label_create_work_package: "Opprett ny arbeidspakke"
label_created_by: "Opprettet av"
+ label_current: "current"
label_date: "Dato"
label_date_with_format: "Angi %{date_attribute} med følgende format: %{format}"
label_deactivate: "Deaktiver"
@@ -1182,6 +1187,9 @@
one: "1 dag"
other: "%{count} dager"
zero: "0 dager"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Aktiver zen modus"
button_deactivate: "Deaktiver zen modus"
diff --git a/config/locales/crowdin/js-pl.yml b/config/locales/crowdin/js-pl.yml
index 6a21fff4139e..441f84c5c33b 100644
--- a/config/locales/crowdin/js-pl.yml
+++ b/config/locales/crowdin/js-pl.yml
@@ -138,6 +138,8 @@ pl:
description_select_work_package: "Zaznacz zestaw Zadań #%{id}"
description_subwork_package: "Otwórz zadanie-dziecko #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Przełącz tryb podglądu"
source_code: "Przełącz tryb źródła Markdown"
error_saving_failed: "Zapisywanie dokumentu nie powiodło się, błąd: %{error}"
@@ -276,8 +278,10 @@ pl:
Zmiany mogą wejść w życie po pewnym czasie. Gdy wszystkie odpowiednie pakiety robocze zostaną zaktualizowane, otrzymasz powiadomienie.
Czy na pewno chcesz kontynuować?
work_packages_settings:
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
+ Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
warning_progress_calculation_mode_change_from_status_to_field_html: >-
- Zmiana trybu obliczania postępu z opartego na statusie na oparty na pracy sprawi, że atrybut % ukończenia będzie nieedytowalnym polem, którego wartość pochodzi z atrybutów Praca i Pozostała praca. Istniejące wartości atrybutu % ukończenia zostaną zachowane. Jeśli wartości atrybutów Praca i Pozostała praca nie były obecne, będą one wymagane w celu zmiany wartości % ukończenia.
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Zmiana trybu obliczania postępu z opartego na pracy na oparty na statusie spowoduje, że wszystkie istniejące wartości % ukończenia zostaną utracone i zastąpione wartościami powiązanymi z poszczególnymi statusami. Istniejące wartości Pozostała praca mogą również zostać obliczone ponownie w celu odzwierciedlenia tej zmiany. Działanie to jest nieodwracalne.
custom_actions:
@@ -398,6 +402,7 @@ pl:
label_create: "Utwórz"
label_create_work_package: "Utwórz nowy pakiet roboczy"
label_created_by: "Utworzony przez"
+ label_current: "current"
label_date: "Data"
label_date_with_format: "Wprowadź %{date_attribute} w następującym formacie: %{format}"
label_deactivate: "Wyłącz"
@@ -1188,6 +1193,11 @@ pl:
one: "1 dzień"
other: "%{count} dni"
zero: "0 dni"
+ word:
+ one: "1 word"
+ few: "%{count} words"
+ many: "%{count} words"
+ other: "%{count} words"
zen_mode:
button_activate: "Włącz tryb zen"
button_deactivate: "Wyłącz tryb zen"
diff --git a/config/locales/crowdin/js-pt-BR.yml b/config/locales/crowdin/js-pt-BR.yml
index eb0f0881cdda..63cb73415d72 100644
--- a/config/locales/crowdin/js-pt-BR.yml
+++ b/config/locales/crowdin/js-pt-BR.yml
@@ -138,6 +138,8 @@ pt-BR:
description_select_work_package: "Selecionar o pacote de trabalho #%{id}"
description_subwork_package: "Filho do pacote de trabalho #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Alternar modo de visualização"
source_code: "Alternar para código Markdown"
error_saving_failed: "Não foi possível salvar o documento pelo seguinte erro: %{error}"
@@ -275,8 +277,10 @@ pt-BR:
As alterações podem demorar algum tempo para entrar em vigor. Receberá uma notificação quando todos os pacotes de trabalho relevantes forem atualizados.
Tem a certeza de que deseja continuar?
work_packages_settings:
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
+ Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
warning_progress_calculation_mode_change_from_status_to_field_html: >-
- Alterar o modo de cálculo do progresso de "baseado em status" para "baseado em trabalho" tornará o campo % de conclusão não editável, com seu valor derivado de Trabalho e Trabalho Restante. Os valores existentes de % de conclusão serão preservados. Se os valores de Trabalho e Trabalho Restante não estiverem presentes, eles serão necessários para modificar a % de conclusão.
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Alterar o modo de cálculo do progresso de "baseado em trabalho" para "baseado em status" resultará na perda de todos os valores existentes de % de conclusão, que serão substituídos pelos valores associados a cada status. Os valores existentes de Trabalho restante também podem ser recalculados para refletir essa mudança. Essa ação é irreversível.
custom_actions:
@@ -397,6 +401,7 @@ pt-BR:
label_create: "Criar"
label_create_work_package: "Criar novo pacote de trabalho"
label_created_by: "Criado por"
+ label_current: "current"
label_date: "Data"
label_date_with_format: "Insira a %{date_attribute} usando o seguinte formato: %{format}"
label_deactivate: "Desativado"
@@ -1181,6 +1186,9 @@ pt-BR:
one: "1 dia"
other: "%{count} dias"
zero: "0 dias"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Ativar modo zen"
button_deactivate: "Desativar modo zen"
diff --git a/config/locales/crowdin/js-pt-PT.yml b/config/locales/crowdin/js-pt-PT.yml
index 32545ca68cce..17a4c4e3e8da 100644
--- a/config/locales/crowdin/js-pt-PT.yml
+++ b/config/locales/crowdin/js-pt-PT.yml
@@ -138,6 +138,8 @@ pt-PT:
description_select_work_package: "Selecionar pacote de trabalho #%{id}"
description_subwork_package: "Filho de pacote de trabalho #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Alternar modo de pré-visualização"
source_code: "Alternar modo de fonte do Markdown"
error_saving_failed: "Ao guardar o documento ocorreu o seguinte erro: %{error}"
@@ -276,8 +278,10 @@ pt-PT:
As alterações podem demorar algum tempo a entrar em vigor. Receberá uma notificação quando todos os pacotes de trabalho relevantes forem atualizados.
Tem a certeza de que quer continuar?
work_packages_settings:
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
+ Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
warning_progress_calculation_mode_change_from_status_to_field_html: >-
- Alterar o modo de cálculo do progresso de "baseado no estado" para "baseado no trabalho" fará com que % Completo seja um campo não editável cujo valor é derivado de Trabalho e Trabalho restante. Os valores existentes para % Completo são preservados. Se os valores para Trabalho e Trabalho restante não estiverem presentes, eles serão necessários para alterar % Completo.
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Se alterar o modo de cálculo do progresso de "baseado no trabalho" para "baseado no estado", todos os valores % Completo existentes serão perdidos e substituídos por valores associados a cada estado. Os valores existentes para Trabalho restante também podem ser recalculados para refletir esta alteração. Esta ação não é reversível.
custom_actions:
@@ -398,6 +402,7 @@ pt-PT:
label_create: "Criar"
label_create_work_package: "Criar nova tarefa"
label_created_by: "Criado por"
+ label_current: "current"
label_date: "Data"
label_date_with_format: "Digite o %{date_attribute} usando o seguinte formato: %{format}"
label_deactivate: "Desativar"
@@ -1182,6 +1187,9 @@ pt-PT:
one: "1 dia"
other: "%{count} dias"
zero: "0 dias"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Ativar modo zen"
button_deactivate: "Desativar modo zen"
diff --git a/config/locales/crowdin/js-ro.yml b/config/locales/crowdin/js-ro.yml
index 4fde82fcb61f..5bb6939aab9a 100644
--- a/config/locales/crowdin/js-ro.yml
+++ b/config/locales/crowdin/js-ro.yml
@@ -138,6 +138,8 @@ ro:
description_select_work_package: "Selectaţi pachetul de lucru #%{id}"
description_subwork_package: "Fiu al pachetului de lucru #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Activaţi/Dezactivați previzualizarea"
source_code: "Faceți click pentru a activa/dezactiva modul ierarhic."
error_saving_failed: "Salvarea documentului a eșuat cu următoarea eroare: %{error}"
@@ -275,8 +277,10 @@ ro:
Modificările ar putea dura ceva timp pentru a produce efecte. Vei fi notificat când toate pachetele de lucru relevante au fost actualizate.
Ești sigur că vrei să continui?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -397,6 +401,7 @@ ro:
label_create: "Creare"
label_create_work_package: "Creare pachet de lucru nou"
label_created_by: "Creat de"
+ label_current: "current"
label_date: "Dată"
label_date_with_format: "Introduceţi %{date_attribute} folosind următorul format: %{format}"
label_deactivate: "Dezactivare"
@@ -1184,6 +1189,10 @@ ro:
one: "1 zi"
other: "%{count} zile"
zero: "0 zile"
+ word:
+ one: "1 word"
+ few: "%{count} words"
+ other: "%{count} words"
zen_mode:
button_activate: "Activați modul zen"
button_deactivate: "Dezactivați modul zen"
diff --git a/config/locales/crowdin/js-ru.yml b/config/locales/crowdin/js-ru.yml
index 8aa9574d25b7..21bdcfaf1463 100644
--- a/config/locales/crowdin/js-ru.yml
+++ b/config/locales/crowdin/js-ru.yml
@@ -138,6 +138,8 @@ ru:
description_select_work_package: "Выберите пакет работ #%{id}"
description_subwork_package: "Дочерний пакет работ #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Переключить режим предварительного просмотра"
source_code: "В режим просмотра исходного кода "
error_saving_failed: "Не удалось сохранить документ по следующей причине: %{error}"
@@ -275,8 +277,10 @@ ru:
Для вступления изменений в силу может потребоваться некоторое время. Вы будете уведомлены, когда все соответствующие пакеты работ будут обновлены.
Хотите продолжить?
work_packages_settings:
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
+ Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
warning_progress_calculation_mode_change_from_status_to_field_html: >-
- При изменении расчета прогресса с режима на основе статуса на режим на основе трудозатрат поле % Завершения станет нередактируемым, его значение будет получено из значений Работа и Оставшаяся работа. Существующие значения для % Завершения сохраняются. Если значения для Работа и Оставшаяся работа отсутствуют, они потребуются для изменения % Завершения.
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
При изменении расчета прогресса с режима на основе трудозатрат на режим на основе статуса все существующие значения % Завершения будут потеряны и заменены значениями, связанными с каждым статусом. Существующие значения параметра Оставшаяся работа также могут быть пересчитаны с учетом этого изменения. Это действие необратимо.
custom_actions:
@@ -397,6 +401,7 @@ ru:
label_create: "Создать"
label_create_work_package: "Создать новый пакет работ"
label_created_by: "Автор"
+ label_current: "current"
label_date: "Дата"
label_date_with_format: "Введите %{date_attribute}, используя следующий формат: %{format}"
label_deactivate: "Деактивировать"
@@ -1187,6 +1192,11 @@ ru:
one: "1 день"
other: "%{count} дней"
zero: "0 дней"
+ word:
+ one: "1 word"
+ few: "%{count} words"
+ many: "%{count} words"
+ other: "%{count} words"
zen_mode:
button_activate: "Включить полноэкранный режим"
button_deactivate: "Отключить полноэкранный режим"
diff --git a/config/locales/crowdin/js-rw.yml b/config/locales/crowdin/js-rw.yml
index 35de85c5fe16..a4ae2d063591 100644
--- a/config/locales/crowdin/js-rw.yml
+++ b/config/locales/crowdin/js-rw.yml
@@ -138,6 +138,8 @@ rw:
description_select_work_package: "Select work package #%{id}"
description_subwork_package: "Child of work package #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Toggle preview mode"
source_code: "Toggle Markdown source mode"
error_saving_failed: "Saving the document failed with the following error: %{error}"
@@ -276,8 +278,10 @@ rw:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ rw:
label_create: "Create"
label_create_work_package: "Create new work package"
label_created_by: "Created by"
+ label_current: "current"
label_date: "Date"
label_date_with_format: "Enter the %{date_attribute} using the following format: %{format}"
label_deactivate: "Deactivate"
@@ -1182,6 +1187,9 @@ rw:
one: "1 day"
other: "%{count} days"
zero: "0 days"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Activate zen mode"
button_deactivate: "Deactivate zen mode"
diff --git a/config/locales/crowdin/js-si.yml b/config/locales/crowdin/js-si.yml
index 320b439bc427..9ecf6bb32ce4 100644
--- a/config/locales/crowdin/js-si.yml
+++ b/config/locales/crowdin/js-si.yml
@@ -138,6 +138,8 @@ si:
description_select_work_package: "වැඩ පැකේජය තෝරන්න #%{id}"
description_subwork_package: "වැඩ පැකේජය දරුවා #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "පෙරදසුනෙහි මාදිලිය ටොගල් කරන්න"
source_code: "සලකුණු කිරීමේ ප්රභව ප්රකාරය ටොගල් කරන්න"
error_saving_failed: "පහත දැක්වෙන දෝෂය සමඟ ලේඛනය සුරැකීම අසාර්ථක විය: %{error}"
@@ -276,8 +278,10 @@ si:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ si:
label_create: "සාදන්න"
label_create_work_package: "නව වැඩ පැකේජයක් සාදන්න"
label_created_by: "විසින් නිර්මාණය"
+ label_current: "current"
label_date: "දිනය"
label_date_with_format: "පහත දැක්වෙන ආකෘතිය භාවිතා කරමින් %{date_attribute} ඇතුල් කරන්න: %{format}"
label_deactivate: "අක්රිය කරන්න"
@@ -1182,6 +1187,9 @@ si:
one: "දින 1"
other: "%{count} දින"
zero: "0 days"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "සක්රිය මාදිලිය"
button_deactivate: "සෙන් මාදිලිය අක්රිය"
diff --git a/config/locales/crowdin/js-sk.yml b/config/locales/crowdin/js-sk.yml
index 553ed4ddbf27..425e8805c4c8 100644
--- a/config/locales/crowdin/js-sk.yml
+++ b/config/locales/crowdin/js-sk.yml
@@ -138,6 +138,8 @@ sk:
description_select_work_package: "Vyberte pracovný balík #%{id}"
description_subwork_package: "Podradený pracovný balík #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Prepnúť do režimu náhľadu"
source_code: "Prepnúť do režimu Markdown"
error_saving_failed: "Uloženie dokumentu zlyhalo s nasledujúcou chybou: %{error}"
@@ -276,8 +278,10 @@ sk:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ sk:
label_create: "Vytvoriť"
label_create_work_package: "Vytvoriť nový pracovný balíček"
label_created_by: "Vytvoril(a)"
+ label_current: "current"
label_date: "Dátum"
label_date_with_format: "Zadajte %{date_attribute} v tomto formáte: %{format}"
label_deactivate: "Deaktivovať"
@@ -1188,6 +1193,11 @@ sk:
one: "1 deň"
other: "%{count} dní"
zero: "0 days"
+ word:
+ one: "1 word"
+ few: "%{count} words"
+ many: "%{count} words"
+ other: "%{count} words"
zen_mode:
button_activate: "Aktivovať zen režim"
button_deactivate: "Deaktivovať zen režim"
diff --git a/config/locales/crowdin/js-sl.yml b/config/locales/crowdin/js-sl.yml
index 73c2f3d40931..75ad600e70dc 100644
--- a/config/locales/crowdin/js-sl.yml
+++ b/config/locales/crowdin/js-sl.yml
@@ -138,6 +138,8 @@ sl:
description_select_work_package: "Izberi delovni paket #%{id}"
description_subwork_package: "Podrejen delovni paket #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Preklopi način predogleda"
source_code: "Preklopite vhodni način označevanja"
error_saving_failed: "Shranjevanje dokumenta ni uspelo zaradi napake: %{error}"
@@ -275,8 +277,10 @@ sl:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -397,6 +401,7 @@ sl:
label_create: "Ustvari"
label_create_work_package: "Ustvari delovni paket"
label_created_by: "Ustvaril"
+ label_current: "current"
label_date: "Datum"
label_date_with_format: "Vstavi %{date_attribute} tako da uporabiš format: %{format}"
label_deactivate: "Onemogoči"
@@ -1187,6 +1192,11 @@ sl:
one: "1 dan"
other: "%{count} dni"
zero: "0 days"
+ word:
+ one: "1 word"
+ two: "%{count} words"
+ few: "%{count} words"
+ other: "%{count} words"
zen_mode:
button_activate: "Omogočite zen način"
button_deactivate: "Onemogočite zen način"
diff --git a/config/locales/crowdin/js-sr.yml b/config/locales/crowdin/js-sr.yml
index 5308d001aca9..ddf5b8630abd 100644
--- a/config/locales/crowdin/js-sr.yml
+++ b/config/locales/crowdin/js-sr.yml
@@ -138,6 +138,8 @@ sr:
description_select_work_package: "Select work package #%{id}"
description_subwork_package: "Child of work package #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Toggle preview mode"
source_code: "Toggle Markdown source mode"
error_saving_failed: "Saving the document failed with the following error: %{error}"
@@ -276,8 +278,10 @@ sr:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ sr:
label_create: "Create"
label_create_work_package: "Create new work package"
label_created_by: "Created by"
+ label_current: "current"
label_date: "Date"
label_date_with_format: "Enter the %{date_attribute} using the following format: %{format}"
label_deactivate: "Deactivate"
@@ -1185,6 +1190,10 @@ sr:
one: "1 day"
other: "%{count} days"
zero: "0 days"
+ word:
+ one: "1 word"
+ few: "%{count} words"
+ other: "%{count} words"
zen_mode:
button_activate: "Activate zen mode"
button_deactivate: "Deactivate zen mode"
diff --git a/config/locales/crowdin/js-sv.yml b/config/locales/crowdin/js-sv.yml
index 70e9dfb8f36f..ab63025c4242 100644
--- a/config/locales/crowdin/js-sv.yml
+++ b/config/locales/crowdin/js-sv.yml
@@ -138,6 +138,8 @@ sv:
description_select_work_package: "Välj arbetspaket #%{id}"
description_subwork_package: "Barn till arbetspaket #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Växla förhandsgranskningsläge"
source_code: "Växla markdown-källläge"
error_saving_failed: "Misslyckades med att spara dokumentet på grund av följande fel: %{error}"
@@ -275,8 +277,10 @@ sv:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -397,6 +401,7 @@ sv:
label_create: "Skapa"
label_create_work_package: "Skapa nya arbetspaket"
label_created_by: "Skapad av"
+ label_current: "current"
label_date: "Datum"
label_date_with_format: "Ange %{date_attribute} med följande format: %{format}"
label_deactivate: "Deaktivera"
@@ -1181,6 +1186,9 @@ sv:
one: "1 dag"
other: "%{count} dagar"
zero: "0 dagar"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Aktivera zen-läge"
button_deactivate: "Inaktivera avskalat läge"
diff --git a/config/locales/crowdin/js-th.yml b/config/locales/crowdin/js-th.yml
index 6f3ac79579e7..8b49d1ff8034 100644
--- a/config/locales/crowdin/js-th.yml
+++ b/config/locales/crowdin/js-th.yml
@@ -138,6 +138,8 @@ th:
description_select_work_package: "เลือกแพ็คเกจงาน #%{id}"
description_subwork_package: "แพ็คเกจงานย่อย #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "สลับโหมดแสดงตัวอย่าง"
source_code: "Toggle Markdown source mode"
error_saving_failed: "การบันทึกเอกสารล้มเหลวด้วยข้อผิดพลาดต่อไปนี้: %{error}"
@@ -276,8 +278,10 @@ th:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ th:
label_create: "สร้าง"
label_create_work_package: "สร้างชุดภารกิจใหม่"
label_created_by: "Created by"
+ label_current: "current"
label_date: "วันที่"
label_date_with_format: "Enter the %{date_attribute} using the following format: %{format}"
label_deactivate: "ปิดใช้งาน"
@@ -1179,6 +1184,8 @@ th:
one: "1 day"
other: "%{count} วัน"
zero: "0 days"
+ word:
+ other: "%{count} words"
zen_mode:
button_activate: "Activate zen mode"
button_deactivate: "Deactivate zen mode"
diff --git a/config/locales/crowdin/js-tr.yml b/config/locales/crowdin/js-tr.yml
index d0da66f2e1fc..8e2568d6c52e 100644
--- a/config/locales/crowdin/js-tr.yml
+++ b/config/locales/crowdin/js-tr.yml
@@ -138,6 +138,8 @@ tr:
description_select_work_package: "#%{id} nolu iş paketini seçin"
description_subwork_package: "#%{id} nolu iş paketinin alt parçası"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Önizleme modunu aç/kapat"
source_code: "Markdown kaynak modunu değiştir"
error_saving_failed: "Aşağıdaki nedenden dolayı belge kayıt edilemedi: %{error}"
@@ -275,8 +277,10 @@ tr:
warning: >
Değişikliklerin geçerlilik kazanması biraz zaman alabilir. İlgili tüm iş paketleri güncellendiğinde bilgilendirileceksiniz. Devam etmek istediğine emin misin?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -397,6 +401,7 @@ tr:
label_create: "Oluştur"
label_create_work_package: "Yeni iş paketi oluştur"
label_created_by: "Oluşturan"
+ label_current: "current"
label_date: "Tarih"
label_date_with_format: "Aşağıdaki biçimi kullanarak %{date_attribute} girin: %{format}"
label_deactivate: "Etkisizleştir"
@@ -1181,6 +1186,9 @@ tr:
one: "1 gün"
other: "%{count} gün"
zero: "0 gün"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Zen modunu etkinleştir"
button_deactivate: "Zen modunu devre dışı bırak"
diff --git a/config/locales/crowdin/js-uk.yml b/config/locales/crowdin/js-uk.yml
index bf0ed75df078..a9a929d4e2cf 100644
--- a/config/locales/crowdin/js-uk.yml
+++ b/config/locales/crowdin/js-uk.yml
@@ -138,6 +138,8 @@ uk:
description_select_work_package: "Виберіть пакет робіт #%{id}"
description_subwork_package: "Нащадок пакету робіт #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Перемкнути режим попереднього перегляду"
source_code: "Увімкнути режим вимкнення Markdown"
error_saving_failed: "Не вдалося зберегти документ із такою помилкою: %{error}"
@@ -276,8 +278,10 @@ uk:
Застосування змін може тривати деякий час. Ви отримаєте сповіщення, коли всі відповідні пакети робіт буде оновлено.
Продовжити?
work_packages_settings:
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
+ Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
warning_progress_calculation_mode_change_from_status_to_field_html: >-
- Якщо перейти з режиму обчислення прогресу на основі статусу на режим на основі робіт, атрибут % завершення стане недоступним для редагування полем, значення якого отримуватиметься зі значень атрибутів Робота й Залишок роботи. Наявні значення атрибута % завершення буде збережено. Якщо значення атрибутів Робота й Залишок роботи не задано, їх потрібно буде задати, щоб змінити значення атрибута % завершення.
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Якщо перейти з режиму обчислення прогресу на основі робіт на режим на основі статусу, усі наявні значення атрибута % завершення буде втрачено й замінено значеннями, пов’язаними з кожним статусом. Наявні значення атрибута Залишок роботи може бути також переобчислено з урахуванням цієї зміни. Цю дію не можна скасувати.
custom_actions:
@@ -398,6 +402,7 @@ uk:
label_create: "Створити"
label_create_work_package: "Створити новий робочий пакет"
label_created_by: "Створено"
+ label_current: "current"
label_date: "Дата"
label_date_with_format: "Введіть %{date_attribute}, використовуючи наступний формат: %{format}"
label_deactivate: "Деактивувати"
@@ -1188,6 +1193,11 @@ uk:
one: "1 день"
other: "%{count} д."
zero: "0 днів"
+ word:
+ one: "1 word"
+ few: "%{count} words"
+ many: "%{count} words"
+ other: "%{count} words"
zen_mode:
button_activate: "Активуйте режим дзен"
button_deactivate: "Деактивуйте режим дзен"
diff --git a/config/locales/crowdin/js-uz.yml b/config/locales/crowdin/js-uz.yml
index 598bfb848769..4615140e34d8 100644
--- a/config/locales/crowdin/js-uz.yml
+++ b/config/locales/crowdin/js-uz.yml
@@ -138,6 +138,8 @@ uz:
description_select_work_package: "Select work package #%{id}"
description_subwork_package: "Child of work package #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Toggle preview mode"
source_code: "Toggle Markdown source mode"
error_saving_failed: "Saving the document failed with the following error: %{error}"
@@ -276,8 +278,10 @@ uz:
The changes might take some time to take effect. You will be notified when all relevant work packages have been updated.
Are you sure you want to continue?
work_packages_settings:
- warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ warning_progress_calculation_mode_change_from_status_to_field_html: >-
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Changing progress calculation mode from work-based to status-based will result in all existing % Complete values to be lost and replaced with values associated with each status. Existing values for Remaining work may also be recalculated to reflect this change. This action is not reversible.
custom_actions:
@@ -398,6 +402,7 @@ uz:
label_create: "Create"
label_create_work_package: "Create new work package"
label_created_by: "Created by"
+ label_current: "current"
label_date: "Date"
label_date_with_format: "Enter the %{date_attribute} using the following format: %{format}"
label_deactivate: "Deactivate"
@@ -1182,6 +1187,9 @@ uz:
one: "1 day"
other: "%{count} days"
zero: "0 days"
+ word:
+ one: "1 word"
+ other: "%{count} words"
zen_mode:
button_activate: "Activate zen mode"
button_deactivate: "Deactivate zen mode"
diff --git a/config/locales/crowdin/js-vi.yml b/config/locales/crowdin/js-vi.yml
index 913476e9125b..60856c46ea82 100644
--- a/config/locales/crowdin/js-vi.yml
+++ b/config/locales/crowdin/js-vi.yml
@@ -138,6 +138,8 @@ vi:
description_select_work_package: "Chọn công việc #%{id}"
description_subwork_package: "Con của công việc #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "Chuyển đổi chế độ xem trước"
source_code: "Chuyển đổi chế độ mã Markdown"
error_saving_failed: "Lưu tài liệu không thành công với lỗi sau: %{error}"
@@ -276,8 +278,10 @@ vi:
Các thay đổi có thể mất một thời gian để có hiệu lực. Bạn sẽ được thông báo khi tất cả các công việc liên quan đã được cập nhật.
Bạn có chắc chắn muốn tiếp tục không?
work_packages_settings:
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
+ Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
warning_progress_calculation_mode_change_from_status_to_field_html: >-
- Thay đổi chế độ tính toán tiến độ từ dựa trên trạng thái sang dựa trên công việc sẽ làm cho % Hoàn thành trở thành trường không thể chỉnh sửa, giá trị của nó được lấy từ Công việc và Công việc còn lại. Các giá trị hiện tại cho % Hoàn thành sẽ được giữ lại. Nếu các giá trị cho Công việc và Công việc còn lại không có, chúng sẽ được yêu cầu để thay đổi % Hoàn thành.
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Thay đổi chế độ tính toán tiến độ từ dựa trên công việc sang dựa trên trạng thái sẽ dẫn đến việc tất cả các giá trị hiện tại của % Hoàn thành bị mất và thay thế bằng các giá trị liên kết với từng trạng thái. Các giá trị hiện tại cho Công việc còn lại cũng có thể được tính lại để phản ánh sự thay đổi này. Hành động này không thể hoàn tác.
custom_actions:
@@ -398,6 +402,7 @@ vi:
label_create: "Tạo"
label_create_work_package: "Tạo gói công việc mới"
label_created_by: "Được tạo bởi"
+ label_current: "current"
label_date: "Ngày"
label_date_with_format: "Nhập %{date_attribute} theo định dạng sau: %{format}"
label_deactivate: "Hủy kích hoạt"
@@ -1179,6 +1184,8 @@ vi:
one: "1 ngày"
other: "%{count} ngày"
zero: "0 ngày"
+ word:
+ other: "%{count} words"
zen_mode:
button_activate: "Kích hoạt chế độ Zen"
button_deactivate: "Tắt chế độ Zen"
diff --git a/config/locales/crowdin/js-zh-CN.yml b/config/locales/crowdin/js-zh-CN.yml
index 004167832401..0f05cecbe644 100644
--- a/config/locales/crowdin/js-zh-CN.yml
+++ b/config/locales/crowdin/js-zh-CN.yml
@@ -138,6 +138,8 @@ zh-CN:
description_select_work_package: "选择工作包 #%{id}"
description_subwork_package: "子工作包 #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "切换预览模式"
source_code: "切换 Markdown 模式"
error_saving_failed: "保存文档失败,出现以下错误:%{error}"
@@ -275,8 +277,10 @@ zh-CN:
warning: >
更改可能需要一些时间才能生效。当更新完所有相关工作包时,您将收到通知。
work_packages_settings:
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
+ Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
warning_progress_calculation_mode_change_from_status_to_field_html: >-
- 将进度计算模式从基于状态改为基于工作,将使完成百分比成为不可编辑字段,其值来自工作和剩余工时。完成百分比的现有值将保留。如果没有 "工时"和 "剩余工作"的值,则需要这些值才能更改 "完成百分比"。
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
将进度计算模式从基于工时的方式改为基于状态,将会导致所有现有的 %完整的 值丢失,并被与每个状态相关的值所替代。 剩余工时 的现有值也可能被重新计算,以反映这种变化。此操作不可逆转。
custom_actions:
@@ -397,6 +401,7 @@ zh-CN:
label_create: "创建"
label_create_work_package: "创建新工作包"
label_created_by: "创建自"
+ label_current: "current"
label_date: "日期"
label_date_with_format: "以%{format} 的格式输入 %{date_attribute}"
label_deactivate: "停用"
@@ -1178,6 +1183,8 @@ zh-CN:
one: "1 天"
other: "%{count} 天"
zero: "0 天"
+ word:
+ other: "%{count} words"
zen_mode:
button_activate: "激活 zen 模式"
button_deactivate: "取消激活 zen 模式"
diff --git a/config/locales/crowdin/js-zh-TW.yml b/config/locales/crowdin/js-zh-TW.yml
index 3fbb0a03eeb7..e29caa69fbcb 100644
--- a/config/locales/crowdin/js-zh-TW.yml
+++ b/config/locales/crowdin/js-zh-TW.yml
@@ -138,6 +138,8 @@ zh-TW:
description_select_work_package: "選取工作項目 #%{id}"
description_subwork_package: "子工作項目 #%{id}"
editor:
+ revisions: "Show local modifications"
+ no_revisions: "No local modifications found"
preview: "切換預覽模式"
source_code: "切換Markdown模式"
error_saving_failed: "保存文件失敗, 出現以下錯誤: %{error}"
@@ -274,8 +276,10 @@ zh-TW:
warning: >
更改可能需要一些時間才能生效。當更新完所有相關工作包時,您將收到通知。
work_packages_settings:
+ warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
+ Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
warning_progress_calculation_mode_change_from_status_to_field_html: >-
- 將進度計算模式從基於狀態改為基於工作,將使完成百分比成為不可編輯字段,其值來自工作和剩餘工時。完成百分比的現有值將保留。如果沒有 "工時"和 "剩餘工作"的值,則需要這些值才能更改 "完成百分比"。
+ Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
將進度計算模式從基於工時的方式改為基於狀態,將會導致所有現有的 %完整的 值丟失,並被與每個狀態相關的值所替代。 剩餘工時 的現有值也可能被重新計算,以反映這種變化。此操作不可逆轉。
custom_actions:
@@ -396,6 +400,7 @@ zh-TW:
label_create: "建立"
label_create_work_package: "建立新的工作項目"
label_created_by: "建立者:"
+ label_current: "current"
label_date: "日期"
label_date_with_format: "輸入 %{date_attribute} 使用以下格式: %{format}"
label_deactivate: "停用"
@@ -1177,6 +1182,8 @@ zh-TW:
one: "1 天"
other: "%{count} 天"
zero: "0 天"
+ word:
+ other: "%{count} words"
zen_mode:
button_activate: "啟動 zen 模式"
button_deactivate: "停用 zen 模式"
diff --git a/config/locales/crowdin/ka.yml b/config/locales/crowdin/ka.yml
index 6edc7660464b..c334143978e9 100644
--- a/config/locales/crowdin/ka.yml
+++ b/config/locales/crowdin/ka.yml
@@ -1040,10 +1040,10 @@ ka:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "is not on start date, although this is required for milestones."
@@ -1073,15 +1073,17 @@ ka:
does_not_exist: "The specified category does not exist."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3118,8 +3120,10 @@ ka:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3502,9 +3506,26 @@ ka:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "კომენტარი"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/kk.yml b/config/locales/crowdin/kk.yml
index 624a40465359..b27671681648 100644
--- a/config/locales/crowdin/kk.yml
+++ b/config/locales/crowdin/kk.yml
@@ -1040,10 +1040,10 @@ kk:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "is not on start date, although this is required for milestones."
@@ -1073,15 +1073,17 @@ kk:
does_not_exist: "The specified category does not exist."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3118,8 +3120,10 @@ kk:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3502,9 +3506,26 @@ kk:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Comment"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/ko.yml b/config/locales/crowdin/ko.yml
index 193295dcba0a..82c093b93630 100644
--- a/config/locales/crowdin/ko.yml
+++ b/config/locales/crowdin/ko.yml
@@ -1032,10 +1032,10 @@ ko:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "- 작업과 남은 작업이 일치하지 않습니다"
- cannot_be_set_when_work_is_zero: "- 작업이 0인 경우 설정할 수 없습니다"
- must_be_set_when_remaining_work_is_set: "'남은 작업'이 설정된 경우 필수입니다."
- must_be_set_when_work_and_remaining_work_are_set: "'작업' 및 '남은 작업'이 설정된 경우 필수입니다."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "- 0에서 100 사이여야 합니다."
due_date:
not_start_date: "마일스톤에서 요구하지만, 시작 날짜가 없음"
@@ -1065,15 +1065,17 @@ ko:
does_not_exist: "지정한 카테고리가 존재하지 않습니다."
estimated_hours:
not_a_number: "- 유효한 기간이 아닙니다."
- cant_be_inferior_to_remaining_work: "남은 작업보다 낮을 수 없습니다."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "'남은 작업' 및 '완료 %'가 설정된 경우 필수입니다."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "- 유효한 기간이 아닙니다."
- cant_exceed_work: "작업보다 높을 수 없습니다."
- must_be_set_when_work_is_set: "작업이 설정된 경우 필수입니다."
- must_be_set_when_work_and_percent_complete_are_set: "'작업' 및 '완료 %'가 설정된 경우 필수입니다."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "작업 패키지가 읽기 전용 상태이므로 해당 속성을 변경할 수 없습니다."
type:
attributes:
@@ -3077,8 +3079,10 @@ ko:
setting_work_package_done_ratio: "진행률 계산"
setting_work_package_done_ratio_field: "작업 기반"
setting_work_package_done_ratio_status: "상태 기반"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- 작업 기반 모드에서 완료 %는 총 작업 대비 완료된 작업을 기준으로 계산됩니다. 상태 기반 모드에서는 각 상태에 완료 % 값이 연결되어 있습니다. 상태를 변경하면 완료 %도 변경됩니다.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_properties: "작업 패키지 속성"
setting_work_package_startdate_is_adddate: "새 작업 패키지에 대한 시작 날짜로 현재 날짜 사용"
setting_work_packages_projects_export_limit: "작업 패키지/프로젝트 내보내기 제한"
@@ -3460,9 +3464,26 @@ ko:
progress:
label_note: "참고:"
modal:
- work_based_help_text: "완료 %는 작업 및 남은 작업에서 자동으로 파생됩니다."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "완료 %는 작업 패키지 상태에 따라 설정됩니다."
migration_warning_text: "작업 기반 진행률 계산 모드에서 완료 %는 수동으로 설정할 수 없으며 작업에 연결됩니다. 기존 값은 유지되지만 편집할 수 없습니다. 먼저 작업을 입력하세요."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "코멘트"
comment_description: "이 작업 패키지를 보고 코멘트를 작성할 수 있습니다."
diff --git a/config/locales/crowdin/lt.yml b/config/locales/crowdin/lt.yml
index 18f36f5f2088..1e69aa7281fb 100644
--- a/config/locales/crowdin/lt.yml
+++ b/config/locales/crowdin/lt.yml
@@ -1051,10 +1051,10 @@ lt:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Privaloma, kai nustatytas likęs darbas."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "nėra pradžios data, nors tai reikalinga svarbiems etapams."
@@ -1084,15 +1084,17 @@ lt:
does_not_exist: "Nurodyta kategorija neegzistuoja."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Negali būti mažesnis už likusį darbą."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Negali būdi daugiau nei Darbas."
- must_be_set_when_work_is_set: "Privaloma, kai nustatytas Darbas."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "Darbo paketas yra tik skaitymo būsenoje, taigi jo atributų keisti negalima."
type:
attributes:
@@ -3185,8 +3187,10 @@ lt:
setting_work_package_done_ratio: "Eigos skaičiavimas"
setting_work_package_done_ratio_field: "Pagal-darbą"
setting_work_package_done_ratio_status: "Pagal-būseną"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- Režime pagal-darbą, pabaigimo % skaičiuojami pagal tai, kiek darbo atlikta lyginant su visu darbo kiekiu. Režime pagal-būseną, kiekvienas būsenas turi savo susijusią baigtumo % reikšmę. Pakeitus būseną pasikeis ir % baigta.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3570,9 +3574,26 @@ lt:
progress:
label_note: "Pastaba:"
modal:
- work_based_help_text: "% baigta automatiškai skaičiuojama pagal Darbą ir Likusį darbą."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% baigta nustatoma pagal paketo būseną."
migration_warning_text: "Darbu paremtame eigos skaičiavimo režime % baigta negali būti nustatomas rankomis ir yra susietas su darbu. Esamos reikšmės buvo išlaikytos, bet negali būti keičiamos. Prašome iš pradžių įveskite darbą."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Komentaras"
comment_description: "Gali žiūrėti ir komentuoti šį darbo paketą."
diff --git a/config/locales/crowdin/lv.yml b/config/locales/crowdin/lv.yml
index 20e9052f6bcc..0d2c068d97db 100644
--- a/config/locales/crowdin/lv.yml
+++ b/config/locales/crowdin/lv.yml
@@ -1047,10 +1047,10 @@ lv:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "nav sākuma datums, kaut arī tas ir nepieciešams atskaites punktam."
@@ -1080,15 +1080,17 @@ lv:
does_not_exist: "The specified category does not exist."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3155,8 +3157,10 @@ lv:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3540,9 +3544,26 @@ lv:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Komentârs"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/mn.yml b/config/locales/crowdin/mn.yml
index 21ddae98cecd..98d5253536c9 100644
--- a/config/locales/crowdin/mn.yml
+++ b/config/locales/crowdin/mn.yml
@@ -1040,10 +1040,10 @@ mn:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "is not on start date, although this is required for milestones."
@@ -1073,15 +1073,17 @@ mn:
does_not_exist: "The specified category does not exist."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3118,8 +3120,10 @@ mn:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3502,9 +3506,26 @@ mn:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Comment"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/ms.yml b/config/locales/crowdin/ms.yml
index 2e46e08813fd..b7663e3af9cf 100644
--- a/config/locales/crowdin/ms.yml
+++ b/config/locales/crowdin/ms.yml
@@ -1031,10 +1031,10 @@ ms:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Diperlukan apabila kerja yang Berbaki ditetapkan."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "bukan pada tarikh mula, walaupun ini diperlukan untuk pencapaian."
@@ -1064,15 +1064,17 @@ ms:
does_not_exist: "Kategori yang ditentukan tidak wujud."
estimated_hours:
not_a_number: "bukan jangka masa yang sah."
- cant_be_inferior_to_remaining_work: "Tidak boleh lebih rendah daripada kerja yang Berbaki."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "bukan jangka masa yang sah."
- cant_exceed_work: "Tidak boleh lebih tinggi daripada Kerja."
- must_be_set_when_work_is_set: "Diperlukan apabila Kerja ditetapkan."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "Pakej kerja berada dalam status baca sahaja maka atributnya tidak boleh diubah."
type:
attributes:
@@ -3077,8 +3079,10 @@ ms:
setting_work_package_done_ratio: "Pengiraan perkembangan"
setting_work_package_done_ratio_field: "Berasaskan kerja"
setting_work_package_done_ratio_status: "Berasaskan status"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- Di mod berasaskan kerja, % Selesai dikira daripada berapa banyak kerja yang telah siap berhubungan dengan jumlah kerja. Di mod berasaskan status, setiap status mempunyai kadar % Selesai berkait dengannya. Pertukaran status akan mengubah % Selesai.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3460,9 +3464,26 @@ ms:
progress:
label_note: "Perhatian:"
modal:
- work_based_help_text: "% Selesai secara automatik diperolehi daripada Kerja dan Kerja yang berbaki."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Selesai ditetapkan oleh status pakej kerja."
migration_warning_text: "Dalam mod pengiraan perkembangan berdasarkan kerja, % Selesai tidak boleh ditetapkan secara manual dan ianya terikat kepada Kerja. Nilai sedia ada tersebut telah disimpan tetapi tidak boleh diedit. Sila input Kerja dahulu."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Komen"
comment_description: "Boleh lihat dan komen berkenaan pakej kerja ini."
diff --git a/config/locales/crowdin/ne.yml b/config/locales/crowdin/ne.yml
index ba654ceb2655..c17c821777e2 100644
--- a/config/locales/crowdin/ne.yml
+++ b/config/locales/crowdin/ne.yml
@@ -1040,10 +1040,10 @@ ne:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "is not on start date, although this is required for milestones."
@@ -1073,15 +1073,17 @@ ne:
does_not_exist: "The specified category does not exist."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3118,8 +3120,10 @@ ne:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3502,9 +3506,26 @@ ne:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Comment"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/nl.yml b/config/locales/crowdin/nl.yml
index fd950c777a78..979bea334719 100644
--- a/config/locales/crowdin/nl.yml
+++ b/config/locales/crowdin/nl.yml
@@ -1037,10 +1037,10 @@ nl:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Vereist wanneer Resterend werk is ingesteld."
- must_be_set_when_work_and_remaining_work_are_set: "Vereist wanneer Werk en Resterend werk zijn ingesteld."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "moet tussen 0 en 100 liggen."
due_date:
not_start_date: "is niet op begindatum, hoewel dit voor mijlpalen vereist is."
@@ -1070,15 +1070,17 @@ nl:
does_not_exist: "De gekozen categorie bestaat niet."
estimated_hours:
not_a_number: "is geen geldige duur."
- cant_be_inferior_to_remaining_work: "Kan niet lager zijn dan Resterend werk."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Vereist wanneer Resterend werk en % Voltooid zijn ingesteld."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is geen geldige duur."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Vereist wanneer Werk is ingesteld."
- must_be_set_when_work_and_percent_complete_are_set: "Vereist wanneer Werk en % Voltooid zijn ingesteld."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "Het werkpakket heeft een alleen-lezen status dus kunne attributen niet worden gewijzigd."
type:
attributes:
@@ -3114,8 +3116,10 @@ nl:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3497,9 +3501,26 @@ nl:
progress:
label_note: "Opmerking:"
modal:
- work_based_help_text: "% Voltooid wordt automatisch afgeleid van Werk en Resterend werk."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Voltooid wordt ingesteld door de status van het werkpakket."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Commentaar"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/no.yml b/config/locales/crowdin/no.yml
index f7bd70a16140..9e5bea29f725 100644
--- a/config/locales/crowdin/no.yml
+++ b/config/locales/crowdin/no.yml
@@ -1039,10 +1039,10 @@
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "samsvarer ikke med arbeid og arbeid som gjenstår"
- cannot_be_set_when_work_is_zero: "kan ikke angis når arbeidet er null"
- must_be_set_when_remaining_work_is_set: "Påkrevd når gjenværende arbeid er satt."
- must_be_set_when_work_and_remaining_work_are_set: "Påkrevd når arbeid og gjenstående arbeid settes."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "må være mellom 0 og 100."
due_date:
not_start_date: "er ikke på startdato, selv om dette er nødvendig for milepæler."
@@ -1072,15 +1072,17 @@
does_not_exist: "Den angitte kategorien finnes ikke."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Kan ikke være lavere enn gjenstående arbeid."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Påkrevd når gjenværende arbeid og % Fullført er satt."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Kan ikke være høyere enn arbeidet."
- must_be_set_when_work_is_set: "Påkrevet når arbeidet settes."
- must_be_set_when_work_and_percent_complete_are_set: "Påkrevd når gjenværende arbeid og % Fullført er satt."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "Arbeidspakken er i skrivebeskyttet status slik at egenskapene ikke kan endres."
type:
attributes:
@@ -3117,8 +3119,10 @@
setting_work_package_done_ratio: "Beregning av fremdrift"
setting_work_package_done_ratio_field: "Arbeidsbasert"
setting_work_package_done_ratio_status: "Statusbasert"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- I arbeidsbasert modus, beregnes % Ferdig ut fra hvor mye arbeid som er gjort i forhold til det totale arbeidet. I -statusbasert modus har hver status en % Ferdig verdi knyttet til den. Endring av status vil endre % Ferdig.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3501,9 +3505,26 @@
progress:
label_note: "Merk:"
modal:
- work_based_help_text: "% Ferdig utledes automatisk fra arbeid og gjenstående arbeid."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Ferdig er angitt etter status på arbeidspakken."
migration_warning_text: "I arbeidsbasert fremdriftsberegningsmodus kan % Ferdig ferdigstilt ikke settes manuelt og er knyttet til jobber. Den eksisterende verdien er lagret, men kan ikke endres. Skriv inn arbeidet først."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Kommentar"
comment_description: "Kan se og kommentere denne arbeidspakken."
diff --git a/config/locales/crowdin/pl.yml b/config/locales/crowdin/pl.yml
index 63a7d5f0dc66..67fefcc4b648 100644
--- a/config/locales/crowdin/pl.yml
+++ b/config/locales/crowdin/pl.yml
@@ -1051,10 +1051,10 @@ pl:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "nie odpowiada pracy i pozostałej pracy"
- cannot_be_set_when_work_is_zero: "nie można ustawić, gdy praca wynosi zero"
- must_be_set_when_remaining_work_is_set: "Wymagane, gdy ustawiona jest opcja Pozostała praca."
- must_be_set_when_work_and_remaining_work_are_set: "Wymagane, gdy ustawione są opcje Praca i Pozostała praca."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "musi wynosić od 0 do 100."
due_date:
not_start_date: "nie jest w dniu rozpoczęcia, chociaż jest to wymagane dla Kamieni Milowych."
@@ -1084,15 +1084,17 @@ pl:
does_not_exist: "Podana kategoria nie istnieje."
estimated_hours:
not_a_number: "nie jest prawidłowym czasem trwania."
- cant_be_inferior_to_remaining_work: "Nie może być mniejsza niż wartość pozostałej pracy."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Wymagane, gdy ustawione są opcje Pozostała praca i % ukończenia."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "nie jest prawidłowym czasem trwania."
- cant_exceed_work: "Nie może być wyższa niż wartość pracy."
- must_be_set_when_work_is_set: "Wymagane, gdy ustawiona jest opcja Praca."
- must_be_set_when_work_and_percent_complete_are_set: "Wymagane, gdy ustawione są opcje Praca i % ukończenia."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "Pakiet roboczy ma status tylko do odczytu, więc jego atrybutów nie można zmienić."
type:
attributes:
@@ -3186,8 +3188,10 @@ pl:
setting_work_package_done_ratio: "Obliczenie postępu"
setting_work_package_done_ratio_field: "Oparte na pracy"
setting_work_package_done_ratio_status: "Oparte na statusie"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- W trybie opartym na pracy % ukończenia jest obliczany na podstawie ilości wykonanej pracy w stosunku do pracy całkowitej. W trybie opartym na statusie każdy status ma powiązaną wartość % ukończenia. Zmiana statusu spowoduje zmianę % ukończenia.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3572,9 +3576,26 @@ pl:
progress:
label_note: "Uwaga:"
modal:
- work_based_help_text: "% ukończenia jest automatycznie wyprowadzany z wartości Praca i Pozostała praca."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% ukończenia jest ustawiany na podstawie statusu pakietu roboczego."
migration_warning_text: "W trybie obliczania postępu na podstawie pracy wartości % ukończenia nie można ustawić ręcznie i jest ona powiązana z wartością Praca. Istniejąca wartość została zachowana, ale nie można jej edytować. Najpierw wprowadź wartość Praca."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Komentarz"
comment_description: "Może wyświetlać i komentować ten pakiet roboczy."
diff --git a/config/locales/crowdin/pt-BR.yml b/config/locales/crowdin/pt-BR.yml
index 948892c2c1d9..c57cc6f876fc 100644
--- a/config/locales/crowdin/pt-BR.yml
+++ b/config/locales/crowdin/pt-BR.yml
@@ -1038,10 +1038,10 @@ pt-BR:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "não corresponde ao trabalho e ao trabalho restante"
- cannot_be_set_when_work_is_zero: "não pode ser definido quando o trabalho é zero"
- must_be_set_when_remaining_work_is_set: "Necessário quando o Trabalho restante for definido."
- must_be_set_when_work_and_remaining_work_are_set: "Necessário quando o Trabalho e o Trabalho restante são definidos."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "deve estar entre 0 e 100."
due_date:
not_start_date: "não é na data de início, embora isso seja necessário para os marcos."
@@ -1071,15 +1071,17 @@ pt-BR:
does_not_exist: "Categoria especificada não existe."
estimated_hours:
not_a_number: "não é uma duração válida."
- cant_be_inferior_to_remaining_work: "Não pode ser menor do que o Trabalho restante."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Necessário quando o Trabalho restante e o % concluído são definidos."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "não é uma duração válida."
- cant_exceed_work: "Não pode ser maior do que o Trabalho."
- must_be_set_when_work_is_set: "Necessário quando o Trabalho for definido."
- must_be_set_when_work_and_percent_complete_are_set: "Necessário quando Trabalho e % concluído são definidos."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "O pacote de trabalho está em estado somente leitura, então seus atributos não podem ser alterados."
type:
attributes:
@@ -3114,8 +3116,10 @@ pt-BR:
setting_work_package_done_ratio: "Cálculo de progresso"
setting_work_package_done_ratio_field: "Com base no trabalho"
setting_work_package_done_ratio_status: "Com base no estado"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- No modo com base no trabalho, a % de conclusão é calculada com base na quantidade de trabalho realizado em relação ao total de trabalho. Já no modo com base no estado, cada estado possui um valor de % de conclusão associado a ele. Alterar o estado resultará em uma mudança na % de conclusão.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3497,9 +3501,26 @@ pt-BR:
progress:
label_note: "Obs.:"
modal:
- work_based_help_text: "% de conclusão é automaticamente calculada com base no trabalho total e no trabalho restante."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "A % de conclusão é definida pelo estado do pacote de trabalho."
migration_warning_text: "No modo de cálculo de progresso com base no trabalho, a % conclusão não pode ser definida manualmente e está vinculada ao Trabalho. O valor existente foi mantido, mas não pode ser editado. Favor inserir o Trabalho primeiro."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Comentário"
comment_description: "Pode visualizar e comentar neste pacote de trabalho."
diff --git a/config/locales/crowdin/pt-PT.yml b/config/locales/crowdin/pt-PT.yml
index e871bcb611b8..a1ae4eb0b417 100644
--- a/config/locales/crowdin/pt-PT.yml
+++ b/config/locales/crowdin/pt-PT.yml
@@ -1038,10 +1038,10 @@ pt-PT:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "não corresponde ao trabalho e ao trabalho restante"
- cannot_be_set_when_work_is_zero: "não pode ser definido quando o trabalho é zero"
- must_be_set_when_remaining_work_is_set: "Obrigatório quando o Trabalho restante está definido."
- must_be_set_when_work_and_remaining_work_are_set: "Obrigatório quando o Trabalho e o Trabalho restante estão definidos."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "tem de estar entre 0 e 100."
due_date:
not_start_date: "não é na data de início, embora isto seja necessário para os registos."
@@ -1071,15 +1071,17 @@ pt-PT:
does_not_exist: "A categoria especificada não existe."
estimated_hours:
not_a_number: "não é uma duração válida."
- cant_be_inferior_to_remaining_work: "Não pode ser inferior a Trabalho restante."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Necessário quando são definidos Trabalho restante e % concluído."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "não é uma duração válida."
- cant_exceed_work: "Não pode ser superior a Trabalho."
- must_be_set_when_work_is_set: "Obrigatório quando o Trabalho é definido."
- must_be_set_when_work_and_percent_complete_are_set: "Necessário quando Trabalho e % concluído estão definidos."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "O pacote de trabalho está em estado de apenas leitura, por isso os seus atributos não podem ser alterados."
type:
attributes:
@@ -3113,8 +3115,10 @@ pt-PT:
setting_work_package_done_ratio: "Cálculo do progresso"
setting_work_package_done_ratio_field: "Baseado no trabalho"
setting_work_package_done_ratio_status: "Baseado no estado"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- No modo baseado no trabalho, a % de conclusão é calculada a partir da quantidade de trabalho realizado em relação ao trabalho total. No modo baseado no estado, cada estado tem um valor de % de conclusão associado. A alteração do estado altera a % de conclusão.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_properties: "Propriedades das tarefas"
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"
@@ -3497,9 +3501,26 @@ pt-PT:
progress:
label_note: "Nota:"
modal:
- work_based_help_text: "A % de conclusão é derivada automaticamente do Trabalho e do Trabalho restante."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "A % de conclusão é definida pelo estado do pacote de trabalho."
migration_warning_text: "No modo de cálculo do progresso com base no trabalho, a % de conclusão não pode ser definida manualmente e está ligada ao Trabalho. O valor existente foi mantido, mas não pode ser editado. Introduza primeiro o Trabalho."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Comentário"
comment_description: "Pode ver e comentar este pacote de trabalho."
diff --git a/config/locales/crowdin/ro.yml b/config/locales/crowdin/ro.yml
index 967266673784..cf80e3dee3cd 100644
--- a/config/locales/crowdin/ro.yml
+++ b/config/locales/crowdin/ro.yml
@@ -1047,10 +1047,10 @@ ro:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "nu este în data de început, deși acest lucru este necesar pentru etape."
@@ -1080,15 +1080,17 @@ ro:
does_not_exist: "Categoria specificată nu există."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "Pachetul de lucru este în stare de numai citire, astfel încât atributele sale nu pot fi modificate."
type:
attributes:
@@ -3154,8 +3156,10 @@ ro:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3539,9 +3543,26 @@ ro:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Comentariu"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/ru.yml b/config/locales/crowdin/ru.yml
index 18588a7a4b69..fd91cdb07b34 100644
--- a/config/locales/crowdin/ru.yml
+++ b/config/locales/crowdin/ru.yml
@@ -1053,10 +1053,10 @@ ru:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Требуется, если установлен параметр Оставшаяся работа."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "должно быть между 0 и 100."
due_date:
not_start_date: "не совпадает с датой начала, хотя это требуется для вех."
@@ -1086,15 +1086,17 @@ ru:
does_not_exist: "Указанная категория не существует."
estimated_hours:
not_a_number: "не является допустимой продолжительностью."
- cant_be_inferior_to_remaining_work: "Не может быть меньше, чем Оставшаяся работа."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "не является допустимой продолжительностью."
- cant_exceed_work: "Не может быть выше Работы."
- must_be_set_when_work_is_set: "Требуется, если установлен параметр «Работа»."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "Пакет работ находится в статусе доступном только для чтения, поэтому его атрибуты не могут быть изменены."
type:
attributes:
@@ -3188,8 +3190,10 @@ ru:
setting_work_package_done_ratio: "Режим расчета прогресса"
setting_work_package_done_ratio_field: "На основе трудозатрат"
setting_work_package_done_ratio_status: "На основе статуса"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- В режиме На основе трудозатрат, процент завершения рассчитывается на основе того, сколько работы выполнено по отношению к общему объему работ. В режиме На основе статуса, каждый статус имеет связанное с ним значение процента завершения. Изменение статуса изменит процент завершения.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_properties: "Свойства пакета работ"
setting_work_package_startdate_is_adddate: "Использовать текущую дату как дату начала для новых пакетов работ"
setting_work_packages_projects_export_limit: "Ограничение экспорта пакетов работ / проектов"
@@ -3573,9 +3577,26 @@ ru:
progress:
label_note: "Примечание:"
modal:
- work_based_help_text: "% Выполнения автоматически выводится из Работ и Оставшихся работ."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Выполнения определяется статусом пакета работ."
migration_warning_text: "В режиме расчета прогресса \"На основе трудозатрат\" процент завершения невозможно установить вручную, он привязан к трудозатратам. Существующее значение сохранено, но его нельзя изменить. Пожалуйста, сначала введите трудозатраты."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Комментировать"
comment_description: "Может просматривать и комментировать этот пакет работ."
diff --git a/config/locales/crowdin/rw.yml b/config/locales/crowdin/rw.yml
index b4ecdd08e289..e83722c5ac42 100644
--- a/config/locales/crowdin/rw.yml
+++ b/config/locales/crowdin/rw.yml
@@ -1040,10 +1040,10 @@ rw:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "is not on start date, although this is required for milestones."
@@ -1073,15 +1073,17 @@ rw:
does_not_exist: "The specified category does not exist."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3118,8 +3120,10 @@ rw:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3502,9 +3506,26 @@ rw:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Comment"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/si.yml b/config/locales/crowdin/si.yml
index c407cf18f549..d8e84bb796b8 100644
--- a/config/locales/crowdin/si.yml
+++ b/config/locales/crowdin/si.yml
@@ -1040,10 +1040,10 @@ si:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "සන්ධිස්ථාන සඳහා මෙය අවශ්ය වුවද ආරම්භක දිනයේ නොවේ."
@@ -1073,15 +1073,17 @@ si:
does_not_exist: "නිශ්චිත කාණ්ඩය නොපවතී."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3118,8 +3120,10 @@ si:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_properties: "වැඩ පැකේජය ගුණ"
setting_work_package_startdate_is_adddate: "නව වැඩ පැකේජ සඳහා ආරම්භක දිනය ලෙස වත්මන් දිනය භාවිතා කරන්න"
setting_work_packages_projects_export_limit: "Work packages / Projects export limit"
@@ -3502,9 +3506,26 @@ si:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "අදහස් දක්වන්න"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/sk.yml b/config/locales/crowdin/sk.yml
index e3a51bc2fc07..d94f2648ffbc 100644
--- a/config/locales/crowdin/sk.yml
+++ b/config/locales/crowdin/sk.yml
@@ -1054,10 +1054,10 @@ sk:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "nemá rovnakú hodnotu ako dátum začiatku, aj keď je to požadované pre pracovné balíčky typu \"míľnik\"."
@@ -1087,15 +1087,17 @@ sk:
does_not_exist: "Špecifikovaná kategória neexistuje."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3191,8 +3193,10 @@ sk:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3577,9 +3581,26 @@ sk:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Komentár"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/sl.yml b/config/locales/crowdin/sl.yml
index 300b428d213f..28e79a652a23 100644
--- a/config/locales/crowdin/sl.yml
+++ b/config/locales/crowdin/sl.yml
@@ -1051,10 +1051,10 @@ sl:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "ni začeten datum, čeprav je to pomembno za mejnike."
@@ -1084,15 +1084,17 @@ sl:
does_not_exist: "Izbrana kategorija ne obstaja."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3188,8 +3190,10 @@ sl:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3574,9 +3578,26 @@ sl:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Komentar"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/sr.yml b/config/locales/crowdin/sr.yml
index 903b16594a11..a4136d290e31 100644
--- a/config/locales/crowdin/sr.yml
+++ b/config/locales/crowdin/sr.yml
@@ -1047,10 +1047,10 @@ sr:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "is not on start date, although this is required for milestones."
@@ -1080,15 +1080,17 @@ sr:
does_not_exist: "The specified category does not exist."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3155,8 +3157,10 @@ sr:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3540,9 +3544,26 @@ sr:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Comment"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/sv.yml b/config/locales/crowdin/sv.yml
index 2235b7ad1083..e0f687d32b91 100644
--- a/config/locales/crowdin/sv.yml
+++ b/config/locales/crowdin/sv.yml
@@ -1039,10 +1039,10 @@ sv:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "är inte på startdatum, även om detta behövs för milstolpar."
@@ -1072,15 +1072,17 @@ sv:
does_not_exist: "Den angivna kategorin finns inte."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3115,8 +3117,10 @@ sv:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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: "Work packages / Projects export limit"
@@ -3498,9 +3502,26 @@ sv:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Kommentar"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/th.yml b/config/locales/crowdin/th.yml
index a7a937d21849..4cf3f4ec7fad 100644
--- a/config/locales/crowdin/th.yml
+++ b/config/locales/crowdin/th.yml
@@ -1033,10 +1033,10 @@ th:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "is not on start date, although this is required for milestones."
@@ -1066,15 +1066,17 @@ th:
does_not_exist: "ไม่มีประเภทที่ระบุ"
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3081,8 +3083,10 @@ th:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_properties: "คุณสมบัติของชุดภารกิจ"
setting_work_package_startdate_is_adddate: "ใช้วันปัจจุบันเป็นวันเริ่มต้นสำหรับชุดภารกิจใหม่"
setting_work_packages_projects_export_limit: "Work packages / Projects export limit"
@@ -3464,9 +3468,26 @@ th:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "ความคิดเห็น"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/tr.yml b/config/locales/crowdin/tr.yml
index 2b2027f029ec..688ef6f4531b 100644
--- a/config/locales/crowdin/tr.yml
+++ b/config/locales/crowdin/tr.yml
@@ -1039,10 +1039,10 @@ tr:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "kilometre taşları için gerekli olmasına rağmen başlangıç tarihi değil."
@@ -1072,15 +1072,17 @@ tr:
does_not_exist: "Belirtilen kategori yok."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "İş paketi salt okunur durumdadır, dolayısıyla öznitelikleri değiştirilemez."
type:
attributes:
@@ -3114,8 +3116,10 @@ tr:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3497,9 +3501,26 @@ tr:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Yorum"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/uk.yml b/config/locales/crowdin/uk.yml
index 6cd6c728e0a3..98c60256fded 100644
--- a/config/locales/crowdin/uk.yml
+++ b/config/locales/crowdin/uk.yml
@@ -1048,10 +1048,10 @@ uk:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "не збігається зі значеннями атрибутів «Робота» й «Залишок роботи»"
- cannot_be_set_when_work_is_zero: "не можна встановити, коли атрибут «Робота» дорівнює нулю"
- must_be_set_when_remaining_work_is_set: "Потрібно вказати, якщо визначено атрибут «Залишок роботи»."
- must_be_set_when_work_and_remaining_work_are_set: "Потрібно вказати, якщо визначено атрибути «Робота» й «Залишок роботи»."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "має бути в діапазоні від 0 до 100."
due_date:
not_start_date: "не на дату початку, хоча це потрібно для етапів."
@@ -1081,15 +1081,17 @@ uk:
does_not_exist: "Указана категорія не існує."
estimated_hours:
not_a_number: "– не дійсна тривалість."
- cant_be_inferior_to_remaining_work: "Має дорівнювати значенню «Залишок робіт» або перевищувати його."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Потрібно вказати, якщо визначено атрибути «Залишок роботи» й «% завершення»."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "– не дійсна тривалість."
- cant_exceed_work: "Не може перевищувати значення «Робота»."
- must_be_set_when_work_is_set: "Потрібно вказати, якщо визначено атрибут «Робота»."
- must_be_set_when_work_and_percent_complete_are_set: "Потрібно вказати, якщо визначено атрибути «Робота» й «% завершення»."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "Пакет робіт перебуває в стані лише для читання, тому його атрибути не можна змінити."
type:
attributes:
@@ -3183,8 +3185,10 @@ uk:
setting_work_package_done_ratio: "Обчислення прогресу"
setting_work_package_done_ratio_field: "На основі роботи"
setting_work_package_done_ratio_status: "На основі статусу"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- У режимі на основі роботи значення параметра «% завершення» залежить від частки виконаної роботи відносно загального обсягу робіт. У режимі на основі статусу кожен статус має пов’язане з ним значення параметра «% завершення». У разі змінення статусу змінюється й значення параметра «% завершення».
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_properties: "Властивості робочого пакета"
setting_work_package_startdate_is_adddate: "Використовувати поточну дату в якості дати початку роботи для нових пакетів"
setting_work_packages_projects_export_limit: "Ліміт експорту пакетів робіт / проєктів"
@@ -3568,9 +3572,26 @@ uk:
progress:
label_note: "Примітка."
modal:
- work_based_help_text: "Значення параметра «% завершення» автоматично виводиться зі значень параметрів «Робота» й «Залишок роботи»."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "Значення параметра «% завершення» визначається статусом пакета робіт."
migration_warning_text: "У режимі обчислення прогресу на основі робіт значення параметра «% завершення» не можна встановити вручну й прив’язати до значення параметра «Робота». Наявне значення збережено, але його не можна змінити. Спочатку визначте параметр «Робота»."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Коментування"
comment_description: "Може переглядати й коментувати цей пакет робіт."
diff --git a/config/locales/crowdin/uz.yml b/config/locales/crowdin/uz.yml
index 8251aa0ea660..021f91e952f8 100644
--- a/config/locales/crowdin/uz.yml
+++ b/config/locales/crowdin/uz.yml
@@ -1040,10 +1040,10 @@ uz:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match work and remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when work is zero"
- must_be_set_when_remaining_work_is_set: "Required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "Required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "must be between 0 and 100."
due_date:
not_start_date: "is not on start date, although this is required for milestones."
@@ -1073,15 +1073,17 @@ uz:
does_not_exist: "The specified category does not exist."
estimated_hours:
not_a_number: "is not a valid duration."
- cant_be_inferior_to_remaining_work: "Cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Required when Remaining work and % Complete are set."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "is not a valid duration."
- cant_exceed_work: "Cannot be higher than Work."
- must_be_set_when_work_is_set: "Required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "Required when Work and % Complete are set."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "The work package is in a readonly status so its attributes cannot be changed."
type:
attributes:
@@ -3118,8 +3120,10 @@ uz:
setting_work_package_done_ratio: "Progress calculation"
setting_work_package_done_ratio_field: "Work-based"
setting_work_package_done_ratio_status: "Status-based"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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"
@@ -3502,9 +3506,26 @@ uz:
progress:
label_note: "Note:"
modal:
- work_based_help_text: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Complete is set by work package status."
migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Comment"
comment_description: "Can view and comment this work package."
diff --git a/config/locales/crowdin/vi.yml b/config/locales/crowdin/vi.yml
index d0cc03658ff1..fff5d7331f19 100644
--- a/config/locales/crowdin/vi.yml
+++ b/config/locales/crowdin/vi.yml
@@ -1035,10 +1035,10 @@ vi:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "không khớp với công việc và công việc còn lại"
- cannot_be_set_when_work_is_zero: "không thể thiết lập khi công việc bằng không"
- must_be_set_when_remaining_work_is_set: "Bắt buộc khi thiết lập Công việc còn lại."
- must_be_set_when_work_and_remaining_work_are_set: "Bắt buộc khi thiết lập Công việc và Công việc còn lại."
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "phải nằm trong khoảng từ 0 đến 100."
due_date:
not_start_date: "không phải ngày bắt đầu, mặc dù điều này là cần thiết cho các mốc quan trọng."
@@ -1068,15 +1068,17 @@ vi:
does_not_exist: "Thể loại đã chỉ định không tồn tại."
estimated_hours:
not_a_number: "không phải là thời gian hợp lệ."
- cant_be_inferior_to_remaining_work: "Không thể thấp hơn Công việc còn lại."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "Bắt buộc khi thiết lập Lượng công việc còn lại và % Hoàn thành."
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "không phải là thời gian hợp lệ."
- cant_exceed_work: "Không thể cao hơn Công việc."
- must_be_set_when_work_is_set: "Yêu cầu khi Công việc được đặt."
- must_be_set_when_work_and_percent_complete_are_set: "Bắt buộc khi Công việc và % Hoàn thành được thiết lập."
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "Gói công việc đang ở trạng thái chỉ đọc nên các thuộc tính của nó không thể bị thay đổi."
type:
attributes:
@@ -3083,8 +3085,10 @@ vi:
setting_work_package_done_ratio: "Tính toán tiến độ"
setting_work_package_done_ratio_field: "Dựa trên công việc"
setting_work_package_done_ratio_status: "Dựa trên trạng thái"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- Trong chế độ dựa trên công việc, % Hoàn thành được tính từ mức độ công việc đã thực hiện so với tổng công việc. Trong chế độ dựa trên trạng thái, mỗi trạng thái có một giá trị % Hoàn thành liên kết. Thay đổi trạng thái sẽ thay đổi % Hoàn thành.
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
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: "Giới hạn xuất gói công việc / Dự án"
@@ -3465,9 +3469,26 @@ vi:
progress:
label_note: "Ghi chú:"
modal:
- work_based_help_text: "% Hoàn thành được tự động lấy từ Công việc và Công việc còn lại."
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "% Hoàn thành được thiết lập theo trạng thái của gói công việc."
migration_warning_text: "Trong chế độ tính toán tiến độ dựa trên công việc, % Hoàn thành không thể được đặt thủ công và liên kết với Công việc. Giá trị hiện tại đã được giữ nhưng không thể chỉnh sửa. Vui lòng nhập Công việc trước."
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "Nhận xét"
comment_description: "Có thể xem và nhận xét gói công việc này."
diff --git a/config/locales/crowdin/zh-CN.yml b/config/locales/crowdin/zh-CN.yml
index f62d76588b15..fb90dccf70c5 100644
--- a/config/locales/crowdin/zh-CN.yml
+++ b/config/locales/crowdin/zh-CN.yml
@@ -1029,10 +1029,10 @@ zh-CN:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "工作与剩余工作不匹配"
- cannot_be_set_when_work_is_zero: "工作 为 零 时无法设置"
- must_be_set_when_remaining_work_is_set: "设置 剩余工作 时必须"
- must_be_set_when_work_and_remaining_work_are_set: "当设置了工作和剩余工作时必填。"
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "必须介于 0 和 100 之间。"
due_date:
not_start_date: "不是在开始日期开始,尽管这是必需的里程碑。"
@@ -1062,15 +1062,17 @@ zh-CN:
does_not_exist: "指定的类别不存在。"
estimated_hours:
not_a_number: "不是有效的持续时间。"
- cant_be_inferior_to_remaining_work: "不能低于剩余工时。"
- must_be_set_when_remaining_work_and_percent_complete_are_set: "设置 剩余工作 和 已完成% 时必填。"
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "不是有效的持续时间。"
- cant_exceed_work: "不能高于工时。"
- must_be_set_when_work_is_set: "当设置工时需要。"
- must_be_set_when_work_and_percent_complete_are_set: "设置 工作 和 已完成% 时必填。"
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "工作包处于只读状态,因此无法更改其属性。"
type:
attributes:
@@ -1621,9 +1623,9 @@ zh-CN:
xls:
label: "XLS"
columns:
- input_label_report: "Add columns to attribute table"
- input_caption_report: "By default all attributes added as columns in the work package list are selected. Long text fields are not available in the attribute table, but can be displayed below it."
- input_caption_table: "默认情况下,所有作为列添加到工作包列表中的属性都会被选中。长文本字段在基于表格的导出中不可用。"
+ input_label_report: "添加列到属性表"
+ input_caption_report: "默认情况下,所有添加到当前工作包列表中的列都会被选中。长文本字段在属性表中不可用,但可以显示在其下方。"
+ input_caption_table: "默认情况下,所有添加到当前工作包列表中的列都会被选中。长文本字段在基于表格的导出中不可用。"
pdf:
export_type:
label: "PDF 导出类型"
@@ -3071,8 +3073,10 @@ zh-CN:
setting_work_package_done_ratio: "进度计算"
setting_work_package_done_ratio_field: "基于工时"
setting_work_package_done_ratio_status: "基于状态"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- 在基于工时模式下,完成百分比是根据已完成的工时占总工时的比例计算出来的。在基于状态模式下,每个状态都有一个与之相关的完成百分比。更改状态将改变完成百分比。
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_properties: "工作包属性"
setting_work_package_startdate_is_adddate: "使用当前日期作为新工作包的开始日期"
setting_work_packages_projects_export_limit: "工作包/项目导出限制"
@@ -3453,9 +3457,26 @@ zh-CN:
progress:
label_note: "注意:"
modal:
- work_based_help_text: "完成百分比由 \"工时\" 和 \"剩余工时\" 自动得出。"
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "完成百分比由工作包状态设定。"
migration_warning_text: "在基于工时的进度计算模式下,完成百分比不能手动设置,而是与工时绑定。现有值已被保留,但无法编辑。请先输入工时。"
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "评论"
comment_description: "可以查看和评论该工作包。"
diff --git a/config/locales/crowdin/zh-TW.yml b/config/locales/crowdin/zh-TW.yml
index e125f54884c2..2d3174e08898 100644
--- a/config/locales/crowdin/zh-TW.yml
+++ b/config/locales/crowdin/zh-TW.yml
@@ -264,8 +264,8 @@ zh-TW:
no_results_title_text: 目前沒有專案
no_results_content_text: 建立新專案
search:
- label: Project name filter
- placeholder: Search by project name
+ label: 查詢專案名稱
+ placeholder: 依專案名稱搜尋
lists:
active: "啟用中的專案"
my: "我的專案"
@@ -1031,10 +1031,10 @@ zh-TW:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "工作與剩餘工作不匹配"
- cannot_be_set_when_work_is_zero: "工作為零時無法設置"
- must_be_set_when_remaining_work_is_set: "設置剩餘工作時需要"
- must_be_set_when_work_and_remaining_work_are_set: "當設置了工作和剩餘工作時需要。"
+ does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
+ cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
+ must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
+ must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
inclusion: "必須介於 0 和 100 之間。"
due_date:
not_start_date: "儘管日期是里程碑所必需的,但不是開始日期。"
@@ -1064,15 +1064,17 @@ zh-TW:
does_not_exist: "指定的類別不存在"
estimated_hours:
not_a_number: "不是有效的持續時間。"
- cant_be_inferior_to_remaining_work: "不能低於剩餘工時。"
- must_be_set_when_remaining_work_and_percent_complete_are_set: "設置 剩餘工作 和 已完成% 時必填。"
- format: "%{message}"
+ cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "不是有效的持續時間。"
- cant_exceed_work: "不能高於工時。"
- must_be_set_when_work_is_set: "當設置工時需要。"
- must_be_set_when_work_and_percent_complete_are_set: "設置 工作 和 已完成% 時必填。"
- format: "%{message}"
+ cant_exceed_work: "cannot be higher than Work."
+ must_be_set_when_work_is_set: "required when Work is set."
+ must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
+ must be 0h when Work is set and % Complete is 100%.
+ must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
+ must be empty when Work is empty and % Complete is 100%.
readonly_status: "工作項目處於唯讀狀態,因此無法變更其屬性。"
type:
attributes:
@@ -1611,10 +1613,10 @@ zh-TW:
subproject: "子專案: %{name}"
export:
dialog:
- title: "Export"
- submit: "Export"
+ title: "匯出"
+ submit: "匯出"
format:
- label: "File format"
+ label: "檔案格式"
options:
csv:
label: "CSV"
@@ -1623,58 +1625,58 @@ zh-TW:
xls:
label: "XLS"
columns:
- input_label_report: "Add columns to attribute table"
- input_caption_report: "By default all attributes added as columns in the work package list are selected. Long text fields are not available in the attribute table, but can be displayed below it."
- input_caption_table: "By default all attributes added as columns in the work package list are selected. Long text fields are not available in table based exports."
+ input_label_report: "將欄位新增至屬性表"
+ input_caption_report: "預設情況下,所有在工作項目清單中新增為欄位的屬性都會被選取。長文字欄位在屬性表中不可用,但可以顯示在屬性表下方。"
+ input_caption_table: "預設情況下,所有在工作項目清單中新增為欄位的屬性都會被選取。長文字欄位在以表格匯出中不可用。"
pdf:
export_type:
- label: "PDF export type"
+ label: "PDF 匯出類型"
options:
table:
- label: "Table"
- caption: "Export the work packages list in a table with the desired columns."
+ label: "表格"
+ caption: "匯出所需欄位表格含有工作項目清單"
report:
- label: "Report"
- caption: "Export the work package on a detailed report of all work packages in the list."
+ label: "報表"
+ caption: "在清單中所有工作項目的詳細報告上匯出工作項目。"
gantt:
- label: "Gantt chart"
- caption: "Export the work packages list in a Gantt diagram view."
+ label: "甘特圖"
+ caption: "匯出甘特圖檢視中的工作項目清單。"
include_images:
- label: "Include images"
- caption: "Exclude images to reduce the size of the PDF export."
+ label: "包含圖片"
+ caption: "排除影像以減少 PDF 匯出的大小。"
gantt_zoom_levels:
- label: "Zoom levels"
- caption: "Select what is the zoom level for dates displayed in the chart."
+ label: "縮放等級"
+ caption: "選擇圖表中顯示日期的縮放程度。"
options:
- days: "Days"
- weeks: "Weeks"
- months: "Months"
- quarters: "Quarters"
+ days: "天"
+ weeks: "週"
+ months: "月"
+ quarters: "季度"
column_width:
- label: "Table column width"
+ label: "表格列寬"
options:
- narrow: "Narrow"
- medium: "Medium"
- wide: "Wide"
- very_wide: "Very wide"
+ narrow: "窄"
+ medium: "中"
+ wide: "寬"
+ very_wide: "非常寬"
paper_size:
- label: "Paper size"
- caption: "Depending on the chart size more than one page might be exported."
+ label: "紙張大小"
+ caption: "視圖表大小而定,可能會輸出超過一頁。"
long_text_fields:
- input_caption: "By default all long text fields are selected."
- input_label: "Add long text fields"
- input_placeholder: "Search for long text fields"
- drag_area_label: "Manage long text fields"
+ input_caption: "預設選取所有長文字欄位。"
+ input_label: "新增長文字欄位"
+ input_placeholder: "搜尋長文字欄位"
+ drag_area_label: "新增長文字欄位"
xls:
include_relations:
- label: "Include relations"
- caption: "This option will create a duplicate of each work package for every relation this has with another work package."
+ label: "包含相關連的"
+ caption: "此選項會針對每個工作項目與其他工作項目的關係,建立一個複本。"
include_descriptions:
- label: "Include descriptions"
- caption: "This option will add a description column in raw format."
- your_work_packages_export: "Work packages are being exported"
- succeeded: "Export completed"
- failed: "An error has occurred while trying to export the work packages: %{message}"
+ label: "包含說明"
+ caption: "此選項會在原始格式新增說明欄位。"
+ your_work_packages_export: "工作項目已匯出"
+ succeeded: "匯出完成"
+ failed: "嘗試匯出工作項目時發生錯誤: %{message}"
format:
atom: "Atom"
csv: "CSV"
@@ -3076,8 +3078,10 @@ zh-TW:
setting_work_package_done_ratio: "進度計算"
setting_work_package_done_ratio_field: "基於工時"
setting_work_package_done_ratio_status: "基於狀態"
+ setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
+ In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_done_ratio_explanation_html: >
- 在基於工時模式中,"完成百分比"是根據已完成的工作量與總工作量來計算的。在 基於狀態 模式中,每個狀態都有一個與其關聯的完成百分比值。更改狀態將更改完成百分比。
+ In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
setting_work_package_properties: "工作項目屬性"
setting_work_package_startdate_is_adddate: "使用目前日期作為新工作項目的開始日期"
setting_work_packages_projects_export_limit: "工作項目/專案匯出數量限制"
@@ -3459,9 +3463,26 @@ zh-TW:
progress:
label_note: "備註"
modal:
- work_based_help_text: "完成百分比由 \"工時\" 和 \"剩餘工時\" 自動得出。"
+ work_based_help_text: "Each field is automatically calculated from the two others when possible."
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
status_based_help_text: "完成百分比由工作包狀態設定。"
migration_warning_text: "在「基於工時」進度計算模式下,完成百分比無法手動設置,並且與「工時」相關聯。目前手動輸入數值已保留,無法編輯。 請務必輸入「工時」才能進行。"
+ derivation_hints:
+ done_ratio:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ cleared_because_work_is_0h: "Cleared because Work is 0h."
+ derived: "Derived from Work and Remaining work."
+ estimated_hours:
+ cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
+ derived: "Derived from Remaining work and % Complete."
+ same_as_remaining_work: "Set to same value as Remaining work."
+ remaining_hours:
+ cleared_because_work_is_empty: "Cleared because Work is empty."
+ cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
+ decreased_like_work: "Decreased by the same amount as Work."
+ derived: "Derived from Work and % Complete."
+ increased_like_work: "Increased by the same amount as Work."
+ same_as_work: "Set to same value as Work."
permissions:
comment: "留言"
comment_description: "可查看此工作項目與留言"
diff --git a/modules/job_status/config/locales/crowdin/zh-TW.yml b/modules/job_status/config/locales/crowdin/zh-TW.yml
index 2e10e058e678..17645a9787ac 100644
--- a/modules/job_status/config/locales/crowdin/zh-TW.yml
+++ b/modules/job_status/config/locales/crowdin/zh-TW.yml
@@ -4,18 +4,18 @@ zh-TW:
name: "OpenProject 工作狀態"
description: "背景工作列表及狀態"
job_status_dialog:
- download_starts: 'The download should start automatically.'
- link_to_download: 'Or, %{link} to download.'
- click_here: 'click here'
- title: 'Background job status'
- redirect: 'You are being redirected.'
- redirect_link: 'Please click here to continue.'
- redirect_errors: 'Due to these errors, you will not be redirected automatically.'
- errors: 'Something went wrong'
+ download_starts: '將自動開始下載'
+ link_to_download: '或 %{link} 下載。'
+ click_here: '點選此處'
+ title: '背景工作狀態'
+ redirect: '正在重新導向。'
+ redirect_link: '請點擊此處繼續。'
+ redirect_errors: '由於這些錯誤,您將不會被自動重新導向。'
+ errors: '出了點問題'
generic_messages:
- not_found: 'This job could not be found.'
- in_queue: 'The job has been queued and will be processed shortly.'
- in_process: 'The job is currently being processed.'
- error: 'The job has failed to complete.'
- cancelled: 'The job has been cancelled due to an error.'
- success: 'The job completed successfully.'
+ not_found: '無法找到此工作。'
+ in_queue: '該工作已加入排程,並將很快處理。'
+ in_process: '該工作正在處理中。'
+ error: '該工作未能完成。'
+ cancelled: '此工作由於發生錯誤而被取消。'
+ success: '此工作成功完成。'
diff --git a/modules/meeting/config/locales/crowdin/cs.yml b/modules/meeting/config/locales/crowdin/cs.yml
index 95429225e033..4c5affff2da4 100644
--- a/modules/meeting/config/locales/crowdin/cs.yml
+++ b/modules/meeting/config/locales/crowdin/cs.yml
@@ -182,7 +182,7 @@ cs:
label_meeting_delete: "Smazat schůzku"
label_meeting_created_by: "Vytvořil"
label_meeting_last_updated: "Naposledy aktualizováno"
- label_meeting_reload: "Reload"
+ label_meeting_reload: "Obnovit"
label_agenda_items: "Bod programu"
label_agenda_items_reordered: "přeřazeno"
label_agenda_item_remove: "Odebrat z programu"
diff --git a/modules/meeting/config/locales/crowdin/zh-CN.yml b/modules/meeting/config/locales/crowdin/zh-CN.yml
index 6509ca97e682..992a0caedcdf 100644
--- a/modules/meeting/config/locales/crowdin/zh-CN.yml
+++ b/modules/meeting/config/locales/crowdin/zh-CN.yml
@@ -122,7 +122,7 @@ zh-CN:
email:
send_emails: "发送电子邮件"
send_invitation_emails: >
- Send an email invitation immediately to the participants selected above. You can also do this manually at any time later.
+ 立即向上面选定的参加者发送电子邮件邀请。您也可以在之后随时手动发送。
open_meeting_link: "打开会议"
invited:
summary: "%{actor} 已经向您发送了一个 %{title} 会议邀请"
diff --git a/modules/meeting/config/locales/crowdin/zh-TW.yml b/modules/meeting/config/locales/crowdin/zh-TW.yml
index ebe951801a41..b2d17c875bb5 100644
--- a/modules/meeting/config/locales/crowdin/zh-TW.yml
+++ b/modules/meeting/config/locales/crowdin/zh-TW.yml
@@ -122,7 +122,7 @@ zh-TW:
email:
send_emails: "發送電子郵件"
send_invitation_emails: >
- Send an email invitation immediately to the participants selected above. You can also do this manually at any time later.
+ 立即發送電子郵件邀請函給上述選定的與會者。您也可以稍後隨時手動執行。
open_meeting_link: "打開會議連結"
invited:
summary: "%{actor} 已經向您發送了一個 %{title} 會議邀請"
@@ -147,7 +147,7 @@ zh-TW:
empty_text: "將項目拖曳至此處或建立新項目"
notice_successful_notification: "通知傳送成功"
notice_timezone_missing: 沒有設定時區,預設時區為 %{zone} 。請按這裡選擇您的時區。
- notice_meeting_updated: "This page has been updated by someone else. Reload to view changes."
+ notice_meeting_updated: "本頁已由他人更新。重新載入以查看變更。"
permission_create_meetings: "建立會議"
permission_edit_meetings: "編輯會議"
permission_delete_meetings: "刪除會議"
@@ -179,7 +179,7 @@ zh-TW:
label_meeting_delete: "刪除會議"
label_meeting_created_by: "建立者"
label_meeting_last_updated: "最後更新於"
- label_meeting_reload: "Reload"
+ label_meeting_reload: "重新載入"
label_agenda_items: "議程"
label_agenda_items_reordered: "重新排列"
label_agenda_item_remove: "從議程中刪除"
diff --git a/modules/storages/config/locales/crowdin/cs.yml b/modules/storages/config/locales/crowdin/cs.yml
index 2a2d50be7278..be575edbb947 100644
--- a/modules/storages/config/locales/crowdin/cs.yml
+++ b/modules/storages/config/locales/crowdin/cs.yml
@@ -62,7 +62,7 @@ cs:
edit_project_folder:
label: Edit project folder
project_folder_mode:
- automatic: Automatically managed
+ automatic: Automaticky spravované
inactive: Žádná specifická složka
manual: Existing folder manually managed
remove_project:
diff --git a/modules/storages/config/locales/crowdin/zh-TW.yml b/modules/storages/config/locales/crowdin/zh-TW.yml
index 2f5c56c17ad5..50033cdfa363 100644
--- a/modules/storages/config/locales/crowdin/zh-TW.yml
+++ b/modules/storages/config/locales/crowdin/zh-TW.yml
@@ -31,7 +31,7 @@ zh-TW:
attributes:
host:
authorization_header_missing: 未完全設置。Nextcloud 實例不會收到「Authorization」標頭,這是基於 Bearer 權杖(Token)API 請求授權所必需的。請仔細檢查您的 HTTP 服務器配置。
- cannot_be_connected_to: could not be reached. Please ensure the host is reachable and the OpenProject integration app is installed.
+ cannot_be_connected_to: 無法連線。請確認主機可以連線,且已安裝 OpenProject 整合應用程式。
minimal_nextcloud_version_unmet: 未滿足最低版本要求(必須為 Nextcloud 23 或更高版本)
not_nextcloud_server: 不是一個 Nextcloud 的服務器
op_application_not_installed: 似乎沒有安裝應用「OpenProject 整合套件」。請先安裝,然後重試。
diff --git a/modules/two_factor_authentication/config/locales/crowdin/cs.yml b/modules/two_factor_authentication/config/locales/crowdin/cs.yml
index a2edd8086d3f..288df8ef3ead 100644
--- a/modules/two_factor_authentication/config/locales/crowdin/cs.yml
+++ b/modules/two_factor_authentication/config/locales/crowdin/cs.yml
@@ -136,7 +136,7 @@ cs:
description: |
Use a one-time code generated by an authenticator like Authy or Google Authenticator.
sms:
- title: "Mobile device"
+ title: "Mobilní zařízení"
redacted_identifier: "Mobilní zařízení (%{redacted_number})"
request_2fa_identifier: "%{redacted_identifier}, zaslali jsme Vám ověřovací kód přes %{delivery_channel}"
description: |
From 279efd8cb89fafd6a0381e023a2354215fef842e Mon Sep 17 00:00:00 2001
From: OpenProject Actions CI
Date: Thu, 29 Aug 2024 03:13:08 +0000
Subject: [PATCH 018/147] update locales from crowdin [ci skip]
---
config/locales/crowdin/cs.yml | 24 +++++++++----------
.../storages/config/locales/crowdin/cs.yml | 2 +-
2 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/config/locales/crowdin/cs.yml b/config/locales/crowdin/cs.yml
index a11b5df05c9a..a35fb4c24371 100644
--- a/config/locales/crowdin/cs.yml
+++ b/config/locales/crowdin/cs.yml
@@ -268,7 +268,7 @@ cs:
favored: "Oblíbené projekty"
archived: "Archivované projekty"
shared: "Sdílené seznamy projektů"
- my_lists: "My project lists"
+ my_lists: "Moje seznamy projektů"
new:
placeholder: "Nový seznam projektů"
delete_modal:
@@ -491,7 +491,7 @@ cs:
is_readonly: "Pouze pro čtení"
excluded_from_totals: "Vyloučeno z celkových hodnot"
themes:
- dark: "Dark (Beta)"
+ dark: "Tmavý (Beta)"
light: "Světlý"
light_high_contrast: "Světlý kontrast"
types:
@@ -723,7 +723,7 @@ cs:
is_closed: "Pracovní balíček uzavřen"
is_readonly: "Pracovní balíček jen pro čtení"
excluded_from_totals: "Exclude from calculation of totals in hierarchy"
- default_done_ratio: "% Complete"
+ default_done_ratio: "% Dokončeno"
time_entry:
activity: "Aktivita"
hours: "Hodiny"
@@ -1931,7 +1931,7 @@ cs:
label_ldap_auth_source_plural: "Připojení LDAP"
label_attribute_expand_text: "Úplný text pro '%{attribute}'"
label_authentication: "Ověření"
- label_authentication_settings: "Authentication settings"
+ label_authentication_settings: "Nastavení ověření"
label_available_global_roles: "Dostupné globální role"
label_available_project_attributes: "Dostupné atributy projektu"
label_available_project_forums: "Dostupná fóra"
@@ -2129,7 +2129,7 @@ cs:
label_introduction_video: "Seznamovací video"
label_invite_user: "Pozvat uživatele"
label_share: "Sdílet"
- label_share_project_list: "Share project list"
+ label_share_project_list: "Sdílet seznam projektů"
label_share_work_package: "Sdílet pracovní balíček"
label_show_hide: "Zobrazit/skrýt"
label_show_hide_n_items: "Show/hide %{count} items"
@@ -2351,7 +2351,7 @@ cs:
label_role_search: "Přiřadit roli novým členům"
label_scm: "SCM"
label_search: "Vyhledávání"
- label_search_by_name: "Search by name"
+ label_search_by_name: "Hledat podle názvu"
label_send_information: "Poslat nové přihlašovací údaje uživateli"
label_send_test_email: "Odeslat testovací email"
label_session: "Relace"
@@ -2464,7 +2464,7 @@ cs:
label_work_package_new: "Nový pracovní balíček"
label_work_package_edit: "Upravit pracovní balíček %{name}"
label_work_package_plural: "Pracovní balíčky"
- label_work_packages_settings: "Work packages settings"
+ label_work_packages_settings: "Nastavení pracovních balíčků"
label_work_package_status: "Stav pracovního balíčku"
label_work_package_status_new: "Nový stav"
label_work_package_status_plural: "Stav pracovního balíčku"
@@ -2810,7 +2810,7 @@ cs:
permission_edit_own_messages: "Upravit vlastní zprávy"
permission_edit_own_time_entries: "Upravit vlastní časové záznamy"
permission_edit_project: "Upravit projekt"
- permission_edit_project_attributes: "Edit project attributes"
+ permission_edit_project_attributes: "Úprava atributů projektu"
permission_edit_reportings: "Upravit přehledy"
permission_edit_time_entries: "Upravit časové záznamy pro ostatní uživatele"
permission_edit_timelines: "Úpravy časové osy"
@@ -2861,7 +2861,7 @@ cs:
permission_work_package_assigned: "Staňte se řešitelem/odpovědným"
permission_work_package_assigned_explanation: "Pracovní balíčky mohou být přiřazeny uživatelům a skupinám, které tuto roli vlastní v příslušném projektu"
permission_view_project_activity: "Zobrazit aktivitu projektu"
- permission_view_project_attributes: "View project attributes"
+ permission_view_project_attributes: "Zobrazit atributy projektu"
permission_save_bcf_queries: "Uložit dotazy BCF"
permission_manage_public_bcf_queries: "Spravovat veřejné dotazy BCF."
permission_edit_attribute_help_texts: "Upravit text nápovědy atributu"
@@ -3088,9 +3088,9 @@ cs:
setting_default_projects_public: "Nové projekty nastavovat jako veřejné"
setting_diff_max_lines_displayed: "Maximální počet zobrazených řádků rozdílu"
setting_display_subprojects_work_packages: "Automaticky zobrazit úkoly podprojektu v hlavním projektu"
- setting_duration_format: "Duration format"
- setting_duration_format_hours_only: "Hours only"
- setting_duration_format_days_and_hours: "Days and hours"
+ setting_duration_format: "Formát doby trvání"
+ setting_duration_format_hours_only: "Pouze hodiny"
+ setting_duration_format_days_and_hours: "Dny a hodiny"
setting_duration_format_instructions: "This defines how Work, Remaining work, and Time spent durations are displayed."
setting_emails_footer: "Zápatí emailů"
setting_emails_header: "Záhlaví emailů"
diff --git a/modules/storages/config/locales/crowdin/cs.yml b/modules/storages/config/locales/crowdin/cs.yml
index f1160c625275..af08dfa45f47 100644
--- a/modules/storages/config/locales/crowdin/cs.yml
+++ b/modules/storages/config/locales/crowdin/cs.yml
@@ -58,7 +58,7 @@ cs:
project_module_storages: Soubory
project_storages:
project_folder_mode:
- automatic: Automatically managed
+ automatic: Automaticky spravované
inactive: Žádná specifická složka
manual: Existing folder manually managed
remove_project:
From fa174f93d39d8c5a34dd92ed12087d9422dbe1b6 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 29 Aug 2024 05:24:13 +0000
Subject: [PATCH 019/147] build(deps-dev): bump selenium-webdriver from 4.23.0
to 4.24.0
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.23.0 to 4.24.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
- [Commits](https://github.com/SeleniumHQ/selenium/compare/selenium-4.23.0...selenium-4.24.0)
---
updated-dependencies:
- dependency-name: selenium-webdriver
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
---
Gemfile.lock | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Gemfile.lock b/Gemfile.lock
index dd24b489df94..e1a6169c7465 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1056,7 +1056,7 @@ GEM
secure_headers (6.5.0)
selenium-devtools (0.127.0)
selenium-webdriver (~> 4.2)
- selenium-webdriver (4.23.0)
+ selenium-webdriver (4.24.0)
base64 (~> 0.2)
logger (~> 1.4)
rexml (~> 3.2, >= 3.2.5)
From 2cf9722020a320f9980ad3f1c88e9528fbedabaa Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 29 Aug 2024 05:24:42 +0000
Subject: [PATCH 020/147] build(deps-dev): bump selenium-devtools from 0.127.0
to 0.128.0
Bumps [selenium-devtools](https://github.com/SeleniumHQ/selenium) from 0.127.0 to 0.128.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
- [Commits](https://github.com/SeleniumHQ/selenium/commits)
---
updated-dependencies:
- dependency-name: selenium-devtools
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
---
Gemfile.lock | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Gemfile.lock b/Gemfile.lock
index dd24b489df94..f45e95ae70bd 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1054,7 +1054,7 @@ GEM
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
secure_headers (6.5.0)
- selenium-devtools (0.127.0)
+ selenium-devtools (0.128.0)
selenium-webdriver (~> 4.2)
selenium-webdriver (4.23.0)
base64 (~> 0.2)
From e208eb35689efbf25dd3739de992e644dcb50b3a Mon Sep 17 00:00:00 2001
From: Christophe Bliard
Date: Thu, 29 Aug 2024 10:12:42 +0200
Subject: [PATCH 021/147] Bumped version to 14.6.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 04fc0bfcb96e..843934d97407 100644
--- a/lib/open_project/version.rb
+++ b/lib/open_project/version.rb
@@ -32,7 +32,7 @@
module OpenProject
module VERSION # :nodoc:
MAJOR = 14
- MINOR = 5
+ MINOR = 6
PATCH = 0
class << self
From c6c2fb08886261e1531a654ad79d650c00f2d8d2 Mon Sep 17 00:00:00 2001
From: as-op
Date: Thu, 29 Aug 2024 11:34:01 +0200
Subject: [PATCH 022/147] remove manual redirect pages (will be handled by site
builder); sort dev setup docs; remove repeated content
---
docs/README.md | 2 +-
docs/development/README.md | 5 +--
docs/development/concepts/README.md | 22 ++++++------
.../application-architecture/README.md | 8 -----
.../create-openproject-plugin/README.md | 2 +-
.../development-environment/README.md | 34 +++++++++++++++++++
.../docker-macos}/README.md | 3 +-
.../docker}/README.md | 3 +-
.../linux}/README.md | 24 +------------
.../macos}/README.md | 24 +------------
docs/development/environments/README.md | 10 ------
docs/development/localhost-ssl/README.md | 9 +----
.../product-development-handbook/README.md | 2 +-
docs/development/releases/README.md | 3 --
docs/development/running-tests/README.md | 6 ++--
.../installation/manual/README.md | 5 ---
16 files changed, 59 insertions(+), 103 deletions(-)
delete mode 100644 docs/development/concepts/application-architecture/README.md
create mode 100644 docs/development/development-environment/README.md
rename docs/development/{development-environment-docker-macos => development-environment/docker-macos}/README.md (96%)
rename docs/development/{development-environment-docker => development-environment/docker}/README.md (99%)
rename docs/development/{development-environment-ubuntu => development-environment/linux}/README.md (90%)
rename docs/development/{development-environment-osx => development-environment/macos}/README.md (90%)
delete mode 100644 docs/development/environments/README.md
delete mode 100644 docs/development/releases/README.md
diff --git a/docs/README.md b/docs/README.md
index 84d3456a947b..e7dff7774c12 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -39,7 +39,7 @@ Please see our [Use Cases section](./use-cases/) for detailed how-to guides and
## Development
-* [Full development environment for developers on Ubuntu](./development/development-environment-ubuntu) and [Mac OS X](./development/development-environment-osx)
+* [Full development environment for developers](./development/development-environment)
* [Developing plugins](./development/create-openproject-plugin)
* [Developing OmniAuth Plugins](./development/create-omniauth-plugin)
* [Running tests](./development/running-tests)
diff --git a/docs/development/README.md b/docs/development/README.md
index aee88f742be9..5b091adb4e83 100644
--- a/docs/development/README.md
+++ b/docs/development/README.md
@@ -96,10 +96,7 @@ If you want to contribute to OpenProject, please make sure to accept our Contrib
## Additional resources
-* [Development environment for Ubuntu 18.04](development-environment-ubuntu)
-* [Development environment for Mac OS X](development-environment-osx)
-* [Development environment using docker](development-environment-docker)
-
+* [Development environment](development-environment)
* [Developing Plugins](create-openproject-plugin)
* [Running Tests](running-tests)
* [API Documentation](../api)
diff --git a/docs/development/concepts/README.md b/docs/development/concepts/README.md
index e41d5fc66eda..784312f9d056 100644
--- a/docs/development/concepts/README.md
+++ b/docs/development/concepts/README.md
@@ -12,14 +12,14 @@ This guide will introduce some concepts and give you a big picture of the develo
Please choose an area that you would like to read about:
-| Topic | Content |
-|------------------------------------------------------|:------------------------------------------------------------------------------|
-| [Application architecture](application-architecture) | An introduction of the application architecture used at OpenProject. |
-| [State management](state-management) | How does the frontend handle state and react to changes? |
-| [HAL resources](hal-resources) | What are HAL resources and how are they used in the frontend? |
-| [Permissions](permissions) | How are roles and permissions handled in OpenProject code? |
-| [Translations](translations) | How are translations used and built? |
-| [Resource schemas](resource-schemas) | What is a schema and how is it tied to an editable resource? |
-| [Resource changesets](resource-changesets) | How is change tracked to resources in the frontend? How to save the changes. |
-| [Inline editing](inline-editing) | How does inline editing and the edit field functionality work in OpenProject? |
-| [Queries and QuerySpace](queries) | What is the Query API concept and how is it used in the frontend? |
+| Topic | Content |
+|---------------------------------------------------------|:------------------------------------------------------------------------------|
+| [Application architecture](../application-architecture) | An introduction of the application architecture used at OpenProject. |
+| [State management](state-management) | How does the frontend handle state and react to changes? |
+| [HAL resources](hal-resources) | What are HAL resources and how are they used in the frontend? |
+| [Permissions](permissions) | How are roles and permissions handled in OpenProject code? |
+| [Translations](translations) | How are translations used and built? |
+| [Resource schemas](resource-schemas) | What is a schema and how is it tied to an editable resource? |
+| [Resource changesets](resource-changesets) | How is change tracked to resources in the frontend? How to save the changes. |
+| [Inline editing](inline-editing) | How does inline editing and the edit field functionality work in OpenProject? |
+| [Queries and QuerySpace](queries) | What is the Query API concept and how is it used in the frontend? |
diff --git a/docs/development/concepts/application-architecture/README.md b/docs/development/concepts/application-architecture/README.md
deleted file mode 100644
index 0e48122469fa..000000000000
--- a/docs/development/concepts/application-architecture/README.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-sidebar_navigation:
- title: Application architecture
----
-
-# Application architecture
-
-This guide has been integrated into the [application architecture documentation](../../application-architecture/).
diff --git a/docs/development/create-openproject-plugin/README.md b/docs/development/create-openproject-plugin/README.md
index 4300f774b669..6f43cb25a369 100644
--- a/docs/development/create-openproject-plugin/README.md
+++ b/docs/development/create-openproject-plugin/README.md
@@ -136,7 +136,7 @@ It is probably best to use READMEs of already released plugins as a template.
Activity, Issue Tracking, Time Tracking, Forums, and Backlogs are default.
Also, the My Project Page should only show Project Description and Tickets blocks.
3. Create a news article about the newly released plugin and its features.
-4. Twitter with a link to the news article.
+4. Share a link to the news article on social media.
5. If the plugin is referenced in our feature tour, add a download link to the plugin in the feature tour
## Frontend plugins [WIP]
diff --git a/docs/development/development-environment/README.md b/docs/development/development-environment/README.md
new file mode 100644
index 000000000000..58ecee41d708
--- /dev/null
+++ b/docs/development/development-environment/README.md
@@ -0,0 +1,34 @@
+---
+sidebar_navigation:
+ title: Development setup
+description: OpenProject development setup
+keywords: development setup
+---
+
+# OpenProject development setup
+
+| OS/Method | Description |
+|------------------------------------|-----------------------------------------------------------------------------------|
+| [Ubuntu / Debian](linux) | Develop setup on Linux |
+| [via docker](docker) | The quickest way to get started developing OpenProject is to use the docker setup |
+| [via docker (MacOS)](docker-macos) | MacOS specific docker topics |
+| [MacOS](macos) | Develop setup on MacOS |
+
+
+### Start Coding
+
+Please have a look at [our development guidelines](../code-review-guidelines/) for tips and guides on how to start
+coding. We have advice on how to get your changes back into the OpenProject core as smooth as possible.
+Also, take a look at the `doc` directory in our sources, especially
+the [how to run tests](../running-tests) documentation (we like to have automated tests for every new developed feature).
+
+### Troubleshooting
+
+The OpenProject logfile can be found in `log/development.log`.
+
+If an error occurs, it should be logged there (as well as in the output to STDOUT/STDERR of the rails server process).
+
+### Questions, Comments, and Feedback
+
+If you have any further questions, comments, feedback, or an idea to enhance this guide, please tell us at the
+appropriate [forum](https://community.openproject.org/projects/openproject/boards/9).
diff --git a/docs/development/development-environment-docker-macos/README.md b/docs/development/development-environment/docker-macos/README.md
similarity index 96%
rename from docs/development/development-environment-docker-macos/README.md
rename to docs/development/development-environment/docker-macos/README.md
index 4457931890fc..7ff3c7c3bb1f 100644
--- a/docs/development/development-environment-docker-macos/README.md
+++ b/docs/development/development-environment/docker-macos/README.md
@@ -1,13 +1,14 @@
---
sidebar_navigation:
title: Development setup via docker on MacOS
+ short_title: Setup via Docker on MacOS
description: OpenProject development setup via docker on MacOS
keywords: development setup docker macos
---
# OpenProject development setup via docker (MacOS)
-This guide covers observed nuances with the docker runtime on MacOS. Please ensure you've gone through the general [OpenProject development setup via docker](../development-environment-docker) guide before proceeding.
+This guide covers observed nuances with the docker runtime on MacOS. Please ensure you've gone through the general [OpenProject development setup via docker](../docker) guide before proceeding.
## Docker on MacOS File System Performance
diff --git a/docs/development/development-environment-docker/README.md b/docs/development/development-environment/docker/README.md
similarity index 99%
rename from docs/development/development-environment-docker/README.md
rename to docs/development/development-environment/docker/README.md
index d74283ec7735..a0131770acfc 100644
--- a/docs/development/development-environment-docker/README.md
+++ b/docs/development/development-environment/docker/README.md
@@ -1,6 +1,7 @@
---
sidebar_navigation:
title: Development setup via docker
+ short_title: Setup via Docker
description: OpenProject development setup via docker
keywords: development setup docker
---
@@ -464,7 +465,7 @@ Once the keycloak service is started and running, you can access the keycloak in
and login with initial username and password as `admin`.
Keycloak being an OpenID connect provider, we need to setup an OIDC integration for OpenProject.
-[Setup OIDC (keycloak) integration for OpenProject](../../installation-and-operations/misc/custom-openid-connect-providers/#keycloak)
+[Setup OIDC (keycloak) integration for OpenProject](../../../installation-and-operations/misc/custom-openid-connect-providers/#keycloak)
Once the above setup is completed, In the root `docker-compose.override.yml` file, uncomment all the environment in `backend` service for keycloak and set the values according to configuration done in keycloak for OpenProject Integration.
diff --git a/docs/development/development-environment-ubuntu/README.md b/docs/development/development-environment/linux/README.md
similarity index 90%
rename from docs/development/development-environment-ubuntu/README.md
rename to docs/development/development-environment/linux/README.md
index 995a021b55a1..94e719700759 100644
--- a/docs/development/development-environment-ubuntu/README.md
+++ b/docs/development/development-environment/linux/README.md
@@ -1,6 +1,7 @@
---
sidebar_navigation:
title: Development setup on Debian / Ubuntu
+ short_title: Setup on Debian / Ubuntu
description: OpenProject development setup on Debian / Ubuntu
keywords: development setup debian ubuntu linux
---
@@ -18,8 +19,6 @@ shall NOT be present before.
**Please note**: This guide is NOT suitable for a production setup, but only for developing with it!
-Remark: *At the time of writing* in this page refers to 12/10/2021
-
If you find any bugs or you have any recommendations for improving this tutorial, please, feel free to send a pull
request or comment in the [OpenProject forums](https://community.openproject.org/projects/openproject/boards).
@@ -350,24 +349,3 @@ in a production setting.**
```shell
RAILS_ENV=development bin/rails runner "Delayed::Job.delete_all"
```
-
-### Start Coding
-
-Please have a look at [our development guidelines](../code-review-guidelines/) for tips and guides on how to start
-coding. We have advice on how to get your changes back into the OpenProject core as smooth as possible.
-Also, take a look at the `doc` directory in our sources, especially
-the [how to run tests](https://github.com/opf/openproject/tree/dev/docs/development/running-tests) documentation (we
-like to have automated tests for every new developed feature).
-
-### Troubleshooting
-
-The OpenProject logfile can be found in `log/development.log`.
-
-If an error occurs, it should be logged there (as well as in the output to STDOUT/STDERR of the rails server process).
-
-### Questions, Comments, and Feedback
-
-If you have any further questions, comments, feedback, or an idea to enhance this guide, please tell us at the
-appropriate community.openproject.org [forum](https://community.openproject.org/projects/openproject/boards/9).
-[Follow OpenProject on twitter](https://twitter.com/openproject), and
-follow [the news](https://www.openproject.org/blog) to stay up to date.
diff --git a/docs/development/development-environment-osx/README.md b/docs/development/development-environment/macos/README.md
similarity index 90%
rename from docs/development/development-environment-osx/README.md
rename to docs/development/development-environment/macos/README.md
index 1ba17bd97e1c..5d1ed3b0e16c 100644
--- a/docs/development/development-environment-osx/README.md
+++ b/docs/development/development-environment/macos/README.md
@@ -1,6 +1,7 @@
---
sidebar_navigation:
title: Development setup on MacOS
+ short_title: Setup on MacOS
description: OpenProject development setup on Mac OS
keywords: development setup macos
---
@@ -207,8 +208,6 @@ Now, run the following tasks to migrate and seed the dev database, and prepare t
RAILS_ENV=development bin/rails db:seed
```
-1
-
### Run OpenProject through overmind
You can run all required workers of OpenProject through `overmind`, which combines them in a single tab. Optionally, you
@@ -334,24 +333,3 @@ in a production setting.**
```shell
RAILS_ENV=development bin/rails runner "Delayed::Job.delete_all"
```
-
-### Start Coding
-
-Please have a look at [our development guidelines](../code-review-guidelines) for tips and guides on how to start
-coding. We have advice on how to get your changes back into the OpenProject core as smooth as possible.
-Also, take a look at the `doc` directory in our sources, especially
-the [how to run tests](https://github.com/opf/openproject/blob/dev/docs/development/running-tests) documentation (we
-like to have automated tests for every new developed feature).
-
-### Troubleshooting
-
-The OpenProject logfile can be found in `log/development.log`.
-
-If an error occurs, it should be logged there (as well as in the output to STDOUT/STDERR of the rails server process).
-
-### Questions, Comments, and Feedback
-
-If you have any further questions, comments, feedback, or an idea to enhance this guide, please tell us at the
-appropriate community.openproject.org [forum](https://community.openproject.org/projects/openproject/boards/9).
-[Follow OpenProject on twitter](https://twitter.com/openproject), and
-follow [the news](https://www.openproject.org/blog) to stay up to date.
diff --git a/docs/development/environments/README.md b/docs/development/environments/README.md
deleted file mode 100644
index 11b7bdeaffa7..000000000000
--- a/docs/development/environments/README.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-sidebar_navigation:
- title: Environments
-description: Get an overview of the different environments at play in the development phases of OpenProject
-keywords: environments, CI, development
----
-
-# Environments
-
-This guide has been integrated into the [application architecture documentation](../application-architecture/).
diff --git a/docs/development/localhost-ssl/README.md b/docs/development/localhost-ssl/README.md
index 3af70041e542..58e95f916909 100644
--- a/docs/development/localhost-ssl/README.md
+++ b/docs/development/localhost-ssl/README.md
@@ -93,7 +93,7 @@ application server. You can do that with `/usr/sbin/setsebool -P httpd_can_netwo
## Step 4: Configure OpenProject for HTTPS usage
We assume you have already configured your OpenProject local development environment
-as [described in this guide](../development-environment-ubuntu). You will need to add your custom host name
+as [described in this guide](../development-environment). You will need to add your custom host name
to the environment. You can use this variable to do so.
```yaml
@@ -133,10 +133,3 @@ setup a reverse proxy in docker, like [traefik](https://traefik.io/). Then follo
> **Reminder**:
This setup is still experimental and under further development. Use it only, when you know what you are doing.
-
-## Questions, Comments, and Feedback
-
-If you have any further questions, comments, feedback, or an idea to enhance this guide, please tell us at the
-appropriate community.openproject.org [forum](https://community.openproject.org/projects/openproject/boards/9).
-[Follow OpenProject on twitter](https://twitter.com/openproject), and
-follow [the news](https://www.openproject.org/blog) to stay up to date.
diff --git a/docs/development/product-development-handbook/README.md b/docs/development/product-development-handbook/README.md
index e6c60f96e640..eb3690209e85 100644
--- a/docs/development/product-development-handbook/README.md
+++ b/docs/development/product-development-handbook/README.md
@@ -343,7 +343,7 @@ The entire team documents possible improvements for the next release.
### 4.1 Version/Release
-A version is the name given to a collection of features and/or bugfixes. A release is the publicly available version of the OpenProject software. More information is provided on the [release page](../releases/).
+A version is the name given to a collection of features and/or bugfixes. A release is the publicly available version of the OpenProject software. More information is provided on the [Application architecture page](../application-architecture/#patch-and-change-management).
### 4.2 RICE Score
diff --git a/docs/development/releases/README.md b/docs/development/releases/README.md
deleted file mode 100644
index d21561c7da86..000000000000
--- a/docs/development/releases/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Releases
-
-This page has been integrated into the [application architecture guide](../application-architecture/#patch-and-change-management).
diff --git a/docs/development/running-tests/README.md b/docs/development/running-tests/README.md
index 3f482e5797eb..d833d8886f4d 100644
--- a/docs/development/running-tests/README.md
+++ b/docs/development/running-tests/README.md
@@ -119,7 +119,7 @@ Smoke tests are automated and manual tests to ensure the main application featur
**Best practices**
- Automate smoke testing on top of manual testing when possible
-- Run after deployments to the appropriate [environments](../environments), e.g., the edge environment for features of the next release and staging environment for bug fixes to a stable release
+- Run after deployments to the appropriate [environments](../application-architecture/#environments), e.g., the edge environment for features of the next release and staging environment for bug fixes to a stable release
- Keep smoke tests updated so that they can evolve together with the application
**References**
@@ -251,7 +251,7 @@ Upgrade tests are manually performed for major code changes and data migrations
#### Usability testing
-When new features or changes to the application are available on our [Edge or Community environments](../environments), product team members, customers, and community users can provide usability feedback on how the change is perceived.
+When new features or changes to the application are available on our [Edge or Community environments](../application-architecture/#environments), product team members, customers, and community users can provide usability feedback on how the change is perceived.
**Key objectives and effects**
@@ -725,7 +725,7 @@ good as a test server.
### Running tests locally in Docker
Most of the above applies to running tests locally, with some docker specific setup changes that are discussed [in the
-docker development documentation](../development-environment-docker).
+docker development documentation](../development-environment/docker).
### Generators
diff --git a/docs/installation-and-operations/installation/manual/README.md b/docs/installation-and-operations/installation/manual/README.md
index 1664c77b412f..ca8887e63dff 100644
--- a/docs/installation-and-operations/installation/manual/README.md
+++ b/docs/installation-and-operations/installation/manual/README.md
@@ -456,8 +456,3 @@ If you need to restart the server (for example after a configuration change), do
With each new OpenProject core version, the plug-ins might need to be updated. Please make sure that the plug-in versions of all you plug-ins works with the OpenProject version you use.
Many plug-ins follow the OpenProject version with their version number (So, if you have installed OpenProject version 4.1.0, the plug-in should also have the version 4.1.0).
-
-## Questions, comments, and feedback
-
-If you have any further questions, comments, feedback, or an idea to enhance this guide, please tell us at the appropriate community [forum](https://community.openproject.org/projects/openproject/boards/9).
-[Follow OpenProject on twitter](https://twitter.com/openproject), and follow the news on [openproject.org](https://www.openproject.org) to stay up to date.
From 2a9b43d7a5584cb74ada4220e03000038c1db3ef Mon Sep 17 00:00:00 2001
From: Marcello Rocha
Date: Thu, 29 Aug 2024 16:50:06 +0200
Subject: [PATCH 023/147] Adds a log entry on FilesInfoQuery
---
.../nextcloud/files_info_query.rb | 1 +
.../one_drive/files_info_query.rb | 17 ++++++++++-------
2 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/modules/storages/app/common/storages/peripherals/storage_interaction/nextcloud/files_info_query.rb b/modules/storages/app/common/storages/peripherals/storage_interaction/nextcloud/files_info_query.rb
index dd7fa8ac98bc..25faa2fa58c1 100644
--- a/modules/storages/app/common/storages/peripherals/storage_interaction/nextcloud/files_info_query.rb
+++ b/modules/storages/app/common/storages/peripherals/storage_interaction/nextcloud/files_info_query.rb
@@ -56,6 +56,7 @@ def call(auth_strategy:, file_ids:)
return ServiceResult.success(result: [])
end
+ info "Retrieving file information for #{file_ids.join(', ')}"
http_options = Util.ocs_api_request.deep_merge(Util.accept_json)
Authentication[auth_strategy].call(storage: @storage, http_options:) do |http|
parsed_response = files_info(http, file_ids).on_failure { return _1 }.result
diff --git a/modules/storages/app/common/storages/peripherals/storage_interaction/one_drive/files_info_query.rb b/modules/storages/app/common/storages/peripherals/storage_interaction/one_drive/files_info_query.rb
index 939027ac7524..d1d7a9982143 100644
--- a/modules/storages/app/common/storages/peripherals/storage_interaction/one_drive/files_info_query.rb
+++ b/modules/storages/app/common/storages/peripherals/storage_interaction/one_drive/files_info_query.rb
@@ -52,17 +52,20 @@ def call(auth_strategy:, file_ids:)
)
end
- result = Array(file_ids).map do |file_id|
- file_info_result = FileInfoQuery.call(storage: @storage, auth_strategy:, file_id:)
+ with_tagged_logger do
+ info "Retrieving file information for #{file_ids.join(', ')}"
+ result = Array(file_ids).map do |file_id|
+ file_info_result = FileInfoQuery.call(storage: @storage, auth_strategy:, file_id:)
- file_info_result.on_failure do |failed_result|
- return failed_result if failed_result.error_source.module_parent == AuthenticationStrategies
+ file_info_result.on_failure do |failed_result|
+ return failed_result if failed_result.error_source.module_parent == AuthenticationStrategies
+ end
+
+ wrap_storage_file_error(file_id, file_info_result)
end
- wrap_storage_file_error(file_id, file_info_result)
+ ServiceResult.success(result:)
end
-
- ServiceResult.success(result:)
end
private
From 1d4115c6b203daa8849ff829d47b47fff479c454 Mon Sep 17 00:00:00 2001
From: OpenProject Actions CI
Date: Fri, 30 Aug 2024 03:05:31 +0000
Subject: [PATCH 024/147] update locales from crowdin [ci skip]
---
config/locales/crowdin/js-zh-CN.yml | 10 +++---
config/locales/crowdin/js-zh-TW.yml | 2 +-
config/locales/crowdin/zh-CN.yml | 54 ++++++++++++++---------------
3 files changed, 33 insertions(+), 33 deletions(-)
diff --git a/config/locales/crowdin/js-zh-CN.yml b/config/locales/crowdin/js-zh-CN.yml
index 0f05cecbe644..e70f8b25452e 100644
--- a/config/locales/crowdin/js-zh-CN.yml
+++ b/config/locales/crowdin/js-zh-CN.yml
@@ -138,8 +138,8 @@ zh-CN:
description_select_work_package: "选择工作包 #%{id}"
description_subwork_package: "子工作包 #%{id}"
editor:
- revisions: "Show local modifications"
- no_revisions: "No local modifications found"
+ revisions: "显示本地修改"
+ no_revisions: "未找到本地修改"
preview: "切换预览模式"
source_code: "切换 Markdown 模式"
error_saving_failed: "保存文档失败,出现以下错误:%{error}"
@@ -278,9 +278,9 @@ zh-CN:
更改可能需要一些时间才能生效。当更新完所有相关工作包时,您将收到通知。
work_packages_settings:
warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
- Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ 将进度计算模式从基于状态改为基于工时,将使% 完成变为不可编辑字段,其值来自工时和剩余工时。% 完成现有值将保留。如果没有 工时和剩余工时的值,则需要这些值才能更改 % 完成。
warning_progress_calculation_mode_change_from_status_to_field_html: >-
- Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
+ 将进度计算模式从基于状态改为基于工时,将使% 完成字段可自由编辑。如果您选择输入工时或剩余工时的值,它们也将与% 完成相关联。更改剩余工时就可以更新% 完成。
warning_progress_calculation_mode_change_from_field_to_status_html: >-
将进度计算模式从基于工时的方式改为基于状态,将会导致所有现有的 %完整的 值丢失,并被与每个状态相关的值所替代。 剩余工时 的现有值也可能被重新计算,以反映这种变化。此操作不可逆转。
custom_actions:
@@ -401,7 +401,7 @@ zh-CN:
label_create: "创建"
label_create_work_package: "创建新工作包"
label_created_by: "创建自"
- label_current: "current"
+ label_current: "当前"
label_date: "日期"
label_date_with_format: "以%{format} 的格式输入 %{date_attribute}"
label_deactivate: "停用"
diff --git a/config/locales/crowdin/js-zh-TW.yml b/config/locales/crowdin/js-zh-TW.yml
index e29caa69fbcb..c9bc01ae3ace 100644
--- a/config/locales/crowdin/js-zh-TW.yml
+++ b/config/locales/crowdin/js-zh-TW.yml
@@ -400,7 +400,7 @@ zh-TW:
label_create: "建立"
label_create_work_package: "建立新的工作項目"
label_created_by: "建立者:"
- label_current: "current"
+ label_current: "目前"
label_date: "日期"
label_date_with_format: "輸入 %{date_attribute} 使用以下格式: %{format}"
label_deactivate: "停用"
diff --git a/config/locales/crowdin/zh-CN.yml b/config/locales/crowdin/zh-CN.yml
index fb90dccf70c5..90615fc3d625 100644
--- a/config/locales/crowdin/zh-CN.yml
+++ b/config/locales/crowdin/zh-CN.yml
@@ -1029,10 +1029,10 @@ zh-CN:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
- must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "工时与剩余工时不匹配"
+ cannot_be_set_when_work_is_zero: "当工时为 0h 时无法设置"
+ must_be_set_when_remaining_work_is_set: "设置“剩余工时”时必填。"
+ must_be_set_when_work_and_remaining_work_are_set: "设置“工时”和“剩余工时”时必填。"
inclusion: "必须介于 0 和 100 之间。"
due_date:
not_start_date: "不是在开始日期开始,尽管这是必需的里程碑。"
@@ -1062,17 +1062,17 @@ zh-CN:
does_not_exist: "指定的类别不存在。"
estimated_hours:
not_a_number: "不是有效的持续时间。"
- cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
+ cant_be_inferior_to_remaining_work: "不能低于剩余工时。"
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "设置“剩余工时”和“% 完成”时必填。"
remaining_hours:
not_a_number: "不是有效的持续时间。"
- cant_exceed_work: "cannot be higher than Work."
- must_be_set_when_work_is_set: "required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ cant_exceed_work: "不能高于工时。"
+ must_be_set_when_work_is_set: "设置“工时”时必填。"
+ must_be_set_when_work_and_percent_complete_are_set: "设置“工时”和“% 完成”时必填。"
must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
- must be 0h when Work is set and % Complete is 100%.
+ 当“工时”已设置,且“% 完成”为 100%时,必须为0h。
must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
- must be empty when Work is empty and % Complete is 100%.
+ 当“工时”为空,且“% 完成”为 100%时,必须为空。
readonly_status: "工作包处于只读状态,因此无法更改其属性。"
type:
attributes:
@@ -3074,9 +3074,9 @@ zh-CN:
setting_work_package_done_ratio_field: "基于工时"
setting_work_package_done_ratio_status: "基于状态"
setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ 在基于工时模式下,“% 完成”是根据已完成的工时占总工时的比例计算出来的。在基于状态模式下,每个状态都有一个与之相关的“% 完成”。更改状态将改变“% 完成”。
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ 在基于工作的模式下,“% 完成”可以自由设置为任何值。如果选择输入 "工时 "值,则会自动得出 "剩余工时"。在基于状态的模式下,每个状态都有一个与之相关的“% 完成”值。更改状态将改变“% 完成”。
setting_work_package_properties: "工作包属性"
setting_work_package_startdate_is_adddate: "使用当前日期作为新工作包的开始日期"
setting_work_packages_projects_export_limit: "工作包/项目导出限制"
@@ -3457,26 +3457,26 @@ zh-CN:
progress:
label_note: "注意:"
modal:
- work_based_help_text: "Each field is automatically calculated from the two others when possible."
- work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "在可能的情况下,每个字段都会根据另外两个字段自动计算。"
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "“% 完成”由 \"工时\" 和 \"剩余工时\" 自动得出。"
status_based_help_text: "完成百分比由工作包状态设定。"
migration_warning_text: "在基于工时的进度计算模式下,完成百分比不能手动设置,而是与工时绑定。现有值已被保留,但无法编辑。请先输入工时。"
derivation_hints:
done_ratio:
- cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
- cleared_because_work_is_0h: "Cleared because Work is 0h."
- derived: "Derived from Work and Remaining work."
+ cleared_because_remaining_work_is_empty: "已清空,因为“剩余工时”为空。"
+ cleared_because_work_is_0h: "已清空,因为 \"工时 \"为 0h。"
+ derived: "源自“工时”和“剩余工时”。"
estimated_hours:
- cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
- derived: "Derived from Remaining work and % Complete."
- same_as_remaining_work: "Set to same value as Remaining work."
+ cleared_because_remaining_work_is_empty: "已清空,因为“剩余工时”为空。"
+ derived: "由“剩余工时”和“% 完成”得出"
+ same_as_remaining_work: "设置为与“剩余工时”相同的值。"
remaining_hours:
- cleared_because_work_is_empty: "Cleared because Work is empty."
- cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
- decreased_like_work: "Decreased by the same amount as Work."
- derived: "Derived from Work and % Complete."
- increased_like_work: "Increased by the same amount as Work."
- same_as_work: "Set to same value as Work."
+ cleared_because_work_is_empty: "已清空,因为 \"工时 \"为空。"
+ cleared_because_percent_complete_is_empty: "已清空,因为“% 完成”为空。"
+ decreased_like_work: "减少与 \"工时 \"相同的数额。"
+ derived: "由“工时”和“% 完成”得出"
+ increased_like_work: "增加与 \"工时 \"相同的数额。"
+ same_as_work: "设置为与 \"工时 \"相同的值。"
permissions:
comment: "评论"
comment_description: "可以查看和评论该工作包。"
From dee10ba9e1290e0424f6ed55fe56d9ea834f5e37 Mon Sep 17 00:00:00 2001
From: OpenProject Actions CI
Date: Fri, 30 Aug 2024 03:10:30 +0000
Subject: [PATCH 025/147] update locales from crowdin [ci skip]
---
config/locales/crowdin/cs.yml | 54 ++++++++--------
config/locales/crowdin/de.yml | 28 ++++----
config/locales/crowdin/id.yml | 2 +-
config/locales/crowdin/it.yml | 14 ++--
config/locales/crowdin/js-ca.yml | 4 +-
config/locales/crowdin/js-id.yml | 2 +-
config/locales/crowdin/js-no.yml | 2 +-
config/locales/crowdin/js-ro.yml | 4 +-
config/locales/crowdin/js-ru.yml | 2 +-
config/locales/crowdin/js-vi.yml | 2 +-
config/locales/crowdin/js-zh-CN.yml | 10 +--
config/locales/crowdin/js-zh-TW.yml | 2 +-
config/locales/crowdin/pl.yml | 2 +-
config/locales/crowdin/ro.yml | 4 +-
config/locales/crowdin/sl.yml | 4 +-
config/locales/crowdin/tr.yml | 2 +-
config/locales/crowdin/uk.yml | 2 +-
config/locales/crowdin/vi.yml | 2 +-
config/locales/crowdin/zh-CN.seeders.yml | 4 +-
config/locales/crowdin/zh-CN.yml | 64 +++++++++----------
config/locales/crowdin/zh-TW.yml | 8 +--
.../backlogs/config/locales/crowdin/zh-TW.yml | 2 +-
modules/bim/config/locales/crowdin/fr.yml | 2 +-
modules/budgets/config/locales/crowdin/cs.yml | 2 +-
.../config/locales/crowdin/zh-CN.yml | 2 +-
.../config/locales/crowdin/zh-TW.yml | 2 +-
modules/meeting/config/locales/crowdin/cs.yml | 4 +-
.../meeting/config/locales/crowdin/zh-TW.yml | 2 +-
.../reporting/config/locales/crowdin/ro.yml | 2 +-
.../config/locales/crowdin/zh-TW.yml | 4 +-
.../config/locales/crowdin/js-fr.yml | 2 +-
.../config/locales/crowdin/ro.yml | 2 +-
.../config/locales/crowdin/ru.yml | 2 +-
.../config/locales/crowdin/uk.yml | 2 +-
.../config/locales/crowdin/zh-CN.yml | 2 +-
35 files changed, 125 insertions(+), 125 deletions(-)
diff --git a/config/locales/crowdin/cs.yml b/config/locales/crowdin/cs.yml
index ec5ed0a63091..72f8d5b2bffb 100644
--- a/config/locales/crowdin/cs.yml
+++ b/config/locales/crowdin/cs.yml
@@ -462,7 +462,7 @@ cs:
irreversible: "Tato akce je nevratná"
confirmation: "Zadejte název zástupného uživatele %{name} pro potvrzení odstranění."
upsale:
- title: placeholder uživatel
+ title: Placeholder uživatel
description: >
Placeholder uživatelé jsou způsob, jak přiřadit pracovní balíčky uživatelům, kteří nejsou součástí vašeho projektu. Mohou být užiteční v řadě scénářů; například, pokud potřebujete sledovat úkoly u zdroje, který ještě nejsou pojmenovány nebo dostupné, nebo pokud nechcete této osobě umožnit přístup k OpenProject ale stále chcete sledovat úkoly, které jim byly přiděleny.
prioritiies:
@@ -684,7 +684,7 @@ cs:
false: "archivováno"
identifier: "Identifikátor"
latest_activity_at: "Poslední aktivita"
- parent: "Podprojekt"
+ parent: "Nadřazený projekt"
public_value:
title: "Viditelnost"
true: "veřejný"
@@ -790,7 +790,7 @@ cs:
true: "zahrnuje nepracovní dny"
notify: "Oznámit" #used in custom actions
parent: "Nadřazený"
- parent_issue: "Rodič"
+ parent_issue: "Nadřazený"
parent_work_package: "Nadřazený"
priority: "Priorita"
progress: "% Dokončeno"
@@ -920,7 +920,7 @@ cs:
blank: "je povinné. Zvolte prosím název."
not_unique: " už bylo použito. Prosím vyberte jiný název."
notifications:
- at_least_one_channel: "Alespoň jeden kanál pro odesílání oznámení musí být specifikován."
+ at_least_one_channel: "Pro odesílání notifikací musí být specifikován alespoň jeden kanál"
attributes:
read_ian:
read_on_creation: "nelze nastavit na pravdivé při vytváření oznámení "
@@ -1172,11 +1172,11 @@ cs:
member: "Člen"
news: "Novinky"
notification:
- one: "Oznámení"
- few: "Oznámení"
- many: "Oznámení"
- other: "Oznámení"
- placeholder_user: "placeholder uživatel"
+ one: "Notifikace"
+ few: "Notifikací"
+ many: "Notifikací"
+ other: "Notifikace"
+ placeholder_user: "Placeholder uživatel"
project: "Projekt"
project_query:
one: "Seznam projektů"
@@ -1890,7 +1890,7 @@ cs:
instructions_after_error: "Zkuste se znovu přihlásit kliknutím na %{signin}. Pokud chyba přetrvává, požádejte správce o pomoc."
menus:
admin:
- mail_notification: "E-mailová upozornění"
+ mail_notification: "E-mailové notifikace"
mails_and_notifications: "E-maily a oznámení"
aggregation: "Agregace"
api_and_webhooks: "API & Webhooky"
@@ -1953,7 +1953,7 @@ cs:
by_project: "Nepřečteno dle projektu"
by_reason: "Důvod"
inbox: "Doručená pošta"
- send_notifications: "Odeslat oznámení pro tuto akci"
+ send_notifications: "Pro tuto akci odeslat notifikaci"
work_packages:
subject:
created: "Pracovní balíček byl vytvořen."
@@ -2346,9 +2346,9 @@ cs:
label_permissions: "Práva"
label_permissions_report: "Přehled oprávnění"
label_personalize_page: "Přizpůsobit tuto stránku"
- label_placeholder_user: "placeholder uživatel"
+ label_placeholder_user: "Placeholder uživatel"
label_placeholder_user_new: ""
- label_placeholder_user_plural: "placeholder uživatelé"
+ label_placeholder_user_plural: "Placeholder uživatelé"
label_planning: "Plánování"
label_please_login: "Přihlaste se prosím"
label_plugins: "Pluginy"
@@ -2370,7 +2370,7 @@ cs:
label_project_attribute_plural: "Atributy projektu"
label_project_attribute_manage_link: "Správa atributů produktu"
label_project_count: "Celkový počet projektů"
- label_project_copy_notifications: "Během kopie projektu odeslat oznámení e-mailem"
+ label_project_copy_notifications: "Během kopírování projektu odeslat notifikace e-mailem"
label_project_latest: "Nejnovější projekty"
label_project_default_type: "Povolit prázdný typ"
label_project_hierarchy: "Hierarchie projektu"
@@ -2510,7 +2510,7 @@ cs:
label_users_settings: "Uživatelská nastavení"
label_version_new: "Nová verze"
label_version_plural: "Verze"
- label_version_sharing_descendants: "S Podprojekty"
+ label_version_sharing_descendants: "S podprojekty"
label_version_sharing_hierarchy: "S hierarchií projektu"
label_version_sharing_none: "Není sdíleno"
label_version_sharing_system: "Se všemi projekty"
@@ -2616,28 +2616,28 @@ cs:
digests:
including_mention_singular: "včetně zmínky"
including_mention_plural: "včetně %{number_mentioned} zmínění"
- unread_notification_singular: "1 nepřečtené oznámení"
- unread_notification_plural: "%{number_unread} nepřečtených oznámení"
+ unread_notification_singular: "1 nepřečtená notifikace"
+ unread_notification_plural: "%{number_unread} nepřečtených notifikací"
you_have: "Máte"
logo_alt_text: "Logo"
mention:
subject: "%{user_name} vás zmínil v #%{id} - %{subject}"
notification:
- center: "Centrum oznámení"
+ center: "Centrum notifikací"
see_in_center: "Zobrazit komentář v oznamovacím centru"
settings: "Změnit nastavení e-mailu"
salutation: "Ahoj %{user}!"
salutation_full_name: "Jméno a příjmení"
work_packages:
created_at: "Vytvořeno v %{timestamp} uživatelem %{user} "
- login_to_see_all: "Přihlaste se pro zobrazení všech oznámení."
+ login_to_see_all: "Přihlaste se pro zobrazení všech notifikací."
mentioned: "Byli jste zmíněni v komentáři"
mentioned_by: "%{user} vás zmínil v komentáři"
more_to_see:
- one: "Existuje ještě 1 pracovní balíček s oznámeními."
- few: "Existuje ještě %{count} pracovních balíčků s oznámeními."
- many: "Existuje ještě %{count} pracovních balíčků s oznámeními."
- other: "Existuje ještě %{count} pracovních balíčků s oznámeními."
+ one: "Existuje ještě 1 pracovní balíček s notifikací."
+ few: "Existuje ještě %{count} pracovních balíčků s notifikacema."
+ many: "Existuje ještě %{count} pracovních balíčků s notifikacema."
+ other: "Existuje ještě %{count} pracovních balíčků s notifikacema."
open_in_browser: "Otevřít v prohlížeči"
reason:
watched: "Sledováno"
@@ -2646,7 +2646,7 @@ cs:
mentioned: "Zmíněné"
shared: "Sdílené"
subscribed: "vše"
- prefix: "Obdrženo z důvodu nastavení oznámení: %{reason}"
+ prefix: "Obdrženo z důvodu nastavení notifikací: %{reason}"
date_alert_start_date: "Upozornění na datum"
date_alert_due_date: "Upozornění na datum"
see_all: "Zobrazit vše"
@@ -2920,7 +2920,7 @@ cs:
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"
- permission_save_queries: "Uložit pohled"
+ permission_save_queries: "Uložit zobrazení"
permission_search_project: "Hledat projekt"
permission_select_custom_fields: "Vybrat vlastní pole"
permission_select_project_custom_fields: "Vyberte atributy projektu"
@@ -3299,7 +3299,7 @@ cs:
enable_subscriptions_text_html: Umožňuje uživatelům s nezbytnými oprávněními přihlásit se do OpenProject kalendářů a získat přístup k informacím o pracovním balíčku prostřednictvím externího klienta kalendáře. Poznámka: Před povolením si prosím přečtěte iCalendar předplatné.
language_name_being_default: "%{language_name} (výchozí)"
notifications:
- events_explanation: "Určuje, pro kterou událost je odeslán e-mail. Pracovní balíčky jsou z tohoto seznamu vyloučeny, protože oznámení pro ně mohou být nastavena speciálně pro každého uživatele."
+ events_explanation: "Určuje, pro kterou událost je odeslán e-mail. Pracovní balíčky jsou z tohoto seznamu vyloučeny, protože notifikace pro ně mohou být nastavena speciálně pro každého uživatele."
delay_minutes_explanation: "Odesílání e-mailu může být pozdrženo, aby bylo uživatelům s nakonfigurovaným v oznámení aplikace před odesláním pošty potvrzeno oznámení. Uživatelé, kteří si přečtou oznámení v aplikaci, nedostanou e-mail pro již přečtené oznámení."
other: "Ostatní"
passwords: "Hesla"
@@ -3384,7 +3384,7 @@ cs:
text_destroy_with_associated: "Existují další objekty, které jsou přiřazeny k pracovním balíčkům a které mají být odstraněny. Tyto objekty jsou následující typy:"
text_destroy_what_to_do: "Co chcete udělat?"
text_diff_truncated: "... Toto rozlišení bylo zkráceno, protože přesahuje maximální velikost, kterou lze zobrazit."
- text_email_delivery_not_configured: "Doručení e-mailu není nakonfigurováno a oznámení jsou zakázána.\nNakonfigurujte váš SMTP server pro jejich povolení."
+ text_email_delivery_not_configured: "Doručení e-mailu není nakonfigurováno a notifikace jsou zakázány.\nNakonfigurujte váš SMTP server pro jejich povolení."
text_enumeration_category_reassign_to: "Přiřadit je k této hodnotě:"
text_enumeration_destroy_question: "%{count} objektů je přiřazeno k této hodnotě."
text_file_repository_writable: "Do adresáře příloh lze zapisovat"
diff --git a/config/locales/crowdin/de.yml b/config/locales/crowdin/de.yml
index a883c3319fe0..65cbe6b291d7 100644
--- a/config/locales/crowdin/de.yml
+++ b/config/locales/crowdin/de.yml
@@ -48,7 +48,7 @@ de:
main-menu-border-color: "Rahmenfarbe des Hauptmenüs"
custom_colors: "Benutzerdefinierte Farben"
customize: "Passen Sie Ihre OpenProject Installation mit Ihrem eigenen Logo und eigenen Farben an."
- enterprise_notice: "Diese kleine Erweiterung steht den Abonnenten der Enterprise edition ganz exklusiv als kleines Dankeschön für deren finanzielle Unterstützung zur Verfügung."
+ enterprise_notice: "Dieses kleine Add-on steht den Abonnenten der Enterprise-Edition ganz exklusiv als kleines Dankeschön für deren finanzielle Unterstützung zur Verfügung."
enterprise_more_info: "Hinweis: Das verwendete Logo wird öffentlich zugänglich sein."
manage_colors: "Farbauswahloptionen bearbeiten"
instructions:
@@ -61,15 +61,15 @@ de:
main-menu-bg-color: "Hintergrundfarbe des Menüs in der linken Seitenleiste."
theme_warning: Das Ändern des Themes wird Ihr benutzerdefiniertes Design überschreiben. Alle Änderungen werden dann verloren gehen. Sind Sie sicher, dass Sie fortfahren möchten?
enterprise:
- upgrade_to_ee: "Auf Enterprise edition upgraden"
- add_token: "Enterprise edition Support Token hochladen"
+ upgrade_to_ee: "Auf Enterprise-Edition upgraden"
+ add_token: "Enterprise-Edition Support Token hochladen"
delete_token_modal:
- text: "Sind Sie sicher, dass Sie das aktuelle Enterprise edition token entfernen möchten?"
+ text: "Sind Sie sicher, dass Sie das aktuelle Enterprise Edition-Token entfernen möchten?"
title: "Token löschen"
replace_token: "Aktuellen Enterprise edition Support Token ersetzen"
order: "Enterprise on-premises bestellen"
- paste: "Enterprise edition Support Token hier einfügen"
- required_for_feature: "Dieses Add-on ist nur mit einem aktiven Enterprise edition Support-Token verfügbar."
+ paste: "Enterprise-Edition Support Token hier einfügen"
+ required_for_feature: "Dieses Add-on ist nur mit einem aktiven Enterprise-Edition Support-Token verfügbar."
enterprise_link: "Klicken Sie hier für weitere Informationen."
start_trial: "Kostenlose Testversion starten"
book_now: "Jetzt buchen"
@@ -1591,7 +1591,7 @@ de:
error_cookie_missing: "Das OpenProject Cookie fehlt. Bitte stellen Sie sicher, dass Cookies aktiviert sind, da diese Applikation ohne aktivierte Cookies nicht korrekt funktioniert."
error_custom_option_not_found: "Option ist nicht vorhanden."
error_enterprise_activation_user_limit: "Ihr Konto konnte nicht aktiviert werden (Nutzerlimit erreicht). Bitte kontaktieren Sie Ihren Administrator um Zugriff zu erhalten."
- error_enterprise_token_invalid_domain: "Die Enterprise edition ist nicht aktiv. Die aktuelle Domain (%{actual}) entspricht nicht dem erwarteten Hostnamen (%{expected})."
+ error_enterprise_token_invalid_domain: "Die Enterprise-Edition ist nicht aktiv. Die aktuelle Domain (%{actual}) entspricht nicht dem erwarteten Hostnamen (%{expected})."
error_failed_to_delete_entry: "Fehler beim Löschen dieses Eintrags."
error_in_dependent: "Fehler beim Versuch, abhängiges Objekt zu ändern: %{dependent_class} #%{related_id} - %{related_subject}: %{error}"
error_in_new_dependent: "Fehler beim Versuch, abhängiges Objekt zu erstellen: %{dependent_class} - %{related_subject}: %{error}"
@@ -1756,10 +1756,10 @@ de:
blocks:
community: "OpenProject Community"
upsale:
- title: "Auf Enterprise edition upgraden"
+ title: "Auf Enterprise-Edition upgraden"
more_info: "Weitere Informationen"
links:
- upgrade_enterprise_edition: "Auf Enterprise edition upgraden"
+ upgrade_enterprise_edition: "Auf Enterprise-Edition upgraden"
postgres_migration: "Migration Ihrer Installation zu PostgreSQL"
user_guides: "Benutzerhandbuch"
faq: "Häufig gestellte Fragen"
@@ -1793,7 +1793,7 @@ de:
dates:
working: "%{date} ist jetzt ein Arbeitstag"
non_working: "%{date} ist jetzt ein arbeitsfreier Tag"
- progress_mode_changed_to_status_based: Fortschrittberechnung wurde auf Status-basiert gesetzt
+ progress_mode_changed_to_status_based: Fortschrittberechnung wurde auf Status-bezogen gesetzt
status_excluded_from_totals_set_to_false_message: jetzt in den Gesamtwerten der Hierarchie enthalten
status_excluded_from_totals_set_to_true_message: jetzt von den Hierarchie-Gesamtwerten ausgeschlossen
status_percent_complete_changed: "% vollständig von %{old_value}% auf %{new_value} % geändert"
@@ -2065,7 +2065,7 @@ de:
label_enumerations: "Aufzählungen"
label_enterprise: "Enterprise"
label_enterprise_active_users: "%{current}/%{limit} gebuchte aktive Nutzer"
- label_enterprise_edition: "Enterprise edition"
+ label_enterprise_edition: "Enterprise Edition"
label_enterprise_support: "Enterprise Support"
label_enterprise_addon: "Enterprise Add-on"
label_environment: "Umgebung"
@@ -3009,8 +3009,8 @@ de:
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_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: "Datei-Speicher einrichten"
+ setup_documentation_details: "Wenn Sie Hilfe bei der Konfiguration eines neuen Dateispeichers benötigen, konsultieren Sie bitte die Dokumentation: "
+ setup_documentation_details_link_text: "Dateispeicher einrichten"
show_warning_details: "Um diesen Dateispeicher nutzen zu können, müssen Sie das Modul und den spezifischen Speicher in den Projekteinstellungen jedes gewünschten Projekts aktivieren."
subversion:
existing_title: "Vorhandenes Subversion Projektarchiv"
@@ -3470,7 +3470,7 @@ de:
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_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.
+ 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: >
warning_bar:
diff --git a/config/locales/crowdin/id.yml b/config/locales/crowdin/id.yml
index fc6d5d91aa9a..84eef066d0d7 100644
--- a/config/locales/crowdin/id.yml
+++ b/config/locales/crowdin/id.yml
@@ -2055,7 +2055,7 @@ id:
label_file_plural: "File"
label_filter_add: "Tambah Filter"
label_filter: "Filter"
- label_filter_plural: "Filter"
+ label_filter_plural: "Penyaring"
label_filters_toggle: "Tampilkan/Sembunyikan penyaringan"
label_float: "Float"
label_folder: "Folder"
diff --git a/config/locales/crowdin/it.yml b/config/locales/crowdin/it.yml
index ab5d960a9014..bd6e4af4e2d5 100644
--- a/config/locales/crowdin/it.yml
+++ b/config/locales/crowdin/it.yml
@@ -64,11 +64,11 @@ it:
upgrade_to_ee: "Aggiorna a Enterprise edition"
add_token: "Carica un token di assistenza per Enterprise edition"
delete_token_modal:
- text: "Vuoi davvero rimuovere il token Enterprise edition attualmente utilizzato?"
+ text: "Vuoi davvero rimuovere il token Enterprise Edition attualmente utilizzato?"
title: "Elimina token"
replace_token: "Sostituisci il token di assistenza attuale"
order: "Ordina l'edizione Enterprise on-premises"
- paste: "Incolla il tuo token di assistenza per Enterprise edition"
+ paste: "Incolla il tuo token di assistenza per Enterprise Edition"
required_for_feature: "Questa aggiunta è disponibile solo con un token di assistenza Enterprise Edition attivo."
enterprise_link: "Per ulteriori informazioni, clicca qui."
start_trial: "Inizia la prova gratuita"
@@ -804,7 +804,7 @@ it:
confirmation: "non coincide con %{attribute}."
could_not_be_copied: "%{dependency} non può essere (completamente) copiato."
does_not_exist: "non esiste."
- error_enterprise_only: "%{action} è disponibile solo in OpenProject Enterprise edition"
+ error_enterprise_only: "%{action} è disponibile solo in OpenProject Enterprise Edition"
error_unauthorized: "potrebbe non essere accessibile."
error_readonly: "è in sola lettura, pertanto non è stato possibile modificarlo."
error_conflict: "L'informazione è stata aggiornata da almeno un altro utente nel frattempo."
@@ -1594,7 +1594,7 @@ it:
error_cookie_missing: "Il cookie di OpenProject è mancante. Prego, verifica che i cookie siano attivati, questa applicazione non funziona correttamente senza."
error_custom_option_not_found: "L'opzione non esiste."
error_enterprise_activation_user_limit: "Il tuo account potrebbe non essere attivo (raggiunto il limite utente). Si prega di contattare l'amministratore per ottenere l'accesso."
- error_enterprise_token_invalid_domain: "L'Enterprise edition non è attiva. Il dominio del token Enterprise (%{actual}) non corrisponde al nome host del sistema (%{expected})."
+ error_enterprise_token_invalid_domain: "L'Enterprise Edition non è attiva. Il dominio del token Enterprise (%{actual}) non corrisponde al nome host del sistema (%{expected})."
error_failed_to_delete_entry: "Cancellazione voce non riuscita."
error_in_dependent: "Errore nel tentativo di modificare l'oggetto dipendente: %{dependent_class} #%{related_id} - %{related_subject}: %{error}"
error_in_new_dependent: "Errore nel tentativo di creare un oggetto dipendente: %{dependent_class} - %{related_subject}: %{error}"
@@ -1759,10 +1759,10 @@ it:
blocks:
community: "Comunità di OpenProject"
upsale:
- title: "Aggiorna ad Enterprise edition"
+ title: "Aggiorna ad Enterprise Edition"
more_info: "Altre informazioni"
links:
- upgrade_enterprise_edition: "Aggiorna ad Enterprise edition"
+ upgrade_enterprise_edition: "Aggiorna ad Enterprise Edition"
postgres_migration: "Migrazione dell'installazione su PostgreSQL"
user_guides: "Guide utente"
faq: "FAQ"
@@ -2068,7 +2068,7 @@ it:
label_enumerations: "Enumerazioni"
label_enterprise: "Enterprise"
label_enterprise_active_users: "%{current}/%{limit} utenti attivi riservati"
- label_enterprise_edition: "Enterprise edition"
+ label_enterprise_edition: "Enterprise Edition"
label_enterprise_support: "Supporto per Imprese"
label_enterprise_addon: "Componente aggiuntivo Enterprise"
label_environment: "Ambiente"
diff --git a/config/locales/crowdin/js-ca.yml b/config/locales/crowdin/js-ca.yml
index 748575e1696a..f6796c90e146 100644
--- a/config/locales/crowdin/js-ca.yml
+++ b/config/locales/crowdin/js-ca.yml
@@ -102,7 +102,7 @@ ca:
button_save: "Desa"
button_settings: "Configuració"
button_uncheck_all: "Desmarca-ho tot"
- button_update: "Actualitza"
+ button_update: "Actualitzar"
button_export-pdf: "Descarregar PDF"
button_export-atom: "Descarregar Atom"
button_create: "Crear"
@@ -757,7 +757,7 @@ ca:
label: "Pausa els correu electrònic recordatori temporalment"
first_day: "Primer dia"
last_day: "Últim dia"
- text_are_you_sure: "N'esteu segur?"
+ text_are_you_sure: "N'estas segur?"
text_data_lost: "Totes les dades entrades es perdran."
text_user_wrote: "%{value} va escriure:"
types:
diff --git a/config/locales/crowdin/js-id.yml b/config/locales/crowdin/js-id.yml
index 55f9a40004f1..e133255e427f 100644
--- a/config/locales/crowdin/js-id.yml
+++ b/config/locales/crowdin/js-id.yml
@@ -102,7 +102,7 @@ id:
button_save: "Simpan"
button_settings: "Pengaturan"
button_uncheck_all: "Uncek semua"
- button_update: "Update"
+ button_update: "Perbarui"
button_export-pdf: "Download PDF"
button_export-atom: "Download Atom"
button_create: "Buat baru"
diff --git a/config/locales/crowdin/js-no.yml b/config/locales/crowdin/js-no.yml
index ce8edd7cc2a5..7758851695d3 100644
--- a/config/locales/crowdin/js-no.yml
+++ b/config/locales/crowdin/js-no.yml
@@ -102,7 +102,7 @@
button_save: "Lagre"
button_settings: "Innstillinger"
button_uncheck_all: "Avmerk alle"
- button_update: "Oppdatèr"
+ button_update: "Oppdater"
button_export-pdf: "Last ned PDF"
button_export-atom: "Last ned Atom"
button_create: "Opprett"
diff --git a/config/locales/crowdin/js-ro.yml b/config/locales/crowdin/js-ro.yml
index 5bb6939aab9a..3f474cdde792 100644
--- a/config/locales/crowdin/js-ro.yml
+++ b/config/locales/crowdin/js-ro.yml
@@ -102,7 +102,7 @@ ro:
button_save: "Salvează"
button_settings: "Setări"
button_uncheck_all: "Deselectează tot"
- button_update: "Actualizare"
+ button_update: "Actualizează"
button_export-pdf: "Descarcă PDF"
button_export-atom: "Descarcă Atom"
button_create: "Creează"
@@ -757,7 +757,7 @@ ro:
label: "Întrerupeți temporar memento-urile zilnice prin e-mail"
first_day: "Prima zi"
last_day: "Ultima zi"
- text_are_you_sure: "Sunteți sigur?"
+ text_are_you_sure: "Ești sigur?"
text_data_lost: "Toate datele introduse vor fi pierdute."
text_user_wrote: "%{value} a scris:"
types:
diff --git a/config/locales/crowdin/js-ru.yml b/config/locales/crowdin/js-ru.yml
index 21bdcfaf1463..b454f9ee123c 100644
--- a/config/locales/crowdin/js-ru.yml
+++ b/config/locales/crowdin/js-ru.yml
@@ -102,7 +102,7 @@ ru:
button_save: "Сохранить"
button_settings: "Настройки"
button_uncheck_all: "Снять все отметки"
- button_update: "Обновление"
+ button_update: "Обновить"
button_export-pdf: "Скачать PDF"
button_export-atom: "Скачать Atom"
button_create: "Создать"
diff --git a/config/locales/crowdin/js-vi.yml b/config/locales/crowdin/js-vi.yml
index 60856c46ea82..665f62f99cee 100644
--- a/config/locales/crowdin/js-vi.yml
+++ b/config/locales/crowdin/js-vi.yml
@@ -102,7 +102,7 @@ vi:
button_save: "Lưu"
button_settings: "Cài đặt"
button_uncheck_all: "Bỏ chọn tất cả"
- button_update: "Cập Nhật"
+ button_update: "Cập nhật"
button_export-pdf: "Tải xuống PDF"
button_export-atom: "Tải xuống Atom"
button_create: "Tạo"
diff --git a/config/locales/crowdin/js-zh-CN.yml b/config/locales/crowdin/js-zh-CN.yml
index 0f05cecbe644..e70f8b25452e 100644
--- a/config/locales/crowdin/js-zh-CN.yml
+++ b/config/locales/crowdin/js-zh-CN.yml
@@ -138,8 +138,8 @@ zh-CN:
description_select_work_package: "选择工作包 #%{id}"
description_subwork_package: "子工作包 #%{id}"
editor:
- revisions: "Show local modifications"
- no_revisions: "No local modifications found"
+ revisions: "显示本地修改"
+ no_revisions: "未找到本地修改"
preview: "切换预览模式"
source_code: "切换 Markdown 模式"
error_saving_failed: "保存文档失败,出现以下错误:%{error}"
@@ -278,9 +278,9 @@ zh-CN:
更改可能需要一些时间才能生效。当更新完所有相关工作包时,您将收到通知。
work_packages_settings:
warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
- Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ 将进度计算模式从基于状态改为基于工时,将使% 完成变为不可编辑字段,其值来自工时和剩余工时。% 完成现有值将保留。如果没有 工时和剩余工时的值,则需要这些值才能更改 % 完成。
warning_progress_calculation_mode_change_from_status_to_field_html: >-
- Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
+ 将进度计算模式从基于状态改为基于工时,将使% 完成字段可自由编辑。如果您选择输入工时或剩余工时的值,它们也将与% 完成相关联。更改剩余工时就可以更新% 完成。
warning_progress_calculation_mode_change_from_field_to_status_html: >-
将进度计算模式从基于工时的方式改为基于状态,将会导致所有现有的 %完整的 值丢失,并被与每个状态相关的值所替代。 剩余工时 的现有值也可能被重新计算,以反映这种变化。此操作不可逆转。
custom_actions:
@@ -401,7 +401,7 @@ zh-CN:
label_create: "创建"
label_create_work_package: "创建新工作包"
label_created_by: "创建自"
- label_current: "current"
+ label_current: "当前"
label_date: "日期"
label_date_with_format: "以%{format} 的格式输入 %{date_attribute}"
label_deactivate: "停用"
diff --git a/config/locales/crowdin/js-zh-TW.yml b/config/locales/crowdin/js-zh-TW.yml
index e29caa69fbcb..c9bc01ae3ace 100644
--- a/config/locales/crowdin/js-zh-TW.yml
+++ b/config/locales/crowdin/js-zh-TW.yml
@@ -400,7 +400,7 @@ zh-TW:
label_create: "建立"
label_create_work_package: "建立新的工作項目"
label_created_by: "建立者:"
- label_current: "current"
+ label_current: "目前"
label_date: "日期"
label_date_with_format: "輸入 %{date_attribute} 使用以下格式: %{format}"
label_deactivate: "停用"
diff --git a/config/locales/crowdin/pl.yml b/config/locales/crowdin/pl.yml
index 67fefcc4b648..f8ee29dc4695 100644
--- a/config/locales/crowdin/pl.yml
+++ b/config/locales/crowdin/pl.yml
@@ -818,7 +818,7 @@ pl:
confirmation: "nie pasuje do %{attribute}."
could_not_be_copied: "Nie można było (w pełni) skopiować %{dependency}."
does_not_exist: "nie istnieje."
- error_enterprise_only: "%{action} jest dostępna tylko w OpenProject Enterprise edition"
+ error_enterprise_only: "%{action} jest dostępna tylko w OpenProject Enterprise Edition"
error_unauthorized: "— nie można uzyskac dostępu."
error_readonly: "— podjęto próbę zapisu, ale nie jest zapisywalny."
error_conflict: "Information has been updated by at least one other user in the meantime."
diff --git a/config/locales/crowdin/ro.yml b/config/locales/crowdin/ro.yml
index cf80e3dee3cd..18f916b57fff 100644
--- a/config/locales/crowdin/ro.yml
+++ b/config/locales/crowdin/ro.yml
@@ -2093,7 +2093,7 @@ ro:
label_duplicated_by: "dublat de"
label_duplicate: "duplicat"
label_duplicates: "dublează"
- label_edit: "Editare"
+ label_edit: "Editează"
label_edit_x: "Editare: %{x}"
label_enable_multi_select: "Comutare selecție multiplă"
label_enabled_project_custom_fields: "Câmpuri personalizate activate"
@@ -2145,7 +2145,7 @@ ro:
label_generate_key: "Generare cheie"
label_git_path: "Calea catre directorul .git"
label_greater_or_equal: ">="
- label_group_by: "Grupare după"
+ label_group_by: "Grupează după"
label_group_new: "Grupare nouă"
label_group: "Grup"
label_group_named: "Grup %{name}"
diff --git a/config/locales/crowdin/sl.yml b/config/locales/crowdin/sl.yml
index 28e79a652a23..00fed2c09ece 100644
--- a/config/locales/crowdin/sl.yml
+++ b/config/locales/crowdin/sl.yml
@@ -1502,8 +1502,8 @@ sl:
- "avgust"
- "september"
- "oktober"
- - "November"
- - "December"
+ - "november"
+ - "december"
order:
- :leto
- :mesec
diff --git a/config/locales/crowdin/tr.yml b/config/locales/crowdin/tr.yml
index 688ef6f4531b..68269daef45a 100644
--- a/config/locales/crowdin/tr.yml
+++ b/config/locales/crowdin/tr.yml
@@ -1229,7 +1229,7 @@ tr:
base: "Genel Hata:"
blocks_ids: "Engellenen iş paketlerinin ID'leri"
category: "Kategori"
- comment: "Yorum"
+ comment: "Yorumlar"
comments: "Yorum"
content: "İçerik"
color: "Renk"
diff --git a/config/locales/crowdin/uk.yml b/config/locales/crowdin/uk.yml
index 98c60256fded..1624d8dc48db 100644
--- a/config/locales/crowdin/uk.yml
+++ b/config/locales/crowdin/uk.yml
@@ -2199,7 +2199,7 @@ uk:
label_index_by_title: "Індекс за назвою"
label_information: "Інформація"
label_information_plural: "Інформація"
- label_installation_guides: "Інструкції зі встановлення"
+ label_installation_guides: "Інструкції із встановлення"
label_integer: "Ціле число"
label_internal: "Власне"
label_introduction_video: "Введення відео"
diff --git a/config/locales/crowdin/vi.yml b/config/locales/crowdin/vi.yml
index fff5d7331f19..88766dcd0ed6 100644
--- a/config/locales/crowdin/vi.yml
+++ b/config/locales/crowdin/vi.yml
@@ -2064,7 +2064,7 @@ vi:
label_file_plural: "Tệp"
label_filter_add: "Thêm bộ lọc"
label_filter: "Bộ lọc"
- label_filter_plural: "Bộ lọc"
+ label_filter_plural: "Các bộ lọc"
label_filters_toggle: "Hiển thị/ẩn bộ lọc"
label_float: "Số thực"
label_folder: "Thư mục"
diff --git a/config/locales/crowdin/zh-CN.seeders.yml b/config/locales/crowdin/zh-CN.seeders.yml
index 037d46169ec8..64166d212273 100644
--- a/config/locales/crowdin/zh-CN.seeders.yml
+++ b/config/locales/crowdin/zh-CN.seeders.yml
@@ -81,7 +81,7 @@ zh-CN:
demo-project:
name: 演示项目
status_explanation: 所有任务都按计划进行。相关人员均知晓各自任务。系统已完全建立。
- description: 这是对此演示项目目标的简短摘要。
+ description: 这是对此演示 Scrum 项目目标的简短摘要。
news:
item_0:
title: 欢迎来到您的演示项目
@@ -199,7 +199,7 @@ zh-CN:
scrum-project:
name: Scrum 项目
status_explanation: 所有任务都按计划进行。相关人员均知晓各自任务。系统已完全建立。
- description: 这是对此演示Scrum项目目标的简短摘要。
+ description: 这是对此演示 Scrum 项目目标的简短摘要。
news:
item_0:
title: 欢迎来到您的 Scrum 演示项目
diff --git a/config/locales/crowdin/zh-CN.yml b/config/locales/crowdin/zh-CN.yml
index fb90dccf70c5..396e2ec5554b 100644
--- a/config/locales/crowdin/zh-CN.yml
+++ b/config/locales/crowdin/zh-CN.yml
@@ -67,7 +67,7 @@ zh-CN:
text: "您确定要删除当前使用的企业版令牌吗?"
title: "删除令牌"
replace_token: "替换您当前的支持令牌"
- order: "订购本地部署的 Enterprise edition"
+ order: "订购本地部署版的 Enterprise edition"
paste: "粘贴您企业版的支持令牌"
required_for_feature: "此功能仅限具激活的企业版支持令牌的订阅者使用。"
enterprise_link: "如需了解详细信息,请单击此处。"
@@ -1029,10 +1029,10 @@ zh-CN:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
- must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "工时与剩余工时不匹配"
+ cannot_be_set_when_work_is_zero: "当工时为 0h 时无法设置"
+ must_be_set_when_remaining_work_is_set: "设置“剩余工时”时必填。"
+ must_be_set_when_work_and_remaining_work_are_set: "设置“工时”和“剩余工时”时必填。"
inclusion: "必须介于 0 和 100 之间。"
due_date:
not_start_date: "不是在开始日期开始,尽管这是必需的里程碑。"
@@ -1062,17 +1062,17 @@ zh-CN:
does_not_exist: "指定的类别不存在。"
estimated_hours:
not_a_number: "不是有效的持续时间。"
- cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
+ cant_be_inferior_to_remaining_work: "不能低于剩余工时。"
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "设置“剩余工时”和“% 完成”时必填。"
remaining_hours:
not_a_number: "不是有效的持续时间。"
- cant_exceed_work: "cannot be higher than Work."
- must_be_set_when_work_is_set: "required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ cant_exceed_work: "不能高于工时。"
+ must_be_set_when_work_is_set: "设置“工时”时必填。"
+ must_be_set_when_work_and_percent_complete_are_set: "设置“工时”和“% 完成”时必填。"
must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
- must be 0h when Work is set and % Complete is 100%.
+ 当“工时”已设置,且“% 完成”为 100%时,必须为0h。
must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
- must be empty when Work is empty and % Complete is 100%.
+ 当“工时”为空,且“% 完成”为 100%时,必须为空。
readonly_status: "工作包处于只读状态,因此无法更改其属性。"
type:
attributes:
@@ -2316,7 +2316,7 @@ zh-CN:
label_revision_id: "修订版本 %{value}"
label_revision_plural: "修订"
label_roadmap: "路线图"
- label_roadmap_edit: "编辑路线图 %{name}"
+ label_roadmap_edit: "编辑路线图%{name}"
label_roadmap_due_in: "%{value} 到期"
label_roadmap_no_work_packages: "该版本没有工作包。"
label_roadmap_overdue: "%{value} 超时"
@@ -2965,7 +2965,7 @@ zh-CN:
managed: "在 OpenProject 中创建新的存储库"
storage:
not_available: "磁盘存储开销不可用于此存储库。"
- update_timeout: "在 N 分钟内保留存储库最后所需磁盘空间的信息。由于计算存储库所需的磁盘空间可能增加系统开销,增加该值可以减少性能影响。"
+ update_timeout: "在 N 分钟内保留存储库最后所需的磁盘空间信息。由于计算存储库所需的磁盘空间可能增加系统开销,增加该值可以减少性能影响。"
oauth_application_details: "关闭此窗口后,将无法再次访问客户端密钥值。请将这些值复制到 Nextcloud OpenProject 集成设置中:"
oauth_application_details_link_text: "转到设置页面"
setup_documentation_details: "如果您在配置新文件存储方面需要帮助,请查看文档:"
@@ -3074,9 +3074,9 @@ zh-CN:
setting_work_package_done_ratio_field: "基于工时"
setting_work_package_done_ratio_status: "基于状态"
setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
- In work-based mode, % Complete is calculated from how much work is done in relation to total work. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ 在基于工时模式下,“% 完成”是根据已完成的工时占总工时的比例计算出来的。在基于状态模式下,每个状态都有一个与之相关的“% 完成”。更改状态将改变“% 完成”。
setting_work_package_done_ratio_explanation_html: >
- In work-based mode, % Complete can be freely set to any value. If you optionally enter a value for Work, Remaining work will automatically be derived. In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete.
+ 在基于工作的模式下,“% 完成”可以自由设置为任何值。如果选择输入 "工时 "值,则会自动得出 "剩余工时"。在基于状态的模式下,每个状态都有一个与之相关的“% 完成”值。更改状态将改变“% 完成”。
setting_work_package_properties: "工作包属性"
setting_work_package_startdate_is_adddate: "使用当前日期作为新工作包的开始日期"
setting_work_packages_projects_export_limit: "工作包/项目导出限制"
@@ -3116,7 +3116,7 @@ zh-CN:
setting_session_ttl_hint: "当设置的值低于5时,其作用类似于禁用。"
setting_session_ttl_enabled: "会话过期"
setting_start_of_week: "一周起始日"
- setting_sys_api_enabled: "启用版本库管理 web 服务"
+ setting_sys_api_enabled: "启用存储库管理网页服务"
setting_sys_api_description: "存储库管理网页服务提供了集成的,用户授权的存储库访问。"
setting_time_format: "时间"
setting_accessibility_mode_for_anonymous: "为匿名用户启用辅助功能模式"
@@ -3428,7 +3428,7 @@ zh-CN:
warning_user_limit_reached_admin: >
添加额外的用户将超出当前限制。请升级您的计划,以确保外部用户能够访问此实例。
warning_user_limit_reached_instructions: >
- 您达到了用户限制(%{current}/%{max}活跃用户)。 请联系sales@openproject.com以升级您的Enterprise edition计划并添加其他用户。
+ 您已达到用户限制(%{current}/%{max} 活跃用户)。请联系 sales@openproject.com 升级您的企业版计划以添加额外用户。
warning_protocol_mismatch_html: >
warning_bar:
@@ -3457,26 +3457,26 @@ zh-CN:
progress:
label_note: "注意:"
modal:
- work_based_help_text: "Each field is automatically calculated from the two others when possible."
- work_based_help_text_pre_14_4_without_percent_complete_edition: "% Complete is automatically derived from Work and Remaining work."
+ work_based_help_text: "在可能的情况下,每个字段都会根据另外两个字段自动计算。"
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "“% 完成”由 \"工时\" 和 \"剩余工时\" 自动得出。"
status_based_help_text: "完成百分比由工作包状态设定。"
migration_warning_text: "在基于工时的进度计算模式下,完成百分比不能手动设置,而是与工时绑定。现有值已被保留,但无法编辑。请先输入工时。"
derivation_hints:
done_ratio:
- cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
- cleared_because_work_is_0h: "Cleared because Work is 0h."
- derived: "Derived from Work and Remaining work."
+ cleared_because_remaining_work_is_empty: "已清空,因为“剩余工时”为空。"
+ cleared_because_work_is_0h: "已清空,因为 \"工时 \"为 0h。"
+ derived: "源自“工时”和“剩余工时”。"
estimated_hours:
- cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty."
- derived: "Derived from Remaining work and % Complete."
- same_as_remaining_work: "Set to same value as Remaining work."
+ cleared_because_remaining_work_is_empty: "已清空,因为“剩余工时”为空。"
+ derived: "由“剩余工时”和“% 完成”得出"
+ same_as_remaining_work: "设置为与“剩余工时”相同的值。"
remaining_hours:
- cleared_because_work_is_empty: "Cleared because Work is empty."
- cleared_because_percent_complete_is_empty: "Cleared because % Complete is empty."
- decreased_like_work: "Decreased by the same amount as Work."
- derived: "Derived from Work and % Complete."
- increased_like_work: "Increased by the same amount as Work."
- same_as_work: "Set to same value as Work."
+ cleared_because_work_is_empty: "已清空,因为 \"工时 \"为空。"
+ cleared_because_percent_complete_is_empty: "已清空,因为“% 完成”为空。"
+ decreased_like_work: "减少与 \"工时 \"相同的数额。"
+ derived: "由“工时”和“% 完成”得出"
+ increased_like_work: "增加与 \"工时 \"相同的数额。"
+ same_as_work: "设置为与 \"工时 \"相同的值。"
permissions:
comment: "评论"
comment_description: "可以查看和评论该工作包。"
diff --git a/config/locales/crowdin/zh-TW.yml b/config/locales/crowdin/zh-TW.yml
index 2d3174e08898..2a2764865450 100644
--- a/config/locales/crowdin/zh-TW.yml
+++ b/config/locales/crowdin/zh-TW.yml
@@ -2060,7 +2060,7 @@ zh-TW:
label_file_plural: "檔案"
label_filter_add: "新增條件"
label_filter: "篩選條件"
- label_filter_plural: "篩選器"
+ label_filter_plural: "篩選條件"
label_filters_toggle: "顯示/隱藏篩選條件"
label_float: "浮點數"
label_folder: "資料夾"
@@ -2073,7 +2073,7 @@ zh-TW:
label_generate_key: "產生一個金鑰"
label_git_path: ".git 目錄的路徑"
label_greater_or_equal: ">="
- label_group_by: "分組依據"
+ label_group_by: "分類"
label_group_new: "新增群組"
label_group: "群組"
label_group_named: "群組名稱 %{name}"
@@ -2084,7 +2084,7 @@ zh-TW:
label_history: "歷史"
label_hierarchy_leaf: "頁面結構頁"
label_home: "Home"
- label_subject_or_id: "主旨或 id"
+ label_subject_or_id: "名稱或 id"
label_calendar_subscriptions: "訂閱行事曆"
label_identifier: "識別碼"
label_in: "在"
@@ -2127,7 +2127,7 @@ zh-TW:
label_latest_revision_plural: "最新版本"
label_ldap_authentication: "LDAP 認證"
label_learn_more: "了解更多"
- label_less_or_equal: "<="
+ label_less_or_equal: "之後"
label_less_than_ago: "幾天內"
label_link_url: "連結(URL)"
label_list: "清單"
diff --git a/modules/backlogs/config/locales/crowdin/zh-TW.yml b/modules/backlogs/config/locales/crowdin/zh-TW.yml
index aaef165b374f..6a7b6d653910 100644
--- a/modules/backlogs/config/locales/crowdin/zh-TW.yml
+++ b/modules/backlogs/config/locales/crowdin/zh-TW.yml
@@ -21,7 +21,7 @@
#++
zh-TW:
plugin_openproject_backlogs:
- name: "OpenProject代辦事項"
+ name: "OpenProject待辦事項"
description: "此模組新增了讓敏捷團隊能夠在 Scrum 專案中使用 OpenProject 的功能。"
activerecord:
attributes:
diff --git a/modules/bim/config/locales/crowdin/fr.yml b/modules/bim/config/locales/crowdin/fr.yml
index 1be78163d4bc..9e4ab945797c 100644
--- a/modules/bim/config/locales/crowdin/fr.yml
+++ b/modules/bim/config/locales/crowdin/fr.yml
@@ -58,7 +58,7 @@ fr:
perform_description: "Voulez-vous importer ou mettre à jour les problèmes repris ci-dessus ?"
replace_with_system_user: 'Les remplacer par l''utilisateur "Système"'
import_as_system_user: 'Les importer comme utilisateur "Système".'
- what_to_do: "Que voulez-vous faire?"
+ what_to_do: "Que voulez-vous faire ?"
work_package_has_newer_changes: "Obsolète ! Ce sujet n'a pas été mis à jour, car les derniers changements sur le serveur étaient plus récents que la \"ModifiedDate\" du sujet importé. Toutefois, les commentaires sur le sujet ont été importés."
bcf_file_not_found: "Impossible de localiser le fichier BCF. Veuillez recommencer le processus de téléversement."
export:
diff --git a/modules/budgets/config/locales/crowdin/cs.yml b/modules/budgets/config/locales/crowdin/cs.yml
index 231267126ec3..72dd2ee8925f 100644
--- a/modules/budgets/config/locales/crowdin/cs.yml
+++ b/modules/budgets/config/locales/crowdin/cs.yml
@@ -27,7 +27,7 @@ cs:
budget:
author: "Autor"
available: "Dostupné"
- budget: "Rozpočet"
+ budget: "Plánované"
budget_ratio: "Stráveno (poměr)"
description: "Popis"
spent: "Strávený čas"
diff --git a/modules/ldap_groups/config/locales/crowdin/zh-CN.yml b/modules/ldap_groups/config/locales/crowdin/zh-CN.yml
index 4d0259eed6ce..d551c0a9e91e 100644
--- a/modules/ldap_groups/config/locales/crowdin/zh-CN.yml
+++ b/modules/ldap_groups/config/locales/crowdin/zh-CN.yml
@@ -1,7 +1,7 @@
zh-CN:
plugin_openproject_ldap_groups:
name: "OpenProject LDAP 组"
- description: "LDAP 组成员同步。"
+ description: "LDAP组成员同步。"
activerecord:
attributes:
ldap_groups/synchronized_group:
diff --git a/modules/ldap_groups/config/locales/crowdin/zh-TW.yml b/modules/ldap_groups/config/locales/crowdin/zh-TW.yml
index 9f9da07a50a7..d7227e6063ba 100644
--- a/modules/ldap_groups/config/locales/crowdin/zh-TW.yml
+++ b/modules/ldap_groups/config/locales/crowdin/zh-TW.yml
@@ -9,7 +9,7 @@ zh-TW:
ldap_auth_source: 'LDAP 連線'
sync_users: '同步使用者'
ldap_groups/synchronized_filter:
- filter_string: '簡約登入目錄制約(LDAP)篩選'
+ filter_string: 'LDAP篩選條件'
ldap_auth_source: 'LDAP 連線'
group_name_attribute: "群組名字屬性"
sync_users: '同步使用者'
diff --git a/modules/meeting/config/locales/crowdin/cs.yml b/modules/meeting/config/locales/crowdin/cs.yml
index 4c5affff2da4..f3d5a55737bb 100644
--- a/modules/meeting/config/locales/crowdin/cs.yml
+++ b/modules/meeting/config/locales/crowdin/cs.yml
@@ -139,7 +139,7 @@ cs:
types:
classic: "Klasické"
classic_text: "Uspořádat schůzku do formátů textového programu a protokolu."
- structured: "Dynamická"
+ structured: "Dynamický"
structured_text: "Uspořádat schůzku jako seznam bodů pořadu jednání, případně je propojit s pracovním balíčkem."
structured_text_copy: "Kopírování schůzky v současné době nezkopíruje související body pořadu jednání, jen podrobnosti"
copied: "Zkopírováno ze schůzky #%{id}"
@@ -153,7 +153,7 @@ cs:
notice_meeting_updated: "This page has been updated by someone else. Reload to view changes."
permission_create_meetings: "Vytvořit schůzku\n"
permission_edit_meetings: "Upravit schůzku"
- permission_delete_meetings: "Smazat schůzku"
+ permission_delete_meetings: "Odstranit schůzky"
permission_view_meetings: "Zobrazit schůzky"
permission_create_meeting_agendas: "Vytvořit agendy schůzek"
permission_create_meeting_agendas_explanation: "Umožňuje upravovat obsah programu klasické schůzky."
diff --git a/modules/meeting/config/locales/crowdin/zh-TW.yml b/modules/meeting/config/locales/crowdin/zh-TW.yml
index b2d17c875bb5..96ddbd052990 100644
--- a/modules/meeting/config/locales/crowdin/zh-TW.yml
+++ b/modules/meeting/config/locales/crowdin/zh-TW.yml
@@ -156,7 +156,7 @@ zh-TW:
permission_create_meeting_agendas_explanation: "允許編輯傳統會議的議程。"
permission_manage_agendas: "管理議程"
permission_manage_agendas_explanation: "允許編輯動態會議的議程項目。"
- permission_close_meeting_agendas: "定案會議大綱"
+ permission_close_meeting_agendas: "結束會議大綱"
permission_send_meeting_agendas_notification: "傳送會議大綱審閱通知"
permission_create_meeting_minutes: "管理會議記錄"
permission_send_meeting_minutes_notification: "傳送會議記錄審閱通知"
diff --git a/modules/reporting/config/locales/crowdin/ro.yml b/modules/reporting/config/locales/crowdin/ro.yml
index 5ef2b8b85bf6..f7cd91798e51 100644
--- a/modules/reporting/config/locales/crowdin/ro.yml
+++ b/modules/reporting/config/locales/crowdin/ro.yml
@@ -68,7 +68,7 @@ ro:
label_filter: "Filtrare"
label_filter_add: "Adăugare filtru"
label_filter_plural: "Filtre"
- label_group_by: "Grupare după"
+ label_group_by: "Grupează după"
label_group_by_add: "Adăugați atributul Group-by"
label_inactive: "Inactiv"
label_no: "Nu"
diff --git a/modules/reporting/config/locales/crowdin/zh-TW.yml b/modules/reporting/config/locales/crowdin/zh-TW.yml
index 61c3f7c6d1c7..62f33a5bd15d 100644
--- a/modules/reporting/config/locales/crowdin/zh-TW.yml
+++ b/modules/reporting/config/locales/crowdin/zh-TW.yml
@@ -51,7 +51,7 @@ zh-TW:
label_money: "現金價值"
label_month_reporting: "月"
label_new_report: "新建成本報表"
- label_open: "進行中"
+ label_open: "開啟"
label_operator: "操作員"
label_private_report_plural: "私密成本報告"
label_progress_bar_explanation: "產生報告中..."
@@ -68,7 +68,7 @@ zh-TW:
label_filter: "篩選條件"
label_filter_add: "新增篩選條件"
label_filter_plural: "篩選條件"
- label_group_by: "分組依據"
+ label_group_by: "分類"
label_group_by_add: "新增分組依據屬性"
label_inactive: "«不活動»"
label_no: "否"
diff --git a/modules/team_planner/config/locales/crowdin/js-fr.yml b/modules/team_planner/config/locales/crowdin/js-fr.yml
index 67a93cb353c0..658122291596 100644
--- a/modules/team_planner/config/locales/crowdin/js-fr.yml
+++ b/modules/team_planner/config/locales/crowdin/js-fr.yml
@@ -18,7 +18,7 @@ fr:
today: 'Aujourd''hui'
drag_here_to_remove: 'Faites glisser ici pour supprimer le responsable et les dates de début et de fin.'
cannot_drag_here: 'Impossible de supprimer le lot de travaux en raison des autorisations ou des restrictions d''édition.'
- cannot_drag_to_non_working_day: 'Ce lot de travail ne peut pas démarrer/terminer sur un jour non ouvré.'
+ cannot_drag_to_non_working_day: 'Ce lot de travaux ne peut pas démarrer/terminer sur un jour non ouvré.'
quick_add:
empty_state: 'Utilisez le champ de recherche pour trouver des lots de travaux et faites-les glisser vers le planificateur pour l''assigner à quelqu''un et définir des dates de début et de fin.'
search_placeholder: 'Rechercher...'
diff --git a/modules/two_factor_authentication/config/locales/crowdin/ro.yml b/modules/two_factor_authentication/config/locales/crowdin/ro.yml
index ed1e50f455f2..717e80c0e557 100644
--- a/modules/two_factor_authentication/config/locales/crowdin/ro.yml
+++ b/modules/two_factor_authentication/config/locales/crowdin/ro.yml
@@ -174,7 +174,7 @@ ro:
label_expiration_hint: "%{date} sau la deconectare"
label_actions: "Acțiuni"
label_confirmed: "Confirmat"
- button_continue: "Continuaţi"
+ button_continue: "Continuă"
button_make_default: "Marcați ca implicit"
label_unverified_phone: "Telefonul mobil nu a fost încă verificat"
notice_phone_number_format: "Vă rugăm să introduceți numărul în următorul format: +XX XXXXXXXX."
diff --git a/modules/two_factor_authentication/config/locales/crowdin/ru.yml b/modules/two_factor_authentication/config/locales/crowdin/ru.yml
index c8b20adea521..1b98cf398196 100644
--- a/modules/two_factor_authentication/config/locales/crowdin/ru.yml
+++ b/modules/two_factor_authentication/config/locales/crowdin/ru.yml
@@ -174,7 +174,7 @@ ru:
label_expiration_hint: "%{date} или при выходе из системы"
label_actions: "Действия"
label_confirmed: "Подтвержден"
- button_continue: "Далее"
+ button_continue: "Продолжить"
button_make_default: "Задать по умолчанию"
label_unverified_phone: "Сотовый телефон еще не подтвержден"
notice_phone_number_format: "Введите номер в следующем формате: +XX XXXXXXXX."
diff --git a/modules/two_factor_authentication/config/locales/crowdin/uk.yml b/modules/two_factor_authentication/config/locales/crowdin/uk.yml
index b66b4ca73912..08d5f4a4cbd9 100644
--- a/modules/two_factor_authentication/config/locales/crowdin/uk.yml
+++ b/modules/two_factor_authentication/config/locales/crowdin/uk.yml
@@ -115,7 +115,7 @@ uk:
failed_to_delete: "Не вдалося видалити пристрій 2FA."
is_default_cannot_delete: "Пристрій позначено як типовий і його не можна видалити через активну політику безпеки. Перед видаленням позначте інший пристрій як стандартний."
not_existing: "Для вашого облікового запису не зареєстровано жодного пристрою 2FA."
- 2fa_from_input: Введіть код, що надійшов на пристрій %{device_name}, щоб підтвердити свою особу.
+ 2fa_from_input: Введіть код, отриманий на пристрій %{device_name}, щоб підтвердити свою особу.
2fa_from_webauthn: Укажіть пристрій WebAuthn %{device_name}. Якщо це USB-пристрій, переконайтеся, що його підключено, і торкніться його. Потім натисніть кнопку входу.
webauthn:
title: "WebAuthn"
diff --git a/modules/xls_export/config/locales/crowdin/zh-CN.yml b/modules/xls_export/config/locales/crowdin/zh-CN.yml
index 31c8d3cdd710..59230e603ecf 100644
--- a/modules/xls_export/config/locales/crowdin/zh-CN.yml
+++ b/modules/xls_export/config/locales/crowdin/zh-CN.yml
@@ -13,4 +13,4 @@ zh-CN:
xls_with_relations: "带关系的 XLS"
xls_export:
child_of: 此项的子项
- parent_of: 此项的父项
+ parent_of: 此项的父级
From 4353abaee7f9a50400730a45823351171e748480 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Oliver=20G=C3=BCnther?=
Date: Thu, 29 Aug 2024 17:21:54 +0200
Subject: [PATCH 026/147] Show progressBar instead of intermediate loading
dialog
---
.../controllers/async-dialog.controller.ts | 41 +++----------------
frontend/src/turbo/helpers.ts | 11 +++++
frontend/src/typings/shims.d.ts | 6 +++
lookbook/docs/patterns/05-dialogs.md.erb | 1 +
4 files changed, 24 insertions(+), 35 deletions(-)
create mode 100644 frontend/src/turbo/helpers.ts
diff --git a/frontend/src/stimulus/controllers/async-dialog.controller.ts b/frontend/src/stimulus/controllers/async-dialog.controller.ts
index 3f65e3b6e655..2d0892701fe3 100644
--- a/frontend/src/stimulus/controllers/async-dialog.controller.ts
+++ b/frontend/src/stimulus/controllers/async-dialog.controller.ts
@@ -30,10 +30,9 @@
import { ApplicationController } from 'stimulus-use';
import { renderStreamMessage } from '@hotwired/turbo';
+import { TurboHelpers } from '../../turbo/helpers';
export default class AsyncDialogController extends ApplicationController {
- private loadingDialog:HTMLDialogElement|null;
-
connect() {
this.element.addEventListener('click', (e) => {
e.preventDefault();
@@ -42,48 +41,20 @@ export default class AsyncDialogController extends ApplicationController {
}
triggerTurboStream():void {
- let loaded = false;
-
- setTimeout(() => {
- if (!loaded) {
- this.addLoading();
- }
- }, 100);
+ TurboHelpers.showProgressBar();
- fetch(this.href, {
+ void fetch(this.href, {
method: this.method,
headers: {
Accept: 'text/vnd.turbo-stream.html',
},
}).then((r) => r.text())
.then((html) => {
- loaded = true;
renderStreamMessage(html);
})
- .finally(() => this.removeLoading());
- }
-
- removeLoading() {
- this.loadingDialog?.remove();
- }
-
- addLoading() {
- this.removeLoading();
- const dialog = document.createElement('dialog');
- dialog.classList.add('Overlay', 'Overlay--size-medium', 'Overlay--motion-scaleFade');
- dialog.style.height = '150px';
- dialog.style.display = 'grid';
- dialog.style.placeContent = 'center';
- dialog.id = 'loading';
- dialog.innerHTML = `
-
- `;
- document.body.appendChild(dialog);
- dialog.showModal();
- this.loadingDialog = dialog;
+ .finally(() => {
+ TurboHelpers.hideProgressBar();
+ });
}
get href() {
diff --git a/frontend/src/turbo/helpers.ts b/frontend/src/turbo/helpers.ts
new file mode 100644
index 000000000000..5922eb37f443
--- /dev/null
+++ b/frontend/src/turbo/helpers.ts
@@ -0,0 +1,11 @@
+import * as Turbo from '@hotwired/turbo';
+
+export namespace TurboHelpers {
+ export function showProgressBar() {
+ Turbo.session.adapter.formSubmissionStarted();
+ }
+
+ export function hideProgressBar() {
+ Turbo.session.adapter.formSubmissionFinished();
+ }
+}
diff --git a/frontend/src/typings/shims.d.ts b/frontend/src/typings/shims.d.ts
index c3552ccee51c..d00919774d9e 100644
--- a/frontend/src/typings/shims.d.ts
+++ b/frontend/src/typings/shims.d.ts
@@ -29,8 +29,14 @@ declare module 'dom-autoscroller';
declare module 'core-vendor/enjoyhint';
declare module '@hotwired/turbo' {
+ interface BrowserAdapter {
+ formSubmissionStarted:() => void;
+ formSubmissionFinished:() => void;
+ }
+
export const session:{
drive:boolean;
+ adapter:BrowserAdapter;
};
export const navigator:{
diff --git a/lookbook/docs/patterns/05-dialogs.md.erb b/lookbook/docs/patterns/05-dialogs.md.erb
index 12e969038681..7890b6183e24 100644
--- a/lookbook/docs/patterns/05-dialogs.md.erb
+++ b/lookbook/docs/patterns/05-dialogs.md.erb
@@ -24,6 +24,7 @@ end
```
On the Rails controller you wish to render the dialog, you need to respond to the request with the dialog content.
+The async-controller stimulus controller will ensure that a loading progress bar will be shown on the top of the page.
```ruby
class TestController < ApplicationControler
From 4e22be699b78ba91b41d76640788aab1473c3bfe Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 30 Aug 2024 05:38:21 +0000
Subject: [PATCH 027/147] build(deps): bump the angular group in /frontend with
2 updates
Bumps the angular group in /frontend with 2 updates: [@angular/cli](https://github.com/angular/angular-cli) and [@angular-devkit/build-angular](https://github.com/angular/angular-cli).
Updates `@angular/cli` from 17.3.8 to 17.3.9
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/17.3.8...17.3.9)
Updates `@angular-devkit/build-angular` from 17.3.8 to 17.3.9
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/17.3.8...17.3.9)
---
updated-dependencies:
- dependency-name: "@angular/cli"
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: angular
- dependency-name: "@angular-devkit/build-angular"
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: angular
...
Signed-off-by: dependabot[bot]
---
frontend/package-lock.json | 307 ++++++++++++++++++-------------------
1 file changed, 145 insertions(+), 162 deletions(-)
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index 13f2ba09074e..0bb34eab1273 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -261,11 +261,11 @@
}
},
"node_modules/@angular-devkit/architect": {
- "version": "0.1703.8",
- "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1703.8.tgz",
- "integrity": "sha512-lKxwG4/QABXZvJpqeSIn/kAwnY6MM9HdHZUV+o5o3UiTi+vO8rZApG4CCaITH3Bxebm7Nam7Xbk8RuukC5rq6g==",
+ "version": "0.1703.9",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1703.9.tgz",
+ "integrity": "sha512-kEPfTOVnzrJxPGTvaXy8653HU9Fucxttx9gVfQR1yafs+yIEGx3fKGKe89YPmaEay32bIm7ZUpxDF1FO14nkdQ==",
"dependencies": {
- "@angular-devkit/core": "17.3.8",
+ "@angular-devkit/core": "17.3.9",
"rxjs": "7.8.1"
},
"engines": {
@@ -275,14 +275,14 @@
}
},
"node_modules/@angular-devkit/build-angular": {
- "version": "17.3.8",
- "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-17.3.8.tgz",
- "integrity": "sha512-ixsdXggWaFRP7Jvxd0AMukImnePuGflT9Yy7NJ9/y0cL/k//S/3RnkQv5i411KzN+7D4RIbNkRGGTYeqH24zlg==",
+ "version": "17.3.9",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-17.3.9.tgz",
+ "integrity": "sha512-EuAPSC4c2DSJLlL4ieviKLx1faTyY+ymWycq6KFwoxu1FgWly/dqBeWyXccYinLhPVZmoh6+A/5S4YWXlOGSnA==",
"dependencies": {
"@ampproject/remapping": "2.3.0",
- "@angular-devkit/architect": "0.1703.8",
- "@angular-devkit/build-webpack": "0.1703.8",
- "@angular-devkit/core": "17.3.8",
+ "@angular-devkit/architect": "0.1703.9",
+ "@angular-devkit/build-webpack": "0.1703.9",
+ "@angular-devkit/core": "17.3.9",
"@babel/core": "7.24.0",
"@babel/generator": "7.23.6",
"@babel/helper-annotate-as-pure": "7.22.5",
@@ -293,7 +293,7 @@
"@babel/preset-env": "7.24.0",
"@babel/runtime": "7.24.0",
"@discoveryjs/json-ext": "0.5.7",
- "@ngtools/webpack": "17.3.8",
+ "@ngtools/webpack": "17.3.9",
"@vitejs/plugin-basic-ssl": "1.1.0",
"ansi-colors": "4.1.3",
"autoprefixer": "10.4.18",
@@ -337,7 +337,7 @@
"undici": "6.11.1",
"vite": "5.1.7",
"watchpack": "2.4.0",
- "webpack": "5.90.3",
+ "webpack": "5.94.0",
"webpack-dev-middleware": "6.1.2",
"webpack-dev-server": "4.15.1",
"webpack-merge": "5.10.0",
@@ -582,11 +582,11 @@
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/@angular-devkit/build-webpack": {
- "version": "0.1703.8",
- "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1703.8.tgz",
- "integrity": "sha512-9u6fl8VVOxcLOEMzrUeaybSvi9hSLSRucHnybneYrabsgreDo32tuy/4G8p6YAHQjpWEj9jvF9Um13ertdni5Q==",
+ "version": "0.1703.9",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1703.9.tgz",
+ "integrity": "sha512-3b0LND39Nc+DwCQ0N7Tbsd7RAFWTeIc4VDwk/7RO8EMYTP5Kfgr/TK66nwTBypHsjmD69IMKHZZaZuiDfGfx2A==",
"dependencies": {
- "@angular-devkit/architect": "0.1703.8",
+ "@angular-devkit/architect": "0.1703.9",
"rxjs": "7.8.1"
},
"engines": {
@@ -600,9 +600,9 @@
}
},
"node_modules/@angular-devkit/core": {
- "version": "17.3.8",
- "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.8.tgz",
- "integrity": "sha512-Q8q0voCGudbdCgJ7lXdnyaxKHbNQBARH68zPQV72WT8NWy+Gw/tys870i6L58NWbBaCJEUcIj/kb6KoakSRu+Q==",
+ "version": "17.3.9",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.9.tgz",
+ "integrity": "sha512-/iKyn5YT7NW5ylrg9yufUydS8byExeQ2HHIwFC4Ebwb/JYYCz+k4tBf2LdP+zXpemDpLznXTQGWia0/yJjG8Vg==",
"dependencies": {
"ajv": "8.12.0",
"ajv-formats": "2.1.1",
@@ -637,11 +637,11 @@
}
},
"node_modules/@angular-devkit/schematics": {
- "version": "17.3.8",
- "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.3.8.tgz",
- "integrity": "sha512-QRVEYpIfgkprNHc916JlPuNbLzOgrm9DZalHasnLUz4P6g7pR21olb8YCyM2OTJjombNhya9ZpckcADU5Qyvlg==",
+ "version": "17.3.9",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.3.9.tgz",
+ "integrity": "sha512-9qg+uWywgAtaQlvbnCQv47hcL6ZuA+d9ucgZ0upZftBllZ2vp5WIthCPb2mB0uBkj84Csmtz9MsErFjOQtTj4g==",
"dependencies": {
- "@angular-devkit/core": "17.3.8",
+ "@angular-devkit/core": "17.3.9",
"jsonc-parser": "3.2.1",
"magic-string": "0.30.8",
"ora": "5.4.1",
@@ -888,14 +888,14 @@
}
},
"node_modules/@angular/cli": {
- "version": "17.3.8",
- "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-17.3.8.tgz",
- "integrity": "sha512-X5ZOQ6ZTKVHjhIsfl32ZRqbs+FUoeHLbT7x4fh2Os/8ObDDwrUcCJPqxe2b2RB5E2d0vepYigknHeLE7gwzlNQ==",
- "dependencies": {
- "@angular-devkit/architect": "0.1703.8",
- "@angular-devkit/core": "17.3.8",
- "@angular-devkit/schematics": "17.3.8",
- "@schematics/angular": "17.3.8",
+ "version": "17.3.9",
+ "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-17.3.9.tgz",
+ "integrity": "sha512-b5RGu5RO4VKZlMQDatwABAn1qocgD9u4IrGN2dvHDcrz5apTKYftUdGyG42vngyDNBCg1mWkSDQEWK4f2HfuGg==",
+ "dependencies": {
+ "@angular-devkit/architect": "0.1703.9",
+ "@angular-devkit/core": "17.3.9",
+ "@angular-devkit/schematics": "17.3.9",
+ "@schematics/angular": "17.3.9",
"@yarnpkg/lockfile": "1.1.0",
"ansi-colors": "4.1.3",
"ini": "4.1.2",
@@ -4071,9 +4071,9 @@
}
},
"node_modules/@ngtools/webpack": {
- "version": "17.3.8",
- "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.3.8.tgz",
- "integrity": "sha512-CjSVVa/9fzMpEDQP01SC4colKCbZwj7vUq0H2bivp8jVsmd21x9Fu0gDBH0Y9NdfAIm4eGZvmiZKMII3vIOaYQ==",
+ "version": "17.3.9",
+ "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.3.9.tgz",
+ "integrity": "sha512-2+NvEQuYKRWdZaJbRJWEnR48tpW0uYbhwfHBHLDI9Kazb3mb0oAwYBVXdq+TtDLBypXnMsFpCewjRHTvkVx4/A==",
"engines": {
"node": "^18.13.0 || >=20.9.0",
"npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
@@ -5132,12 +5132,12 @@
]
},
"node_modules/@schematics/angular": {
- "version": "17.3.8",
- "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.3.8.tgz",
- "integrity": "sha512-2g4OmSyE9YGq50Uj7fNI26P/TSAFJ7ZuirwTF2O7Xc4XRQ29/tYIIqhezpNlTb6rlYblcQuMcUZBrMfWJHcqJw==",
+ "version": "17.3.9",
+ "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.3.9.tgz",
+ "integrity": "sha512-q6N8mbcYC6cgPyjTrMH7ehULQoUUwEYN4g7uo4ylZ/PFklSLJvpSp4BuuxANgW449qHSBvQfdIoui9ayAUXQzA==",
"dependencies": {
- "@angular-devkit/core": "17.3.8",
- "@angular-devkit/schematics": "17.3.8",
+ "@angular-devkit/core": "17.3.9",
+ "@angular-devkit/schematics": "17.3.9",
"jsonc-parser": "3.2.1"
},
"engines": {
@@ -5470,24 +5470,6 @@
"integrity": "sha512-jojr2JVJB8DawAKXApGnollMvVOMyiMKpchH8gLeoExx35Eq0BQ4WgAiAHoBoEn7h/9eDrIl0yz//cM6ALIJbg==",
"dev": true
},
- "node_modules/@types/eslint": {
- "version": "8.56.9",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.9.tgz",
- "integrity": "sha512-W4W3KcqzjJ0sHg2vAq9vfml6OhsJ53TcUjUqfzzZf/EChUtwspszj/S0pzMxnfRcO55/iGq47dscXw71Fxc4Zg==",
- "dependencies": {
- "@types/estree": "*",
- "@types/json-schema": "*"
- }
- },
- "node_modules/@types/eslint-scope": {
- "version": "3.7.7",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
- "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
- "dependencies": {
- "@types/eslint": "*",
- "@types/estree": "*"
- }
- },
"node_modules/@types/estree": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
@@ -6646,10 +6628,10 @@
"node": ">=0.4.0"
}
},
- "node_modules/acorn-import-assertions": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
- "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
+ "node_modules/acorn-import-attributes": {
+ "version": "1.9.5",
+ "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
+ "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
"peerDependencies": {
"acorn": "^8"
}
@@ -8196,9 +8178,9 @@
}
},
"node_modules/chrome-trace-event": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
- "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
+ "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==",
"engines": {
"node": ">=6.0"
}
@@ -9745,9 +9727,9 @@
}
},
"node_modules/enhanced-resolve": {
- "version": "5.16.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz",
- "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==",
+ "version": "5.17.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
+ "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
"dependencies": {
"graceful-fs": "^4.2.4",
"tapable": "^2.2.0"
@@ -9958,9 +9940,9 @@
}
},
"node_modules/es-module-lexer": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.0.tgz",
- "integrity": "sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw=="
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz",
+ "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw=="
},
"node_modules/es-object-atoms": {
"version": "1.0.0",
@@ -21534,25 +21516,24 @@
}
},
"node_modules/webpack": {
- "version": "5.90.3",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz",
- "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==",
+ "version": "5.94.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz",
+ "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==",
"dependencies": {
- "@types/eslint-scope": "^3.7.3",
"@types/estree": "^1.0.5",
- "@webassemblyjs/ast": "^1.11.5",
- "@webassemblyjs/wasm-edit": "^1.11.5",
- "@webassemblyjs/wasm-parser": "^1.11.5",
+ "@webassemblyjs/ast": "^1.12.1",
+ "@webassemblyjs/wasm-edit": "^1.12.1",
+ "@webassemblyjs/wasm-parser": "^1.12.1",
"acorn": "^8.7.1",
- "acorn-import-assertions": "^1.9.0",
+ "acorn-import-attributes": "^1.9.5",
"browserslist": "^4.21.10",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.15.0",
+ "enhanced-resolve": "^5.17.1",
"es-module-lexer": "^1.2.1",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
"glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.2.9",
+ "graceful-fs": "^4.2.11",
"json-parse-even-better-errors": "^2.3.1",
"loader-runner": "^4.2.0",
"mime-types": "^2.1.27",
@@ -21560,7 +21541,7 @@
"schema-utils": "^3.2.0",
"tapable": "^2.1.1",
"terser-webpack-plugin": "^5.3.10",
- "watchpack": "^2.4.0",
+ "watchpack": "^2.4.1",
"webpack-sources": "^3.2.3"
},
"bin": {
@@ -21931,6 +21912,18 @@
"url": "https://opencollective.com/webpack"
}
},
+ "node_modules/webpack/node_modules/watchpack": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz",
+ "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==",
+ "dependencies": {
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
"node_modules/websocket-driver": {
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
@@ -22322,23 +22315,23 @@
}
},
"@angular-devkit/architect": {
- "version": "0.1703.8",
- "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1703.8.tgz",
- "integrity": "sha512-lKxwG4/QABXZvJpqeSIn/kAwnY6MM9HdHZUV+o5o3UiTi+vO8rZApG4CCaITH3Bxebm7Nam7Xbk8RuukC5rq6g==",
+ "version": "0.1703.9",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1703.9.tgz",
+ "integrity": "sha512-kEPfTOVnzrJxPGTvaXy8653HU9Fucxttx9gVfQR1yafs+yIEGx3fKGKe89YPmaEay32bIm7ZUpxDF1FO14nkdQ==",
"requires": {
- "@angular-devkit/core": "17.3.8",
+ "@angular-devkit/core": "17.3.9",
"rxjs": "7.8.1"
}
},
"@angular-devkit/build-angular": {
- "version": "17.3.8",
- "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-17.3.8.tgz",
- "integrity": "sha512-ixsdXggWaFRP7Jvxd0AMukImnePuGflT9Yy7NJ9/y0cL/k//S/3RnkQv5i411KzN+7D4RIbNkRGGTYeqH24zlg==",
+ "version": "17.3.9",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-17.3.9.tgz",
+ "integrity": "sha512-EuAPSC4c2DSJLlL4ieviKLx1faTyY+ymWycq6KFwoxu1FgWly/dqBeWyXccYinLhPVZmoh6+A/5S4YWXlOGSnA==",
"requires": {
"@ampproject/remapping": "2.3.0",
- "@angular-devkit/architect": "0.1703.8",
- "@angular-devkit/build-webpack": "0.1703.8",
- "@angular-devkit/core": "17.3.8",
+ "@angular-devkit/architect": "0.1703.9",
+ "@angular-devkit/build-webpack": "0.1703.9",
+ "@angular-devkit/core": "17.3.9",
"@babel/core": "7.24.0",
"@babel/generator": "7.23.6",
"@babel/helper-annotate-as-pure": "7.22.5",
@@ -22349,7 +22342,7 @@
"@babel/preset-env": "7.24.0",
"@babel/runtime": "7.24.0",
"@discoveryjs/json-ext": "0.5.7",
- "@ngtools/webpack": "17.3.8",
+ "@ngtools/webpack": "17.3.9",
"@vitejs/plugin-basic-ssl": "1.1.0",
"ansi-colors": "4.1.3",
"autoprefixer": "10.4.18",
@@ -22394,7 +22387,7 @@
"undici": "6.11.1",
"vite": "5.1.7",
"watchpack": "2.4.0",
- "webpack": "5.90.3",
+ "webpack": "5.94.0",
"webpack-dev-middleware": "6.1.2",
"webpack-dev-server": "4.15.1",
"webpack-merge": "5.10.0",
@@ -22514,18 +22507,18 @@
}
},
"@angular-devkit/build-webpack": {
- "version": "0.1703.8",
- "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1703.8.tgz",
- "integrity": "sha512-9u6fl8VVOxcLOEMzrUeaybSvi9hSLSRucHnybneYrabsgreDo32tuy/4G8p6YAHQjpWEj9jvF9Um13ertdni5Q==",
+ "version": "0.1703.9",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1703.9.tgz",
+ "integrity": "sha512-3b0LND39Nc+DwCQ0N7Tbsd7RAFWTeIc4VDwk/7RO8EMYTP5Kfgr/TK66nwTBypHsjmD69IMKHZZaZuiDfGfx2A==",
"requires": {
- "@angular-devkit/architect": "0.1703.8",
+ "@angular-devkit/architect": "0.1703.9",
"rxjs": "7.8.1"
}
},
"@angular-devkit/core": {
- "version": "17.3.8",
- "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.8.tgz",
- "integrity": "sha512-Q8q0voCGudbdCgJ7lXdnyaxKHbNQBARH68zPQV72WT8NWy+Gw/tys870i6L58NWbBaCJEUcIj/kb6KoakSRu+Q==",
+ "version": "17.3.9",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.9.tgz",
+ "integrity": "sha512-/iKyn5YT7NW5ylrg9yufUydS8byExeQ2HHIwFC4Ebwb/JYYCz+k4tBf2LdP+zXpemDpLznXTQGWia0/yJjG8Vg==",
"requires": {
"ajv": "8.12.0",
"ajv-formats": "2.1.1",
@@ -22543,11 +22536,11 @@
}
},
"@angular-devkit/schematics": {
- "version": "17.3.8",
- "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.3.8.tgz",
- "integrity": "sha512-QRVEYpIfgkprNHc916JlPuNbLzOgrm9DZalHasnLUz4P6g7pR21olb8YCyM2OTJjombNhya9ZpckcADU5Qyvlg==",
+ "version": "17.3.9",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.3.9.tgz",
+ "integrity": "sha512-9qg+uWywgAtaQlvbnCQv47hcL6ZuA+d9ucgZ0upZftBllZ2vp5WIthCPb2mB0uBkj84Csmtz9MsErFjOQtTj4g==",
"requires": {
- "@angular-devkit/core": "17.3.8",
+ "@angular-devkit/core": "17.3.9",
"jsonc-parser": "3.2.1",
"magic-string": "0.30.8",
"ora": "5.4.1",
@@ -22718,14 +22711,14 @@
}
},
"@angular/cli": {
- "version": "17.3.8",
- "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-17.3.8.tgz",
- "integrity": "sha512-X5ZOQ6ZTKVHjhIsfl32ZRqbs+FUoeHLbT7x4fh2Os/8ObDDwrUcCJPqxe2b2RB5E2d0vepYigknHeLE7gwzlNQ==",
- "requires": {
- "@angular-devkit/architect": "0.1703.8",
- "@angular-devkit/core": "17.3.8",
- "@angular-devkit/schematics": "17.3.8",
- "@schematics/angular": "17.3.8",
+ "version": "17.3.9",
+ "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-17.3.9.tgz",
+ "integrity": "sha512-b5RGu5RO4VKZlMQDatwABAn1qocgD9u4IrGN2dvHDcrz5apTKYftUdGyG42vngyDNBCg1mWkSDQEWK4f2HfuGg==",
+ "requires": {
+ "@angular-devkit/architect": "0.1703.9",
+ "@angular-devkit/core": "17.3.9",
+ "@angular-devkit/schematics": "17.3.9",
+ "@schematics/angular": "17.3.9",
"@yarnpkg/lockfile": "1.1.0",
"ansi-colors": "4.1.3",
"ini": "4.1.2",
@@ -24876,9 +24869,9 @@
}
},
"@ngtools/webpack": {
- "version": "17.3.8",
- "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.3.8.tgz",
- "integrity": "sha512-CjSVVa/9fzMpEDQP01SC4colKCbZwj7vUq0H2bivp8jVsmd21x9Fu0gDBH0Y9NdfAIm4eGZvmiZKMII3vIOaYQ=="
+ "version": "17.3.9",
+ "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.3.9.tgz",
+ "integrity": "sha512-2+NvEQuYKRWdZaJbRJWEnR48tpW0uYbhwfHBHLDI9Kazb3mb0oAwYBVXdq+TtDLBypXnMsFpCewjRHTvkVx4/A=="
},
"@ngx-formly/core": {
"version": "6.3.6",
@@ -25572,12 +25565,12 @@
"optional": true
},
"@schematics/angular": {
- "version": "17.3.8",
- "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.3.8.tgz",
- "integrity": "sha512-2g4OmSyE9YGq50Uj7fNI26P/TSAFJ7ZuirwTF2O7Xc4XRQ29/tYIIqhezpNlTb6rlYblcQuMcUZBrMfWJHcqJw==",
+ "version": "17.3.9",
+ "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.3.9.tgz",
+ "integrity": "sha512-q6N8mbcYC6cgPyjTrMH7ehULQoUUwEYN4g7uo4ylZ/PFklSLJvpSp4BuuxANgW449qHSBvQfdIoui9ayAUXQzA==",
"requires": {
- "@angular-devkit/core": "17.3.8",
- "@angular-devkit/schematics": "17.3.8",
+ "@angular-devkit/core": "17.3.9",
+ "@angular-devkit/schematics": "17.3.9",
"jsonc-parser": "3.2.1"
}
},
@@ -25848,24 +25841,6 @@
"integrity": "sha512-jojr2JVJB8DawAKXApGnollMvVOMyiMKpchH8gLeoExx35Eq0BQ4WgAiAHoBoEn7h/9eDrIl0yz//cM6ALIJbg==",
"dev": true
},
- "@types/eslint": {
- "version": "8.56.9",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.9.tgz",
- "integrity": "sha512-W4W3KcqzjJ0sHg2vAq9vfml6OhsJ53TcUjUqfzzZf/EChUtwspszj/S0pzMxnfRcO55/iGq47dscXw71Fxc4Zg==",
- "requires": {
- "@types/estree": "*",
- "@types/json-schema": "*"
- }
- },
- "@types/eslint-scope": {
- "version": "3.7.7",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
- "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
- "requires": {
- "@types/eslint": "*",
- "@types/estree": "*"
- }
- },
"@types/estree": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
@@ -26728,10 +26703,10 @@
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
"integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg=="
},
- "acorn-import-assertions": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
- "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA=="
+ "acorn-import-attributes": {
+ "version": "1.9.5",
+ "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
+ "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ=="
},
"acorn-jsx": {
"version": "5.3.2",
@@ -27852,9 +27827,9 @@
"integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="
},
"chrome-trace-event": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
- "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg=="
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
+ "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ=="
},
"class-utils": {
"version": "0.3.6",
@@ -29004,9 +28979,9 @@
"dev": true
},
"enhanced-resolve": {
- "version": "5.16.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz",
- "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==",
+ "version": "5.17.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
+ "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
"requires": {
"graceful-fs": "^4.2.4",
"tapable": "^2.2.0"
@@ -29178,9 +29153,9 @@
}
},
"es-module-lexer": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.0.tgz",
- "integrity": "sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw=="
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz",
+ "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw=="
},
"es-object-atoms": {
"version": "1.0.0",
@@ -37687,25 +37662,24 @@
}
},
"webpack": {
- "version": "5.90.3",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz",
- "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==",
+ "version": "5.94.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz",
+ "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==",
"requires": {
- "@types/eslint-scope": "^3.7.3",
"@types/estree": "^1.0.5",
- "@webassemblyjs/ast": "^1.11.5",
- "@webassemblyjs/wasm-edit": "^1.11.5",
- "@webassemblyjs/wasm-parser": "^1.11.5",
+ "@webassemblyjs/ast": "^1.12.1",
+ "@webassemblyjs/wasm-edit": "^1.12.1",
+ "@webassemblyjs/wasm-parser": "^1.12.1",
"acorn": "^8.7.1",
- "acorn-import-assertions": "^1.9.0",
+ "acorn-import-attributes": "^1.9.5",
"browserslist": "^4.21.10",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.15.0",
+ "enhanced-resolve": "^5.17.1",
"es-module-lexer": "^1.2.1",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
"glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.2.9",
+ "graceful-fs": "^4.2.11",
"json-parse-even-better-errors": "^2.3.1",
"loader-runner": "^4.2.0",
"mime-types": "^2.1.27",
@@ -37713,7 +37687,7 @@
"schema-utils": "^3.2.0",
"tapable": "^2.1.1",
"terser-webpack-plugin": "^5.3.10",
- "watchpack": "^2.4.0",
+ "watchpack": "^2.4.1",
"webpack-sources": "^3.2.3"
},
"dependencies": {
@@ -37761,6 +37735,15 @@
"ajv": "^6.12.5",
"ajv-keywords": "^3.5.2"
}
+ },
+ "watchpack": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz",
+ "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==",
+ "requires": {
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
+ }
}
}
},
From fbd6d43a5eb1ef8f00239d3435fcf5dd5e17b460 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 30 Aug 2024 05:18:34 +0000
Subject: [PATCH 028/147] build(deps): bump fog-aws from 3.24.0 to 3.25.0
Bumps [fog-aws](https://github.com/fog/fog-aws) from 3.24.0 to 3.25.0.
- [Changelog](https://github.com/fog/fog-aws/blob/master/CHANGELOG.md)
- [Commits](https://github.com/fog/fog-aws/compare/v3.24.0...v3.25.0)
---
updated-dependencies:
- dependency-name: fog-aws
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
---
Gemfile.lock | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/Gemfile.lock b/Gemfile.lock
index e87ce507e241..0259cc0ae39e 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -560,7 +560,8 @@ GEM
websocket-driver (~> 0.7)
ffi (1.17.0)
flamegraph (0.9.5)
- fog-aws (3.24.0)
+ fog-aws (3.25.0)
+ base64 (~> 0.2.0)
fog-core (~> 2.1)
fog-json (~> 1.1)
fog-xml (~> 0.1)
@@ -748,7 +749,7 @@ GEM
method_source (1.1.0)
mime-types (3.5.2)
mime-types-data (~> 3.2015)
- mime-types-data (3.2024.0806)
+ mime-types-data (3.2024.0820)
mini_magick (5.0.1)
mini_mime (1.1.5)
mini_portile2 (2.8.7)
From 4ed7ef1f970ae9a2939d9f9b9f988fd1dd40fc4b Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 30 Aug 2024 05:17:07 +0000
Subject: [PATCH 029/147] build(deps): bump aws-sdk-core from 3.202.0 to
3.202.1
Bumps [aws-sdk-core](https://github.com/aws/aws-sdk-ruby) from 3.202.0 to 3.202.1.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-core/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)
---
updated-dependencies:
- dependency-name: aws-sdk-core
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
---
Gemfile.lock | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Gemfile.lock b/Gemfile.lock
index 0259cc0ae39e..8aca7e282b26 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -342,8 +342,8 @@ GEM
activerecord (>= 4.0.0, < 7.2)
awrence (1.2.1)
aws-eventstream (1.3.0)
- aws-partitions (1.968.0)
- aws-sdk-core (3.202.0)
+ aws-partitions (1.969.0)
+ aws-sdk-core (3.202.1)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.9)
From 63adb5635d5165cd57aef0442b26167c10bdf5e0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Oliver=20G=C3=BCnther?=
Date: Fri, 30 Aug 2024 09:55:02 +0200
Subject: [PATCH 030/147] Add note on 2FA settings hidden when configured by
env (#16555)
* Update README.md
* Update docs/system-admin-guide/authentication/two-factor-authentication/README.md
Co-authored-by: Maya Berdygylyjova
---------
Co-authored-by: Maya Berdygylyjova
---
.../authentication/two-factor-authentication/README.md | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/docs/system-admin-guide/authentication/two-factor-authentication/README.md b/docs/system-admin-guide/authentication/two-factor-authentication/README.md
index 8ae3fa1541d4..708fc0ce2c75 100644
--- a/docs/system-admin-guide/authentication/two-factor-authentication/README.md
+++ b/docs/system-admin-guide/authentication/two-factor-authentication/README.md
@@ -19,6 +19,10 @@ From the GUI you are able to configure the following options:
![Sys-admin-authentication-two-factor-authentication](Sys-admin-authentication-two-factor-authentication.png)
+> [!NOTE]
+> These options will not be shown in the administration if 2FA settings are configured through [environment variables](../../../installation-and-operations/configuration/environment/).
+
+
Usually with another device device like a mobile phone or a tablet, you are able to use a TOTP Application in order to generate the token that is needed as an extra layer of security on top of your password. Here are some applications that work for OpenProject 2FA.
- Open Source andOTP (Android Device) in the [Play Store](https://play.google.com/store/apps/details?id=org.shadowice.flocke.andotp&gl=US)
From 472b74ff3f38c9548cf9191d9b0c5ba312d2c6b8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Oliver=20G=C3=BCnther?=
Date: Fri, 30 Aug 2024 08:41:32 +0200
Subject: [PATCH 031/147] Reload opening
---
spec/support/components/datepicker/datepicker_modal.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/spec/support/components/datepicker/datepicker_modal.rb b/spec/support/components/datepicker/datepicker_modal.rb
index 002f86a14bb9..2af089c86497 100644
--- a/spec/support/components/datepicker/datepicker_modal.rb
+++ b/spec/support/components/datepicker/datepicker_modal.rb
@@ -3,7 +3,7 @@ class DatepickerModal < Datepicker
def open_modal!
retry_block do
click_on "Non-working day", wait: 10
- unless page.has_css?(".flatpickr-calendar")
+ unless page.has_css?(".flatpickr-calendar", wait: 10)
click_on "Cancel"
raise "Flatpickr should render a calendar"
end
From dd3a30570f51af35c68fcb7dd6cdeaa600de2c04 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Oliver=20G=C3=BCnther?=
Date: Fri, 30 Aug 2024 09:40:35 +0200
Subject: [PATCH 032/147] Move change detection into onReady
---
.../modal-single-date-picker.component.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/frontend/src/app/shared/components/datepicker/modal-single-date-picker/modal-single-date-picker.component.ts b/frontend/src/app/shared/components/datepicker/modal-single-date-picker/modal-single-date-picker.component.ts
index 06a412e4b573..3f92c37bb712 100644
--- a/frontend/src/app/shared/components/datepicker/modal-single-date-picker/modal-single-date-picker.component.ts
+++ b/frontend/src/app/shared/components/datepicker/modal-single-date-picker/modal-single-date-picker.component.ts
@@ -241,6 +241,7 @@ export class OpModalSingleDatePickerComponent implements ControlValueAccessor, O
inline: true,
onReady: (_date:Date[], _datestr:string, instance:flatpickr.Instance) => {
instance.calendarContainer.classList.add('op-datepicker-modal--flatpickr-instance');
+ this.cdRef.detectChanges();
},
onChange: (dates:Date[]) => {
if (dates.length > 0) {
@@ -263,7 +264,6 @@ export class OpModalSingleDatePickerComponent implements ControlValueAccessor, O
},
this.flatpickrTarget.nativeElement as HTMLElement,
);
- this.cdRef.detectChanges();
}
writeWorkingValue(value:string):void {
From f2efebefebf065f16f3beb2dec1fda477b18d69b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Oliver=20G=C3=BCnther?=
Date: Fri, 30 Aug 2024 09:47:14 +0200
Subject: [PATCH 033/147] Allow TS namespaces
---
frontend/.eslintrc.js | 3 +++
1 file changed, 3 insertions(+)
diff --git a/frontend/.eslintrc.js b/frontend/.eslintrc.js
index 8e1c4fb6f5ce..74d5ea509940 100644
--- a/frontend/.eslintrc.js
+++ b/frontend/.eslintrc.js
@@ -115,6 +115,9 @@ module.exports = {
"indent": "off",
"@typescript-eslint/indent": "off",
+ // Allow namespaces, they are generated into flat functions and we don't care about modules for helpers
+ "@typescript-eslint/no-namespace": "off",
+
/*
// Disable use before define, as irrelevant for TS interfaces
"no-use-before-define": "off",
From b151e8017df367f435e10c71475469667c53099c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Oliver=20G=C3=BCnther?=
Date: Fri, 30 Aug 2024 10:41:53 +0200
Subject: [PATCH 034/147] Use explicit fast build without source maps and
minify for testing and PullPreview (#16563)
Use explicit fast build without source maps and minify for testing and PP
---
docker/ci/entrypoint.sh | 2 +-
docker/pullpreview/docker-compose.yml | 2 +-
frontend/angular.json | 32 ---------------------------
frontend/extra-webpack.config.js | 2 +-
frontend/package.json | 3 +--
lib/tasks/assets.rake | 4 +---
6 files changed, 5 insertions(+), 40 deletions(-)
diff --git a/docker/ci/entrypoint.sh b/docker/ci/entrypoint.sh
index 6c41d9e9cdeb..d4dc280c9223 100755
--- a/docker/ci/entrypoint.sh
+++ b/docker/ci/entrypoint.sh
@@ -92,7 +92,7 @@ backend_stuff() {
}
frontend_stuff() {
- execute_quiet "DATABASE_URL=nulldb://db time bin/rails openproject:plugins:register_frontend assets:precompile"
+ execute_quiet "OPENPROJECT_ANGULAR_BUILD=fast DATABASE_URL=nulldb://db time bin/rails openproject:plugins:register_frontend assets:precompile"
execute_quiet "cp -rp config/frontend_assets.manifest.json public/assets/frontend_assets.manifest.json"
}
diff --git a/docker/pullpreview/docker-compose.yml b/docker/pullpreview/docker-compose.yml
index 7c9664a60635..f6a3bb409c39 100644
--- a/docker/pullpreview/docker-compose.yml
+++ b/docker/pullpreview/docker-compose.yml
@@ -14,7 +14,7 @@ x-defaults: &defaults
build:
context: .
args:
- OPENPROJECT_ANGULAR_UGLIFY: "false"
+ OPENPROJECT_ANGULAR_BUILD: "fast"
restart: unless-stopped
env_file:
- .env.pullpreview
diff --git a/frontend/angular.json b/frontend/angular.json
index 4be288938831..7c48128237c2 100644
--- a/frontend/angular.json
+++ b/frontend/angular.json
@@ -102,38 +102,6 @@
}
]
},
- "fastprod": {
- "index": "",
- "preserveSymlinks": true,
- "optimization": false,
- "outputHashing": "all",
- "sourceMap": false,
- "namedChunks": false,
- "extractLicenses": false,
- "buildOptimizer" : false,
- "fileReplacements": [
- {
- "replace": "src/environments/environment.ts",
- "with": "src/environments/environment.prod.ts"
- }
- ]
- },
- "ci": {
- "index": "",
- "preserveSymlinks": true,
- "optimization": false,
- "outputHashing": "all",
- "sourceMap": false,
- "namedChunks": false,
- "extractLicenses": false,
- "buildOptimizer" : false,
- "fileReplacements": [
- {
- "replace": "src/environments/environment.ts",
- "with": "src/environments/environment.prod.ts"
- }
- ]
- }
}
},
"serve": {
diff --git a/frontend/extra-webpack.config.js b/frontend/extra-webpack.config.js
index 2eef5b817f14..4ca5c933c4b1 100644
--- a/frontend/extra-webpack.config.js
+++ b/frontend/extra-webpack.config.js
@@ -5,7 +5,7 @@ module.exports = {
minimizer: [
new TerserPlugin({
terserOptions: {
- mangle: process.env.OPENPROJECT_ANGULAR_UGLIFY !== 'false',
+ mangle: process.env.OPENPROJECT_ANGULAR_BUILD !== 'fast',
keep_classnames: true,
keep_fnames: true,
}
diff --git a/frontend/package.json b/frontend/package.json
index 6ab4fc9227f5..5615a4afe820 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -162,8 +162,7 @@
},
"scripts": {
"analyze": "ng build --configuration production --stats-json && webpack-bundle-analyzer -h 0.0.0.0 -p 9999 ../public/assets/frontend/stats.json",
- "build:ci": "node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --configuration ci",
- "build:fast": "OPENPROJECT_ANGULAR_UGLIFY=false node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --configuration fastprod",
+ "build:fast": "OPENPROJECT_ANGULAR_BUILD=fast node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --configuration production",
"build": "node --max_old_space_size=4096 ./node_modules/@angular/cli/bin/ng build --configuration production --named-chunks --source-map",
"build:watch": "node --max_old_space_size=4096 ./node_modules/@angular/cli/bin/ng build --watch --named-chunks",
"tokens:generate": "theo src/app/spot/styles/tokens/tokens.yml --transform web --format sass,json --dest src/app/spot/styles/tokens/dist",
diff --git a/lib/tasks/assets.rake b/lib/tasks/assets.rake
index 63f497fc0e41..4e170ce29d90 100644
--- a/lib/tasks/assets.rake
+++ b/lib/tasks/assets.rake
@@ -63,9 +63,7 @@ namespace :assets do
puts "Building angular frontend"
Dir.chdir Rails.root.join("frontend") do
cmd =
- if ENV["CI"]
- "npm run build:ci"
- elsif ENV["OPENPROJECT_ANGULAR_UGLIFY"] == "false"
+ if ENV["OPENPROJECT_ANGULAR_BUILD"] == "fast"
"npm run build:fast"
else
"npm run build"
From cc7461b69fbb70605d7af367044c7081dcfbcb7d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Oliver=20G=C3=BCnther?=
Date: Fri, 30 Aug 2024 10:41:53 +0200
Subject: [PATCH 035/147] Use explicit fast build without source maps and
minify for testing and PullPreview (#16563)
Use explicit fast build without source maps and minify for testing and PP
---
docker/ci/entrypoint.sh | 2 +-
docker/pullpreview/docker-compose.yml | 2 +-
frontend/angular.json | 32 ---------------------------
frontend/extra-webpack.config.js | 2 +-
frontend/package.json | 3 +--
lib/tasks/assets.rake | 4 +---
6 files changed, 5 insertions(+), 40 deletions(-)
diff --git a/docker/ci/entrypoint.sh b/docker/ci/entrypoint.sh
index 6c41d9e9cdeb..d4dc280c9223 100755
--- a/docker/ci/entrypoint.sh
+++ b/docker/ci/entrypoint.sh
@@ -92,7 +92,7 @@ backend_stuff() {
}
frontend_stuff() {
- execute_quiet "DATABASE_URL=nulldb://db time bin/rails openproject:plugins:register_frontend assets:precompile"
+ execute_quiet "OPENPROJECT_ANGULAR_BUILD=fast DATABASE_URL=nulldb://db time bin/rails openproject:plugins:register_frontend assets:precompile"
execute_quiet "cp -rp config/frontend_assets.manifest.json public/assets/frontend_assets.manifest.json"
}
diff --git a/docker/pullpreview/docker-compose.yml b/docker/pullpreview/docker-compose.yml
index 7c9664a60635..f6a3bb409c39 100644
--- a/docker/pullpreview/docker-compose.yml
+++ b/docker/pullpreview/docker-compose.yml
@@ -14,7 +14,7 @@ x-defaults: &defaults
build:
context: .
args:
- OPENPROJECT_ANGULAR_UGLIFY: "false"
+ OPENPROJECT_ANGULAR_BUILD: "fast"
restart: unless-stopped
env_file:
- .env.pullpreview
diff --git a/frontend/angular.json b/frontend/angular.json
index 4be288938831..7c48128237c2 100644
--- a/frontend/angular.json
+++ b/frontend/angular.json
@@ -102,38 +102,6 @@
}
]
},
- "fastprod": {
- "index": "",
- "preserveSymlinks": true,
- "optimization": false,
- "outputHashing": "all",
- "sourceMap": false,
- "namedChunks": false,
- "extractLicenses": false,
- "buildOptimizer" : false,
- "fileReplacements": [
- {
- "replace": "src/environments/environment.ts",
- "with": "src/environments/environment.prod.ts"
- }
- ]
- },
- "ci": {
- "index": "",
- "preserveSymlinks": true,
- "optimization": false,
- "outputHashing": "all",
- "sourceMap": false,
- "namedChunks": false,
- "extractLicenses": false,
- "buildOptimizer" : false,
- "fileReplacements": [
- {
- "replace": "src/environments/environment.ts",
- "with": "src/environments/environment.prod.ts"
- }
- ]
- }
}
},
"serve": {
diff --git a/frontend/extra-webpack.config.js b/frontend/extra-webpack.config.js
index 2eef5b817f14..4ca5c933c4b1 100644
--- a/frontend/extra-webpack.config.js
+++ b/frontend/extra-webpack.config.js
@@ -5,7 +5,7 @@ module.exports = {
minimizer: [
new TerserPlugin({
terserOptions: {
- mangle: process.env.OPENPROJECT_ANGULAR_UGLIFY !== 'false',
+ mangle: process.env.OPENPROJECT_ANGULAR_BUILD !== 'fast',
keep_classnames: true,
keep_fnames: true,
}
diff --git a/frontend/package.json b/frontend/package.json
index 6ab4fc9227f5..5615a4afe820 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -162,8 +162,7 @@
},
"scripts": {
"analyze": "ng build --configuration production --stats-json && webpack-bundle-analyzer -h 0.0.0.0 -p 9999 ../public/assets/frontend/stats.json",
- "build:ci": "node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --configuration ci",
- "build:fast": "OPENPROJECT_ANGULAR_UGLIFY=false node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --configuration fastprod",
+ "build:fast": "OPENPROJECT_ANGULAR_BUILD=fast node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --configuration production",
"build": "node --max_old_space_size=4096 ./node_modules/@angular/cli/bin/ng build --configuration production --named-chunks --source-map",
"build:watch": "node --max_old_space_size=4096 ./node_modules/@angular/cli/bin/ng build --watch --named-chunks",
"tokens:generate": "theo src/app/spot/styles/tokens/tokens.yml --transform web --format sass,json --dest src/app/spot/styles/tokens/dist",
diff --git a/lib/tasks/assets.rake b/lib/tasks/assets.rake
index 63f497fc0e41..4e170ce29d90 100644
--- a/lib/tasks/assets.rake
+++ b/lib/tasks/assets.rake
@@ -63,9 +63,7 @@ namespace :assets do
puts "Building angular frontend"
Dir.chdir Rails.root.join("frontend") do
cmd =
- if ENV["CI"]
- "npm run build:ci"
- elsif ENV["OPENPROJECT_ANGULAR_UGLIFY"] == "false"
+ if ENV["OPENPROJECT_ANGULAR_BUILD"] == "fast"
"npm run build:fast"
else
"npm run build"
From f80712c2ef58a164d309c0484ef238f6fccf81e4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Oliver=20G=C3=BCnther?=
Date: Fri, 30 Aug 2024 10:34:31 +0200
Subject: [PATCH 036/147] Only merge the digests from matrix.target
---
.github/workflows/docker.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
index 878af2a2d746..3db90e894c39 100644
--- a/.github/workflows/docker.yml
+++ b/.github/workflows/docker.yml
@@ -250,7 +250,7 @@ jobs:
- name: Merge digests
uses: actions/upload-artifact/merge@v4
with:
- pattern: digests-*
+ pattern: "digests-${{ matrix.target }}-*"
overwrite: true
name: "merged-digests-${{ matrix.target }}-${{ github.run_number }}-${{ github.run_attempt }}"
- name: Download digests
From 09fa421940513720e139a8d29fdbabf7232e1183 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Oliver=20G=C3=BCnther?=
Date: Fri, 30 Aug 2024 10:34:31 +0200
Subject: [PATCH 037/147] Only merge the digests from matrix.target
---
.github/workflows/docker.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
index 878af2a2d746..3db90e894c39 100644
--- a/.github/workflows/docker.yml
+++ b/.github/workflows/docker.yml
@@ -250,7 +250,7 @@ jobs:
- name: Merge digests
uses: actions/upload-artifact/merge@v4
with:
- pattern: digests-*
+ pattern: "digests-${{ matrix.target }}-*"
overwrite: true
name: "merged-digests-${{ matrix.target }}-${{ github.run_number }}-${{ github.run_attempt }}"
- name: Download digests
From 7c9b9c83e193ad1b4713703328f4e13a01d6c872 Mon Sep 17 00:00:00 2001
From: Kabiru Mwenja
Date: Fri, 30 Aug 2024 15:26:42 +0300
Subject: [PATCH 038/147] [#56605] Project attributes: Rename "Deactivate in
project" to "Remove from project" (#16553)
https://community.openproject.org/work_packages/56605
---
.../project_custom_field_mapping/row_component.rb | 2 +-
config/locales/en.yml | 2 +-
.../admin/project_custom_fields/project_mappings_spec.rb | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/app/components/settings/project_custom_fields/project_custom_field_mapping/row_component.rb b/app/components/settings/project_custom_fields/project_custom_field_mapping/row_component.rb
index a02c28570b2e..0a4a86a2d3a4 100644
--- a/app/components/settings/project_custom_fields/project_custom_field_mapping/row_component.rb
+++ b/app/components/settings/project_custom_fields/project_custom_field_mapping/row_component.rb
@@ -48,7 +48,7 @@ def more_menu_detach_project
{
scheme: :default,
icon: nil,
- label: I18n.t("projects.settings.project_custom_fields.actions.deactivate_for_project"),
+ label: I18n.t("projects.settings.project_custom_fields.actions.remove_from_project"),
href: unlink_admin_settings_project_custom_field_path(
id: @table.params[:custom_field].id,
project_custom_field_project_mapping: { project_id: project.id }
diff --git a/config/locales/en.yml b/config/locales/en.yml
index d0d10725d37a..93b889d88728 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -334,7 +334,7 @@ en:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/spec/features/admin/project_custom_fields/project_mappings_spec.rb b/spec/features/admin/project_custom_fields/project_mappings_spec.rb
index a31eb04e83bb..a5bb3bf0bb0f 100644
--- a/spec/features/admin/project_custom_fields/project_mappings_spec.rb
+++ b/spec/features/admin/project_custom_fields/project_mappings_spec.rb
@@ -137,7 +137,7 @@
visit project_mappings_admin_settings_project_custom_field_path(project_custom_field)
- project_custom_field_mappings_page.click_menu_item_of("Deactivate for this project", project)
+ project_custom_field_mappings_page.click_menu_item_of("Remove from project", project)
expect(page).to have_no_text(project.name)
From 78ef2f98f122e9235e2c647475705d92c659f905 Mon Sep 17 00:00:00 2001
From: Christophe Bliard
Date: Fri, 30 Aug 2024 17:53:31 +0200
Subject: [PATCH 039/147] [57258] Display derivation hints in status-based mode
https://community.openproject.org/wp/57258
It was calculated but not displayed. This is now covered by a feature
test.
In the progress popover, when the input is a select, the event being
listened to to render a preview is `change` instead of `input. It's
because cuprite does not emit the `input` event when selecting an option
in a select input. It only emits `change`. `ProgressEditField` has been
updated to correctly focus and change the value of a select (for
status selection inside the popover).
Also to allow `ProgressEditField#expect_modal_field_value` to work
regardless of the field being disabled or readonly, the disabled value
default to `:all` which matches both disabled and enabled inputs, and
the `readonly` parameter has been removed. To check for it, call
`ProgressEditField#expect_modal_field_read_only` directly instead.
---
app/forms/work_packages/progress_form.rb | 4 +-
.../derive_progress_values_base.rb | 8 +++
.../derive_progress_values_status_based.rb | 31 +++++++---
.../derive_progress_values_work_based.rb | 8 ---
.../progress/preview-progress.controller.ts | 6 +-
...4_without_percent_complete_edition_spec.rb | 10 ++--
.../work_packages/progress_modal_spec.rb | 58 +++++++++++++++++++
...erive_progress_values_status_based_spec.rb | 36 ++++++++++++
.../work_packages/progress_popover.rb | 2 +-
.../edit_fields/progress_edit_field.rb | 23 ++++++--
10 files changed, 158 insertions(+), 28 deletions(-)
diff --git a/app/forms/work_packages/progress_form.rb b/app/forms/work_packages/progress_form.rb
index 61eecfa284b5..09e9b71cd7c8 100644
--- a/app/forms/work_packages/progress_form.rb
+++ b/app/forms/work_packages/progress_form.rb
@@ -151,6 +151,7 @@ def readonly_text_field(group,
name:,
value: field_value(name),
label:,
+ caption: field_hint_message(name),
readonly: true,
classes: "input--readonly",
placeholder: ("-" if placeholder)
@@ -199,9 +200,10 @@ def as_percent(value)
end
def default_field_options(name)
+ action = name == :status_id ? "change" : "input"
data = { "work-packages--progress--preview-progress-target": "progressInput",
"work-packages--progress--touched-field-marker-target": "progressInput",
- action: "input->work-packages--progress--touched-field-marker#markFieldAsTouched" }
+ action: "#{action}->work-packages--progress--touched-field-marker#markFieldAsTouched" }
if @focused_field == name
data[:"work-packages--progress--focus-field-target"] = "fieldToFocus"
diff --git a/app/services/work_packages/set_attributes_service/derive_progress_values_base.rb b/app/services/work_packages/set_attributes_service/derive_progress_values_base.rb
index fa057d81076f..c986209c714d 100644
--- a/app/services/work_packages/set_attributes_service/derive_progress_values_base.rb
+++ b/app/services/work_packages/set_attributes_service/derive_progress_values_base.rb
@@ -79,6 +79,10 @@ def work_valid?
DurationConverter.valid?(work_package.estimated_hours_before_type_cast)
end
+ def work_invalid?
+ !work_valid?
+ end
+
def remaining_work
work_package.remaining_hours
end
@@ -115,6 +119,10 @@ def remaining_work_valid?
DurationConverter.valid?(work_package.remaining_hours_before_type_cast)
end
+ def remaining_work_invalid?
+ !remaining_work_valid?
+ end
+
def percent_complete
work_package.done_ratio
end
diff --git a/app/services/work_packages/set_attributes_service/derive_progress_values_status_based.rb b/app/services/work_packages/set_attributes_service/derive_progress_values_status_based.rb
index 3035a88ccafc..7f140a9caf1a 100644
--- a/app/services/work_packages/set_attributes_service/derive_progress_values_status_based.rb
+++ b/app/services/work_packages/set_attributes_service/derive_progress_values_status_based.rb
@@ -33,24 +33,39 @@ class DeriveProgressValuesStatusBased < DeriveProgressValuesBase
def derive_progress_attributes
raise ArgumentError, "Cannot use #{self.class.name} in work-based mode" if WorkPackage.work_based_mode?
- update_percent_complete
- update_remaining_work_from_percent_complete
+ # do not change anything if some values are invalid: this will be detected
+ # by the contract and errors will be set.
+ return if invalid_progress_values?
+
+ update_percent_complete if derive_percent_complete?
+ update_remaining_work if derive_remaining_work?
+ end
+
+ def invalid_progress_values?
+ work_invalid?
+ end
+
+ def derive_percent_complete?
+ status_percent_complete_changed?
+ end
+
+ def derive_remaining_work?
+ status_percent_complete_changed? || work_changed?
+ end
+
+ def status_percent_complete_changed?
+ work_package.status_id_changed? && work_package.status.default_done_ratio != work_package.done_ratio_was
end
# Update +% complete+ from the status if the status changed.
def update_percent_complete
- return unless work_package.status_id_changed?
-
self.percent_complete = work_package.status.default_done_ratio
end
# When in "Status-based" mode for progress calculation, remaining work is
# always derived from % complete and work. If work is unset, then remaining
# work must be unset too.
- def update_remaining_work_from_percent_complete
- return if remaining_work_came_from_user?
- return if work&.negative?
-
+ def update_remaining_work
if work_empty?
return unless work_changed?
diff --git a/app/services/work_packages/set_attributes_service/derive_progress_values_work_based.rb b/app/services/work_packages/set_attributes_service/derive_progress_values_work_based.rb
index 69cb6736875e..81a44326c5da 100644
--- a/app/services/work_packages/set_attributes_service/derive_progress_values_work_based.rb
+++ b/app/services/work_packages/set_attributes_service/derive_progress_values_work_based.rb
@@ -161,14 +161,6 @@ def work_from_percent_complete_and_remaining_work
remaining_work / remaining_percent_complete
end
- def work_invalid?
- !work_valid?
- end
-
- def remaining_work_invalid?
- !remaining_work_valid?
- end
-
def percent_complete_unparsable?
!PercentageConverter.valid?(work_package.done_ratio_before_type_cast)
end
diff --git a/frontend/src/stimulus/controllers/dynamic/work-packages/progress/preview-progress.controller.ts b/frontend/src/stimulus/controllers/dynamic/work-packages/progress/preview-progress.controller.ts
index 2b39d00218dd..bf722fa38d63 100644
--- a/frontend/src/stimulus/controllers/dynamic/work-packages/progress/preview-progress.controller.ts
+++ b/frontend/src/stimulus/controllers/dynamic/work-packages/progress/preview-progress.controller.ts
@@ -61,7 +61,11 @@ export default class PreviewProgressController extends Controller {
};
this.progressInputTargets.forEach((target) => {
- target.addEventListener('input', this.debouncedPreview);
+ if (target.tagName.toLowerCase() === 'select') {
+ target.addEventListener('change', this.debouncedPreview);
+ } else {
+ target.addEventListener('input', this.debouncedPreview);
+ }
target.addEventListener('blur', this.debouncedPreview);
});
diff --git a/spec/features/work_packages/progress_modal_pre_14_4_without_percent_complete_edition_spec.rb b/spec/features/work_packages/progress_modal_pre_14_4_without_percent_complete_edition_spec.rb
index f2a10392d6b3..cf7c9755e1d1 100644
--- a/spec/features/work_packages/progress_modal_pre_14_4_without_percent_complete_edition_spec.rb
+++ b/spec/features/work_packages/progress_modal_pre_14_4_without_percent_complete_edition_spec.rb
@@ -208,7 +208,7 @@ def update_work_package_with(work_package, attributes)
remaining_work_field = ProgressEditField.new(work_package_row, :remainingTime)
work_field.activate!
- remaining_work_field.expect_read_only_modal_field
+ remaining_work_field.expect_modal_field_read_only
end
end
@@ -356,7 +356,8 @@ def update_work_package_with(work_package, attributes)
work_edit_field.expect_modal_field_value("10h")
remaining_work_edit_field.expect_modal_field_value("2.12h") # 2h 7m
- percent_complete_edit_field.expect_modal_field_value("78", readonly: true)
+ percent_complete_edit_field.expect_modal_field_read_only
+ percent_complete_edit_field.expect_modal_field_value("78")
end
end
@@ -408,7 +409,8 @@ def update_work_package_with(work_package, attributes)
work_edit_field.expect_modal_field_value("")
remaining_work_edit_field.expect_modal_field_value("", disabled: true)
- percent_complete_edit_field.expect_modal_field_value("-", readonly: true)
+ percent_complete_edit_field.expect_modal_field_read_only
+ percent_complete_edit_field.expect_modal_field_value("-")
end
end
@@ -468,7 +470,7 @@ def update_work_package_with(work_package, attributes)
work_edit_field.activate!
- percent_complete_edit_field.expect_read_only_modal_field
+ percent_complete_edit_field.expect_modal_field_read_only
end
end
diff --git a/spec/features/work_packages/progress_modal_spec.rb b/spec/features/work_packages/progress_modal_spec.rb
index 9856c79a6ae2..b51737261e05 100644
--- a/spec/features/work_packages/progress_modal_spec.rb
+++ b/spec/features/work_packages/progress_modal_spec.rb
@@ -589,5 +589,63 @@ def visit_progress_query_displaying_work_package
progress_popover.expect_values(work: "300h", remaining_work: "60h", percent_complete: "80%")
end
end
+
+ context "in status-based mode",
+ with_settings: { work_package_done_ratio: "status" } do
+ before_all do
+ open_status_with_0p_done_ratio.update!(is_default: true)
+
+ create(:workflow,
+ type_id: type_task.id,
+ old_status: open_status_with_0p_done_ratio,
+ new_status: in_progress_status_with_50p_done_ratio,
+ role:)
+ create(:workflow,
+ type_id: type_task.id,
+ old_status: open_status_with_0p_done_ratio,
+ new_status: complete_status_with_100p_done_ratio,
+ role:)
+ end
+
+ context "given status has % complete to 50% and work is unset" do
+ before do
+ update_work_package_with(work_package, status: in_progress_status_with_50p_done_ratio,
+ estimated_hours: nil)
+ end
+
+ specify "when setting work, it updates remaining work and % complete" do
+ visit_progress_query_displaying_work_package
+
+ progress_popover.open
+ progress_popover.expect_values(work: "", remaining_work: "")
+ progress_popover.expect_hints(work: nil, remaining_work: nil)
+
+ progress_popover.set_values(work: "10h")
+ progress_popover.expect_values(work: "10h", remaining_work: "5h")
+ progress_popover.expect_hints(work: nil, remaining_work: :derived)
+ end
+ end
+
+ context "given work = 10h" do
+ before do
+ update_work_package_with(work_package, estimated_hours: 10)
+ end
+
+ specify "when changing the status or work, it updates remaining work" do
+ visit_progress_query_displaying_work_package
+
+ progress_popover.open
+ progress_popover.expect_hints(work: nil, remaining_work: nil)
+
+ progress_popover.set_values(status: in_progress_status_with_50p_done_ratio)
+ progress_popover.expect_values(work: "10h", remaining_work: "5h")
+ progress_popover.expect_hints(work: nil, remaining_work: :derived)
+
+ progress_popover.set_values(work: "")
+ progress_popover.expect_values(work: "", remaining_work: "")
+ progress_popover.expect_hints(work: nil, remaining_work: :cleared_because_work_is_empty)
+ end
+ end
+ end
end
end
diff --git a/spec/services/work_packages/set_attributes_service/derive_progress_values_status_based_spec.rb b/spec/services/work_packages/set_attributes_service/derive_progress_values_status_based_spec.rb
index eef0e5d4b717..5cc0bd8a0722 100644
--- a/spec/services/work_packages/set_attributes_service/derive_progress_values_status_based_spec.rb
+++ b/spec/services/work_packages/set_attributes_service/derive_progress_values_status_based_spec.rb
@@ -35,6 +35,7 @@
with_settings: { work_package_done_ratio: "status" } do
shared_let(:status_0_pct_complete) { create(:status, default_done_ratio: 0, name: "0% complete") }
shared_let(:status_50_pct_complete) { create(:status, default_done_ratio: 50, name: "50% complete") }
+ shared_let(:status_50_pct_complete_other) { create(:status, default_done_ratio: 50, name: "50% complete other") }
shared_let(:status_70_pct_complete) { create(:status, default_done_ratio: 70, name: "70% complete") }
let(:user) { build_stubbed(:user) }
@@ -51,6 +52,14 @@
work_package.clear_changes_information
end
+ context "when nothing is changed" do
+ let(:set_attributes) { {} }
+ let(:expected_kept_attributes) { %w[estimated_hours remaining_hours] }
+
+ include_examples "update progress values", description: "derives remaining work",
+ expected_hints: {}
+ end
+
context "when work is cleared" do
let(:set_attributes) { { estimated_hours: nil } }
let(:expected_derived_attributes) { { remaining_hours: nil } }
@@ -80,6 +89,24 @@
expected_hints: {}
end
+ context "when work is changed to an invalid value" do
+ let(:set_attributes) { { estimated_hours: "I am invalid" } }
+ let(:expected_derived_attributes) { { estimated_hours: 0.0 } }
+ let(:expected_kept_attributes) { %w[remaining_hours] }
+
+ it "keeps the original string value in the _before_type_cast method " \
+ "so that validation can detect it is invalid" do
+ work_package.attributes = set_attributes
+ instance.call
+
+ expect(work_package.estimated_hours_before_type_cast).to eq("I am invalid")
+ end
+
+ include_examples "update progress values",
+ description: "is an error state (to be detected by contract), and remaining work is kept",
+ expected_hints: {}
+ end
+
context "when another status is set" do
let(:set_attributes) { { status: status_70_pct_complete } }
let(:expected_derived_attributes) { { remaining_hours: 3.0 } }
@@ -91,6 +118,15 @@
}
end
+ context "when another status with same % complete is set" do
+ let(:set_attributes) { { status: status_50_pct_complete_other } }
+ let(:expected_kept_attributes) { %w[remaining_hours] }
+
+ include_examples "update progress values",
+ description: "keeps the same remaining work value",
+ expected_hints: {}
+ end
+
context "when floating point operations are inaccurate (2.4000000000000004h)" do
let(:set_attributes) { { estimated_hours: 8.0, status: status_70_pct_complete } }
let(:expected_derived_attributes) { { remaining_hours: 2.4 } } # would be 2.4000000000000004 without rounding
diff --git a/spec/support/components/work_packages/progress_popover.rb b/spec/support/components/work_packages/progress_popover.rb
index 1d311c2d64d0..d1c8f5b20256 100644
--- a/spec/support/components/work_packages/progress_popover.rb
+++ b/spec/support/components/work_packages/progress_popover.rb
@@ -111,7 +111,7 @@ def expect_focused(field_name)
end
def expect_read_only(field_name)
- field(field_name).expect_read_only_modal_field
+ field(field_name).expect_modal_field_read_only
end
def expect_select_with_options(field_name, *options)
diff --git a/spec/support/edit_fields/progress_edit_field.rb b/spec/support/edit_fields/progress_edit_field.rb
index 5ba98108a023..02b2862144fd 100644
--- a/spec/support/edit_fields/progress_edit_field.rb
+++ b/spec/support/edit_fields/progress_edit_field.rb
@@ -87,7 +87,9 @@ def clear
end
def set_value(value)
- if value == ""
+ if status_field?
+ select_status(value)
+ elsif value == ""
clear
else
page.fill_in field_name, with: value
@@ -95,10 +97,21 @@ def set_value(value)
wait_for_preview_to_complete
end
+ def select_status(value)
+ value = value.name if value.is_a?(Status)
+
+ page.select(value, from: "% Complete")
+ end
+
+ def status_field?
+ field_name == "work_package_status_id"
+ end
+
def focus
return if focused?
input_element.click
+ input_element.click if status_field? # to close the dropdown
wait_for_preview_to_complete
end
@@ -197,14 +210,14 @@ def expect_modal_field_disabled
expect(page).to have_field(@field_name, disabled: true)
end
- def expect_read_only_modal_field
+ def expect_modal_field_read_only
expect(input_element).to be_readonly
end
- def expect_modal_field_value(value, disabled: false, readonly: false)
+ def expect_modal_field_value(value, disabled: :all)
within modal_element do
if @property_name == "percentageDone" && value.to_s == "-"
- expect(page).to have_field(field_name, readonly:, placeholder: value.to_s)
+ expect(page).to have_field(field_name, placeholder: value.to_s)
elsif @property_name == "statusWithinProgressModal"
if value == :empty_without_any_options
expect(page).to have_select(field_name, disabled:, options: [])
@@ -212,7 +225,7 @@ def expect_modal_field_value(value, disabled: false, readonly: false)
expect(page).to have_select(field_name, disabled:, with_selected: value.to_s)
end
else
- expect(page).to have_field(field_name, disabled:, readonly:, with: value.to_s)
+ expect(page).to have_field(field_name, disabled:, with: value.to_s)
end
end
end
From 842052c0fc8d2c2f7055f386538b296ec0cf7a21 Mon Sep 17 00:00:00 2001
From: OpenProject Actions CI
Date: Sat, 31 Aug 2024 03:05:15 +0000
Subject: [PATCH 040/147] update locales from crowdin [ci skip]
---
config/locales/crowdin/cs.yml | 54 +++++------
config/locales/crowdin/de.yml | 28 +++---
config/locales/crowdin/fr.yml | 32 +++----
config/locales/crowdin/id.yml | 2 +-
config/locales/crowdin/it.yml | 14 +--
config/locales/crowdin/js-ca.yml | 4 +-
config/locales/crowdin/js-fr.yml | 68 +++++++-------
config/locales/crowdin/js-id.yml | 2 +-
config/locales/crowdin/js-no.yml | 2 +-
config/locales/crowdin/js-pt-BR.yml | 2 +-
config/locales/crowdin/js-ro.yml | 4 +-
config/locales/crowdin/js-ru.yml | 2 +-
config/locales/crowdin/js-vi.yml | 2 +-
config/locales/crowdin/js-zh-CN.yml | 2 +-
config/locales/crowdin/pl.yml | 2 +-
config/locales/crowdin/pt-BR.yml | 90 +++++++++----------
config/locales/crowdin/ro.yml | 4 +-
config/locales/crowdin/sl.yml | 4 +-
config/locales/crowdin/tr.yml | 2 +-
config/locales/crowdin/uk.yml | 2 +-
config/locales/crowdin/vi.yml | 2 +-
config/locales/crowdin/zh-CN.seeders.yml | 4 +-
config/locales/crowdin/zh-CN.yml | 10 +--
config/locales/crowdin/zh-TW.yml | 8 +-
.../backlogs/config/locales/crowdin/zh-TW.yml | 2 +-
modules/bim/config/locales/crowdin/fr.yml | 2 +-
modules/budgets/config/locales/crowdin/cs.yml | 2 +-
.../job_status/config/locales/crowdin/fr.yml | 28 +++---
.../config/locales/crowdin/pt-BR.yml | 28 +++---
.../config/locales/crowdin/zh-CN.yml | 2 +-
.../config/locales/crowdin/zh-TW.yml | 2 +-
modules/meeting/config/locales/crowdin/cs.yml | 4 +-
modules/meeting/config/locales/crowdin/fr.yml | 6 +-
.../config/locales/crowdin/js-pt-BR.yml | 2 +-
.../meeting/config/locales/crowdin/pt-BR.yml | 6 +-
.../meeting/config/locales/crowdin/zh-TW.yml | 2 +-
.../config/locales/crowdin/pt-BR.yml | 2 +-
.../reporting/config/locales/crowdin/ro.yml | 2 +-
.../config/locales/crowdin/zh-TW.yml | 4 +-
.../storages/config/locales/crowdin/fr.yml | 2 +-
.../storages/config/locales/crowdin/pt-BR.yml | 28 +++---
.../config/locales/crowdin/js-fr.yml | 2 +-
.../config/locales/crowdin/ro.yml | 2 +-
.../config/locales/crowdin/ru.yml | 2 +-
.../config/locales/crowdin/uk.yml | 2 +-
.../config/locales/crowdin/zh-CN.yml | 2 +-
46 files changed, 240 insertions(+), 240 deletions(-)
diff --git a/config/locales/crowdin/cs.yml b/config/locales/crowdin/cs.yml
index 72f8d5b2bffb..ec5ed0a63091 100644
--- a/config/locales/crowdin/cs.yml
+++ b/config/locales/crowdin/cs.yml
@@ -462,7 +462,7 @@ cs:
irreversible: "Tato akce je nevratná"
confirmation: "Zadejte název zástupného uživatele %{name} pro potvrzení odstranění."
upsale:
- title: Placeholder uživatel
+ title: placeholder uživatel
description: >
Placeholder uživatelé jsou způsob, jak přiřadit pracovní balíčky uživatelům, kteří nejsou součástí vašeho projektu. Mohou být užiteční v řadě scénářů; například, pokud potřebujete sledovat úkoly u zdroje, který ještě nejsou pojmenovány nebo dostupné, nebo pokud nechcete této osobě umožnit přístup k OpenProject ale stále chcete sledovat úkoly, které jim byly přiděleny.
prioritiies:
@@ -684,7 +684,7 @@ cs:
false: "archivováno"
identifier: "Identifikátor"
latest_activity_at: "Poslední aktivita"
- parent: "Nadřazený projekt"
+ parent: "Podprojekt"
public_value:
title: "Viditelnost"
true: "veřejný"
@@ -790,7 +790,7 @@ cs:
true: "zahrnuje nepracovní dny"
notify: "Oznámit" #used in custom actions
parent: "Nadřazený"
- parent_issue: "Nadřazený"
+ parent_issue: "Rodič"
parent_work_package: "Nadřazený"
priority: "Priorita"
progress: "% Dokončeno"
@@ -920,7 +920,7 @@ cs:
blank: "je povinné. Zvolte prosím název."
not_unique: " už bylo použito. Prosím vyberte jiný název."
notifications:
- at_least_one_channel: "Pro odesílání notifikací musí být specifikován alespoň jeden kanál"
+ at_least_one_channel: "Alespoň jeden kanál pro odesílání oznámení musí být specifikován."
attributes:
read_ian:
read_on_creation: "nelze nastavit na pravdivé při vytváření oznámení "
@@ -1172,11 +1172,11 @@ cs:
member: "Člen"
news: "Novinky"
notification:
- one: "Notifikace"
- few: "Notifikací"
- many: "Notifikací"
- other: "Notifikace"
- placeholder_user: "Placeholder uživatel"
+ one: "Oznámení"
+ few: "Oznámení"
+ many: "Oznámení"
+ other: "Oznámení"
+ placeholder_user: "placeholder uživatel"
project: "Projekt"
project_query:
one: "Seznam projektů"
@@ -1890,7 +1890,7 @@ cs:
instructions_after_error: "Zkuste se znovu přihlásit kliknutím na %{signin}. Pokud chyba přetrvává, požádejte správce o pomoc."
menus:
admin:
- mail_notification: "E-mailové notifikace"
+ mail_notification: "E-mailová upozornění"
mails_and_notifications: "E-maily a oznámení"
aggregation: "Agregace"
api_and_webhooks: "API & Webhooky"
@@ -1953,7 +1953,7 @@ cs:
by_project: "Nepřečteno dle projektu"
by_reason: "Důvod"
inbox: "Doručená pošta"
- send_notifications: "Pro tuto akci odeslat notifikaci"
+ send_notifications: "Odeslat oznámení pro tuto akci"
work_packages:
subject:
created: "Pracovní balíček byl vytvořen."
@@ -2346,9 +2346,9 @@ cs:
label_permissions: "Práva"
label_permissions_report: "Přehled oprávnění"
label_personalize_page: "Přizpůsobit tuto stránku"
- label_placeholder_user: "Placeholder uživatel"
+ label_placeholder_user: "placeholder uživatel"
label_placeholder_user_new: ""
- label_placeholder_user_plural: "Placeholder uživatelé"
+ label_placeholder_user_plural: "placeholder uživatelé"
label_planning: "Plánování"
label_please_login: "Přihlaste se prosím"
label_plugins: "Pluginy"
@@ -2370,7 +2370,7 @@ cs:
label_project_attribute_plural: "Atributy projektu"
label_project_attribute_manage_link: "Správa atributů produktu"
label_project_count: "Celkový počet projektů"
- label_project_copy_notifications: "Během kopírování projektu odeslat notifikace e-mailem"
+ label_project_copy_notifications: "Během kopie projektu odeslat oznámení e-mailem"
label_project_latest: "Nejnovější projekty"
label_project_default_type: "Povolit prázdný typ"
label_project_hierarchy: "Hierarchie projektu"
@@ -2510,7 +2510,7 @@ cs:
label_users_settings: "Uživatelská nastavení"
label_version_new: "Nová verze"
label_version_plural: "Verze"
- label_version_sharing_descendants: "S podprojekty"
+ label_version_sharing_descendants: "S Podprojekty"
label_version_sharing_hierarchy: "S hierarchií projektu"
label_version_sharing_none: "Není sdíleno"
label_version_sharing_system: "Se všemi projekty"
@@ -2616,28 +2616,28 @@ cs:
digests:
including_mention_singular: "včetně zmínky"
including_mention_plural: "včetně %{number_mentioned} zmínění"
- unread_notification_singular: "1 nepřečtená notifikace"
- unread_notification_plural: "%{number_unread} nepřečtených notifikací"
+ unread_notification_singular: "1 nepřečtené oznámení"
+ unread_notification_plural: "%{number_unread} nepřečtených oznámení"
you_have: "Máte"
logo_alt_text: "Logo"
mention:
subject: "%{user_name} vás zmínil v #%{id} - %{subject}"
notification:
- center: "Centrum notifikací"
+ center: "Centrum oznámení"
see_in_center: "Zobrazit komentář v oznamovacím centru"
settings: "Změnit nastavení e-mailu"
salutation: "Ahoj %{user}!"
salutation_full_name: "Jméno a příjmení"
work_packages:
created_at: "Vytvořeno v %{timestamp} uživatelem %{user} "
- login_to_see_all: "Přihlaste se pro zobrazení všech notifikací."
+ login_to_see_all: "Přihlaste se pro zobrazení všech oznámení."
mentioned: "Byli jste zmíněni v komentáři"
mentioned_by: "%{user} vás zmínil v komentáři"
more_to_see:
- one: "Existuje ještě 1 pracovní balíček s notifikací."
- few: "Existuje ještě %{count} pracovních balíčků s notifikacema."
- many: "Existuje ještě %{count} pracovních balíčků s notifikacema."
- other: "Existuje ještě %{count} pracovních balíčků s notifikacema."
+ one: "Existuje ještě 1 pracovní balíček s oznámeními."
+ few: "Existuje ještě %{count} pracovních balíčků s oznámeními."
+ many: "Existuje ještě %{count} pracovních balíčků s oznámeními."
+ other: "Existuje ještě %{count} pracovních balíčků s oznámeními."
open_in_browser: "Otevřít v prohlížeči"
reason:
watched: "Sledováno"
@@ -2646,7 +2646,7 @@ cs:
mentioned: "Zmíněné"
shared: "Sdílené"
subscribed: "vše"
- prefix: "Obdrženo z důvodu nastavení notifikací: %{reason}"
+ prefix: "Obdrženo z důvodu nastavení oznámení: %{reason}"
date_alert_start_date: "Upozornění na datum"
date_alert_due_date: "Upozornění na datum"
see_all: "Zobrazit vše"
@@ -2920,7 +2920,7 @@ cs:
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"
- permission_save_queries: "Uložit zobrazení"
+ permission_save_queries: "Uložit pohled"
permission_search_project: "Hledat projekt"
permission_select_custom_fields: "Vybrat vlastní pole"
permission_select_project_custom_fields: "Vyberte atributy projektu"
@@ -3299,7 +3299,7 @@ cs:
enable_subscriptions_text_html: Umožňuje uživatelům s nezbytnými oprávněními přihlásit se do OpenProject kalendářů a získat přístup k informacím o pracovním balíčku prostřednictvím externího klienta kalendáře. Poznámka: Před povolením si prosím přečtěte iCalendar předplatné.
language_name_being_default: "%{language_name} (výchozí)"
notifications:
- events_explanation: "Určuje, pro kterou událost je odeslán e-mail. Pracovní balíčky jsou z tohoto seznamu vyloučeny, protože notifikace pro ně mohou být nastavena speciálně pro každého uživatele."
+ events_explanation: "Určuje, pro kterou událost je odeslán e-mail. Pracovní balíčky jsou z tohoto seznamu vyloučeny, protože oznámení pro ně mohou být nastavena speciálně pro každého uživatele."
delay_minutes_explanation: "Odesílání e-mailu může být pozdrženo, aby bylo uživatelům s nakonfigurovaným v oznámení aplikace před odesláním pošty potvrzeno oznámení. Uživatelé, kteří si přečtou oznámení v aplikaci, nedostanou e-mail pro již přečtené oznámení."
other: "Ostatní"
passwords: "Hesla"
@@ -3384,7 +3384,7 @@ cs:
text_destroy_with_associated: "Existují další objekty, které jsou přiřazeny k pracovním balíčkům a které mají být odstraněny. Tyto objekty jsou následující typy:"
text_destroy_what_to_do: "Co chcete udělat?"
text_diff_truncated: "... Toto rozlišení bylo zkráceno, protože přesahuje maximální velikost, kterou lze zobrazit."
- text_email_delivery_not_configured: "Doručení e-mailu není nakonfigurováno a notifikace jsou zakázány.\nNakonfigurujte váš SMTP server pro jejich povolení."
+ text_email_delivery_not_configured: "Doručení e-mailu není nakonfigurováno a oznámení jsou zakázána.\nNakonfigurujte váš SMTP server pro jejich povolení."
text_enumeration_category_reassign_to: "Přiřadit je k této hodnotě:"
text_enumeration_destroy_question: "%{count} objektů je přiřazeno k této hodnotě."
text_file_repository_writable: "Do adresáře příloh lze zapisovat"
diff --git a/config/locales/crowdin/de.yml b/config/locales/crowdin/de.yml
index 65cbe6b291d7..a883c3319fe0 100644
--- a/config/locales/crowdin/de.yml
+++ b/config/locales/crowdin/de.yml
@@ -48,7 +48,7 @@ de:
main-menu-border-color: "Rahmenfarbe des Hauptmenüs"
custom_colors: "Benutzerdefinierte Farben"
customize: "Passen Sie Ihre OpenProject Installation mit Ihrem eigenen Logo und eigenen Farben an."
- enterprise_notice: "Dieses kleine Add-on steht den Abonnenten der Enterprise-Edition ganz exklusiv als kleines Dankeschön für deren finanzielle Unterstützung zur Verfügung."
+ enterprise_notice: "Diese kleine Erweiterung steht den Abonnenten der Enterprise edition ganz exklusiv als kleines Dankeschön für deren finanzielle Unterstützung zur Verfügung."
enterprise_more_info: "Hinweis: Das verwendete Logo wird öffentlich zugänglich sein."
manage_colors: "Farbauswahloptionen bearbeiten"
instructions:
@@ -61,15 +61,15 @@ de:
main-menu-bg-color: "Hintergrundfarbe des Menüs in der linken Seitenleiste."
theme_warning: Das Ändern des Themes wird Ihr benutzerdefiniertes Design überschreiben. Alle Änderungen werden dann verloren gehen. Sind Sie sicher, dass Sie fortfahren möchten?
enterprise:
- upgrade_to_ee: "Auf Enterprise-Edition upgraden"
- add_token: "Enterprise-Edition Support Token hochladen"
+ upgrade_to_ee: "Auf Enterprise edition upgraden"
+ add_token: "Enterprise edition Support Token hochladen"
delete_token_modal:
- text: "Sind Sie sicher, dass Sie das aktuelle Enterprise Edition-Token entfernen möchten?"
+ text: "Sind Sie sicher, dass Sie das aktuelle Enterprise edition token entfernen möchten?"
title: "Token löschen"
replace_token: "Aktuellen Enterprise edition Support Token ersetzen"
order: "Enterprise on-premises bestellen"
- paste: "Enterprise-Edition Support Token hier einfügen"
- required_for_feature: "Dieses Add-on ist nur mit einem aktiven Enterprise-Edition Support-Token verfügbar."
+ paste: "Enterprise edition Support Token hier einfügen"
+ required_for_feature: "Dieses Add-on ist nur mit einem aktiven Enterprise edition Support-Token verfügbar."
enterprise_link: "Klicken Sie hier für weitere Informationen."
start_trial: "Kostenlose Testversion starten"
book_now: "Jetzt buchen"
@@ -1591,7 +1591,7 @@ de:
error_cookie_missing: "Das OpenProject Cookie fehlt. Bitte stellen Sie sicher, dass Cookies aktiviert sind, da diese Applikation ohne aktivierte Cookies nicht korrekt funktioniert."
error_custom_option_not_found: "Option ist nicht vorhanden."
error_enterprise_activation_user_limit: "Ihr Konto konnte nicht aktiviert werden (Nutzerlimit erreicht). Bitte kontaktieren Sie Ihren Administrator um Zugriff zu erhalten."
- error_enterprise_token_invalid_domain: "Die Enterprise-Edition ist nicht aktiv. Die aktuelle Domain (%{actual}) entspricht nicht dem erwarteten Hostnamen (%{expected})."
+ error_enterprise_token_invalid_domain: "Die Enterprise edition ist nicht aktiv. Die aktuelle Domain (%{actual}) entspricht nicht dem erwarteten Hostnamen (%{expected})."
error_failed_to_delete_entry: "Fehler beim Löschen dieses Eintrags."
error_in_dependent: "Fehler beim Versuch, abhängiges Objekt zu ändern: %{dependent_class} #%{related_id} - %{related_subject}: %{error}"
error_in_new_dependent: "Fehler beim Versuch, abhängiges Objekt zu erstellen: %{dependent_class} - %{related_subject}: %{error}"
@@ -1756,10 +1756,10 @@ de:
blocks:
community: "OpenProject Community"
upsale:
- title: "Auf Enterprise-Edition upgraden"
+ title: "Auf Enterprise edition upgraden"
more_info: "Weitere Informationen"
links:
- upgrade_enterprise_edition: "Auf Enterprise-Edition upgraden"
+ upgrade_enterprise_edition: "Auf Enterprise edition upgraden"
postgres_migration: "Migration Ihrer Installation zu PostgreSQL"
user_guides: "Benutzerhandbuch"
faq: "Häufig gestellte Fragen"
@@ -1793,7 +1793,7 @@ de:
dates:
working: "%{date} ist jetzt ein Arbeitstag"
non_working: "%{date} ist jetzt ein arbeitsfreier Tag"
- progress_mode_changed_to_status_based: Fortschrittberechnung wurde auf Status-bezogen gesetzt
+ progress_mode_changed_to_status_based: Fortschrittberechnung wurde auf Status-basiert gesetzt
status_excluded_from_totals_set_to_false_message: jetzt in den Gesamtwerten der Hierarchie enthalten
status_excluded_from_totals_set_to_true_message: jetzt von den Hierarchie-Gesamtwerten ausgeschlossen
status_percent_complete_changed: "% vollständig von %{old_value}% auf %{new_value} % geändert"
@@ -2065,7 +2065,7 @@ de:
label_enumerations: "Aufzählungen"
label_enterprise: "Enterprise"
label_enterprise_active_users: "%{current}/%{limit} gebuchte aktive Nutzer"
- label_enterprise_edition: "Enterprise Edition"
+ label_enterprise_edition: "Enterprise edition"
label_enterprise_support: "Enterprise Support"
label_enterprise_addon: "Enterprise Add-on"
label_environment: "Umgebung"
@@ -3009,8 +3009,8 @@ de:
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_link_text: "Zu den Einstellungen gehen"
- setup_documentation_details: "Wenn Sie Hilfe bei der Konfiguration eines neuen Dateispeichers benötigen, konsultieren Sie bitte die Dokumentation: "
- setup_documentation_details_link_text: "Dateispeicher einrichten"
+ 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: "Datei-Speicher einrichten"
show_warning_details: "Um diesen Dateispeicher nutzen zu können, müssen Sie das Modul und den spezifischen Speicher in den Projekteinstellungen jedes gewünschten Projekts aktivieren."
subversion:
existing_title: "Vorhandenes Subversion Projektarchiv"
@@ -3470,7 +3470,7 @@ de:
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_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.
+ 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: >
warning_bar:
diff --git a/config/locales/crowdin/fr.yml b/config/locales/crowdin/fr.yml
index 5638c54d1a0d..3bde23f3654b 100644
--- a/config/locales/crowdin/fr.yml
+++ b/config/locales/crowdin/fr.yml
@@ -265,8 +265,8 @@ fr:
no_results_title_text: Aucun projet pour le moment
no_results_content_text: Créer un nouveau projet
search:
- label: Project name filter
- placeholder: Search by project name
+ label: Filtre sur le nom du projet
+ placeholder: Recherche par nom de projet
lists:
active: "Projets actifs"
my: "Mes projets"
@@ -1039,10 +1039,10 @@ fr:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
- must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "ne correspond pas au Travail et au Travail restant"
+ cannot_be_set_when_work_is_zero: "ne peut pas être défini lorsque le Travail est nul"
+ must_be_set_when_remaining_work_is_set: "requis lorsque le Travail restant est défini."
+ must_be_set_when_work_and_remaining_work_are_set: "requis lorsque le Travail et le Travail restant sont définis."
inclusion: "doit être compris entre 0 et 100."
due_date:
not_start_date: "n'est pas identique à la date de début, bien que cela soit requis pour les jalons."
@@ -1072,17 +1072,17 @@ fr:
does_not_exist: "La catégorie spécifiée n'existe pas."
estimated_hours:
not_a_number: "n'est pas une durée valide."
- cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
+ cant_be_inferior_to_remaining_work: "ne peut être inférieur au travail restant."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "requis lorsque le Travail et le % Complété sont définis."
remaining_hours:
not_a_number: "n'est pas une durée valide."
- cant_exceed_work: "cannot be higher than Work."
- must_be_set_when_work_is_set: "required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ cant_exceed_work: "ne peut être supérieur à Travail."
+ must_be_set_when_work_is_set: "requis lorsque le Travail est défini."
+ must_be_set_when_work_and_percent_complete_are_set: "requis lorsque le Travail et le % Complété sont définis."
must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
- must be 0h when Work is set and % Complete is 100%.
+ doit être 0h lorsque le travail est défini et % Complété est de 100 %.
must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
- must be empty when Work is empty and % Complete is 100%.
+ doit être vide lorsque le Travail est vide et le % Complété est de 100 %.
readonly_status: "Le lot de travaux est en lecture seule, ses attributs ne peuvent donc pas être changés."
type:
attributes:
@@ -1649,10 +1649,10 @@ fr:
subproject: "Sous-projet : %{name}"
export:
dialog:
- title: "Export"
- submit: "Export"
+ title: "Exporter"
+ submit: "Exporter"
format:
- label: "File format"
+ label: "Format de fichier"
options:
csv:
label: "CSV"
diff --git a/config/locales/crowdin/id.yml b/config/locales/crowdin/id.yml
index 84eef066d0d7..fc6d5d91aa9a 100644
--- a/config/locales/crowdin/id.yml
+++ b/config/locales/crowdin/id.yml
@@ -2055,7 +2055,7 @@ id:
label_file_plural: "File"
label_filter_add: "Tambah Filter"
label_filter: "Filter"
- label_filter_plural: "Penyaring"
+ label_filter_plural: "Filter"
label_filters_toggle: "Tampilkan/Sembunyikan penyaringan"
label_float: "Float"
label_folder: "Folder"
diff --git a/config/locales/crowdin/it.yml b/config/locales/crowdin/it.yml
index bd6e4af4e2d5..ab5d960a9014 100644
--- a/config/locales/crowdin/it.yml
+++ b/config/locales/crowdin/it.yml
@@ -64,11 +64,11 @@ it:
upgrade_to_ee: "Aggiorna a Enterprise edition"
add_token: "Carica un token di assistenza per Enterprise edition"
delete_token_modal:
- text: "Vuoi davvero rimuovere il token Enterprise Edition attualmente utilizzato?"
+ text: "Vuoi davvero rimuovere il token Enterprise edition attualmente utilizzato?"
title: "Elimina token"
replace_token: "Sostituisci il token di assistenza attuale"
order: "Ordina l'edizione Enterprise on-premises"
- paste: "Incolla il tuo token di assistenza per Enterprise Edition"
+ paste: "Incolla il tuo token di assistenza per Enterprise edition"
required_for_feature: "Questa aggiunta è disponibile solo con un token di assistenza Enterprise Edition attivo."
enterprise_link: "Per ulteriori informazioni, clicca qui."
start_trial: "Inizia la prova gratuita"
@@ -804,7 +804,7 @@ it:
confirmation: "non coincide con %{attribute}."
could_not_be_copied: "%{dependency} non può essere (completamente) copiato."
does_not_exist: "non esiste."
- error_enterprise_only: "%{action} è disponibile solo in OpenProject Enterprise Edition"
+ error_enterprise_only: "%{action} è disponibile solo in OpenProject Enterprise edition"
error_unauthorized: "potrebbe non essere accessibile."
error_readonly: "è in sola lettura, pertanto non è stato possibile modificarlo."
error_conflict: "L'informazione è stata aggiornata da almeno un altro utente nel frattempo."
@@ -1594,7 +1594,7 @@ it:
error_cookie_missing: "Il cookie di OpenProject è mancante. Prego, verifica che i cookie siano attivati, questa applicazione non funziona correttamente senza."
error_custom_option_not_found: "L'opzione non esiste."
error_enterprise_activation_user_limit: "Il tuo account potrebbe non essere attivo (raggiunto il limite utente). Si prega di contattare l'amministratore per ottenere l'accesso."
- error_enterprise_token_invalid_domain: "L'Enterprise Edition non è attiva. Il dominio del token Enterprise (%{actual}) non corrisponde al nome host del sistema (%{expected})."
+ error_enterprise_token_invalid_domain: "L'Enterprise edition non è attiva. Il dominio del token Enterprise (%{actual}) non corrisponde al nome host del sistema (%{expected})."
error_failed_to_delete_entry: "Cancellazione voce non riuscita."
error_in_dependent: "Errore nel tentativo di modificare l'oggetto dipendente: %{dependent_class} #%{related_id} - %{related_subject}: %{error}"
error_in_new_dependent: "Errore nel tentativo di creare un oggetto dipendente: %{dependent_class} - %{related_subject}: %{error}"
@@ -1759,10 +1759,10 @@ it:
blocks:
community: "Comunità di OpenProject"
upsale:
- title: "Aggiorna ad Enterprise Edition"
+ title: "Aggiorna ad Enterprise edition"
more_info: "Altre informazioni"
links:
- upgrade_enterprise_edition: "Aggiorna ad Enterprise Edition"
+ upgrade_enterprise_edition: "Aggiorna ad Enterprise edition"
postgres_migration: "Migrazione dell'installazione su PostgreSQL"
user_guides: "Guide utente"
faq: "FAQ"
@@ -2068,7 +2068,7 @@ it:
label_enumerations: "Enumerazioni"
label_enterprise: "Enterprise"
label_enterprise_active_users: "%{current}/%{limit} utenti attivi riservati"
- label_enterprise_edition: "Enterprise Edition"
+ label_enterprise_edition: "Enterprise edition"
label_enterprise_support: "Supporto per Imprese"
label_enterprise_addon: "Componente aggiuntivo Enterprise"
label_environment: "Ambiente"
diff --git a/config/locales/crowdin/js-ca.yml b/config/locales/crowdin/js-ca.yml
index f6796c90e146..748575e1696a 100644
--- a/config/locales/crowdin/js-ca.yml
+++ b/config/locales/crowdin/js-ca.yml
@@ -102,7 +102,7 @@ ca:
button_save: "Desa"
button_settings: "Configuració"
button_uncheck_all: "Desmarca-ho tot"
- button_update: "Actualitzar"
+ button_update: "Actualitza"
button_export-pdf: "Descarregar PDF"
button_export-atom: "Descarregar Atom"
button_create: "Crear"
@@ -757,7 +757,7 @@ ca:
label: "Pausa els correu electrònic recordatori temporalment"
first_day: "Primer dia"
last_day: "Últim dia"
- text_are_you_sure: "N'estas segur?"
+ text_are_you_sure: "N'esteu segur?"
text_data_lost: "Totes les dades entrades es perdran."
text_user_wrote: "%{value} va escriure:"
types:
diff --git a/config/locales/crowdin/js-fr.yml b/config/locales/crowdin/js-fr.yml
index 0952189c86a9..3136798a8d77 100644
--- a/config/locales/crowdin/js-fr.yml
+++ b/config/locales/crowdin/js-fr.yml
@@ -138,8 +138,8 @@ fr:
description_select_work_package: "Sélectionner le lot de travaux #%{id}"
description_subwork_package: "Enfant du lot de travaux #%{id}"
editor:
- revisions: "Show local modifications"
- no_revisions: "No local modifications found"
+ revisions: "Afficher les modifications locales"
+ no_revisions: "Aucune modification locale trouvée"
preview: "Basculer en mode aperçu"
source_code: "Basculer en mode source Markdown"
error_saving_failed: "L'enregistrement du document a échoué en raison de l'erreur suivante : %{error}"
@@ -188,15 +188,15 @@ fr:
without_type: "Créer un lot de travaux"
with_type: "Créer un lot de travaux (Type : %{typename})"
embedded_table:
- button: "Intégrer le tableau du lot de travaux"
- text: "[Placeholder] Tableau du lot de travaux intégré"
+ button: "Tableau intégré de lots de travaux"
+ text: "[Placeholder] Tableau intégré de lots de travaux"
embedded_calendar:
text: "[Placeholder] Calendrier embarqué"
admin:
type_form:
custom_field: "Champ personnalisé"
inactive: "Inactif"
- drag_to_activate: "Faites glisser les champs ici pour les activer"
+ drag_to_activate: "Faire glisser les champs ici pour les activer"
add_group: "Ajouter un groupe d’attributs"
add_table: "Ajouter un tableau des lots de travaux associés"
edit_query: "Modifier la requête"
@@ -230,7 +230,7 @@ fr:
next_steps: "Prochaines étapes"
resend_link: "Renvoyer"
resend_success: "L'e-mail a été renvoyé. Veuillez vérifier vos e-mails et cliquer sur le lien de confirmation fourni."
- resend_warning: "Impossible de renvoyer l'e-mail"
+ resend_warning: "Impossible de renvoyer l'e-mail."
session_timeout: "Votre session a expiré. Veuillez rafraîchir la page ou renvoyer l'e-mail."
status_label: "Statut :"
status_confirmed: "confirmé"
@@ -250,7 +250,7 @@ fr:
premium_features: "Add-ons Entreprise"
premium_features_text: "Tableaux agiles, thème et logo personnalisés, graphiques, flux de travail intelligents avec actions personnalisées, recherche en plein texte des pièces jointes de lots de travaux et champs personnalisés à choix multiples"
professional_support: "Support professionnel"
- professional_support_text: "Obtenez une assitance fiable et à haut contact de la part d'ingénieurs d'assistance expérimentés qui ont une connaissance approfondie de la mise en œuvre d'OpenProject dans des environnements critiques pour l'entreprise."
+ professional_support_text: "Obtenez une assistance fiable et disponible de la part d'ingénieurs d'assistance expérimentés qui ont une connaissance approfondie de la mise en œuvre d'OpenProject dans des environnements critiques pour l'entreprise."
button_start_trial: "Commencer l'essai gratuit"
button_upgrade: "Mettre à niveau maintenant"
button_contact_us: "Contactez-nous pour une démo"
@@ -279,9 +279,9 @@ fr:
Voulez-vous continuer ?
work_packages_settings:
warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
- Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ Passer du mode de calcul de la progression basé sur le statut au mode basé sur le travail transformera % réalisé en champ non modifiable dont la valeur est dérivée des champs Travail et Travail restant. Les valeurs existantes pour % réalisé sont conservées. Des valeurs pour Travail et Travail restant sont requises pour modifier % réalisé.
warning_progress_calculation_mode_change_from_status_to_field_html: >-
- Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
+ Passer du mode de calcul de la progression basé sur le statut au mode basé sur le travail transformera % réalisé en champ librement modifiable. Si vous complétez les champs Travail et Travail restant, ils seront également liés à % réalisé. Changer le champ Travail restant peut alors changer le % réalisé.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Passer du mode de calcul de la progression basé sur le travail au mode basé sur le statut entraînera la perte de toutes les valeurs de % réalisé existantes et leur remplacement par les valeurs associées à chaque statut. Les valeurs existantes pour Travail restant peuvent également être recalculées pour refléter ce changement. Cette action est irréversible.
custom_actions:
@@ -295,13 +295,13 @@ fr:
embedded_table_loading: "La vue intégrée n’a pas pu être chargée : %{message}"
enumeration_activities: "Activités (suivi de temps)"
enumeration_doc_categories: "Catégories de documents"
- enumeration_work_package_priorities: "Priorités du Lot de Travaux"
+ enumeration_work_package_priorities: "Priorités des lots de travaux"
filter:
more_values_not_shown: "Il y a %{total} résultats supplémentaires, effectuez une recherche pour filtrer les résultats."
description:
- text_open_filter: "Ouvrir ce filtre avec les touches « ALT » et fléchées."
- text_close_filter: "Pour sélectionner une entrée, laissez le focus par exemple en appuyant sur enter. Pour quitter sans filtre, sélectionnez la première entrée (vide)."
- noneElement: "(none)"
+ text_open_filter: "Ouvrir ce filtre avec la touche « ALT » et les touches fléchées."
+ text_close_filter: "Pour sélectionner une entrée, laissez le focus par exemple en appuyant sur Entrée. Pour quitter sans filtre, sélectionnez la première entrée (vide)."
+ noneElement: "(aucun)"
time_zone_converted:
two_values: "%{from} - %{to} dans votre heure locale."
only_start: "À partir de %{from} dans votre heure locale."
@@ -346,8 +346,8 @@ fr:
general_text_Yes: "Oui"
hal:
error:
- update_conflict_refresh: "Cliquez ici pour actualiser la resource et mettre à jour vers la version la plus récente."
- edit_prohibited: "L'édition de %{attribute} est bloquée pour cette ressource. Soit cet attribut est dérivé de relations (ex, enfants), soit autrement non configurable."
+ update_conflict_refresh: "Cliquez ici pour actualiser la ressource et mettre à jour vers la version la plus récente."
+ edit_prohibited: "La modification de %{attribute} est bloquée pour cette ressource. Soit cet attribut est dérivé de relations (ex. enfants), soit il n'est pas configurable."
format:
date: "%{attribute} n’est pas une date valide. Format attendu : AAAA-MM-JJ."
general: "Une erreur s'est produite."
@@ -379,11 +379,11 @@ fr:
label_add_column_before: "Ajouter une colonne avant"
label_add_columns: "Ajouter des colonnes"
label_add_comment: "Ajouter un commentaire"
- label_add_comment_title: "Commentez et utilisez @ pour informer d’autres personnes."
+ label_add_comment_title: "Commentez et utilisez @ pour informer d’autres personnes"
label_add_row_after: "Ajouter une ligne après"
label_add_row_before: "Ajouter une ligne avant"
label_add_selected_columns: "Ajouter les colonnes sélectionnées"
- label_added_by: "Ajouté par"
+ label_added_by: "ajouté par"
label_added_time_by: 'Ajouté par %{author} le %{age}'
label_ago: "il y a"
label_all: "tous"
@@ -397,13 +397,13 @@ fr:
label_board: "Tableau"
label_board_locked: "Verrouillé"
label_board_plural: "Tableaux"
- label_board_sticky: "Epinglé"
+ label_board_sticky: "Épinglé"
label_change: "Changer"
label_create: "Créer"
label_create_work_package: "Créer un nouveau lot de travaux"
label_created_by: "Créé par"
- label_current: "current"
- label_date: "date"
+ label_current: "actuel"
+ label_date: "Date"
label_date_with_format: "Saisissez l'attribut %{date_attribute} en utilisant le format suivant : %{format}"
label_deactivate: "Désactiver"
label_descending: "Décroissant"
@@ -412,20 +412,20 @@ fr:
label_display: "Affichage"
label_cancel_comment: "Annuler le commentaire"
label_closed_work_packages: "clôturé"
- label_collapse: "Regrouper"
- label_collapsed: "regroupé"
+ label_collapse: "Replier"
+ label_collapsed: "replié"
label_collapse_all: "Tout replier"
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: "Éditer ce commentaire"
+ label_edit_comment: "Modifier ce commentaire"
label_edit_status: "Modifier le statut du lot de travaux"
- label_email: "Courriel"
+ label_email: "Adresse e-mail"
label_equals: "est"
- label_expand: "développer"
- label_expanded: "étendu"
+ label_expand: "Déplier"
+ label_expanded: "déplié"
label_expand_all: "Tout déplier"
label_expand_project_menu: "Déplier le menu du projet"
label_export: "Exporter"
@@ -519,7 +519,7 @@ fr:
label_time_entry_plural: "Temps passé"
label_up: "Haut"
label_user_plural: "Utilisateurs"
- label_activity_show_only_comments: "Afficher les activités avec les commentaires seulement"
+ label_activity_show_only_comments: "Afficher les activités avec des commentaires uniquement"
label_activity_show_all: "Afficher toutes les activités"
label_total_progress: "%{percent}% de progression totale"
label_total_amount: "Total : %{amount}"
@@ -544,21 +544,21 @@ fr:
label_global_queries: "Public"
label_custom_queries: "Privé"
label_columns: "Colonnes"
- label_attachments: Fichiers
+ label_attachments: Pièces jointes
label_drop_files: "Déposez des fichiers ici pour joindre des fichiers."
label_drop_or_click_files: "Déposez des fichiers ici ou cliquez pour joindre des fichiers."
- label_drop_folders_hint: Vous ne pouvez pas télécharger les dossiers en pièce jointe. S’il vous plaît sélectionnez des fichiers seuls.
- label_add_attachments: "Joindre fichiers"
+ label_drop_folders_hint: Vous ne pouvez pas déposer les dossiers en pièces jointes. Veuillez sélectionner des fichiers seuls.
+ label_add_attachments: "Joindre des fichiers"
label_formattable_attachment_hint: "Insérer des fichiers en les glissant sur ce champ, ou en les collant depuis le presse-papiers."
label_remove_file: "Supprimer %{fileName}"
label_remove_watcher: "Retirer l'observateur %{name}"
label_remove_all_files: Supprimer tous les fichiers
label_add_description: "Ajouter une description pour %{file}"
label_upload_notification: "Chargement des fichiers..."
- label_work_package_upload_notification: "Transfert en cours des fichiers pour le lot de travaux #%{id}: %{subject}"
+ label_work_package_upload_notification: "Transfert en cours des fichiers pour le lot de travaux #%{id} : %{subject}"
label_wp_id_added_by: "#%{id} ajouté par %{author}"
- label_files_to_upload: "Ces fichiers vont être transférés:"
- label_rejected_files: "Ces fichiers ne peuvent pas être transférés:"
+ label_files_to_upload: "Ces fichiers vont être transférés :"
+ label_rejected_files: "Ces fichiers ne peuvent pas être transférés :"
label_rejected_files_reason: "Ces fichiers ne peuvent pas être transférés car leur taille est supérieure à %{maximumFilesize}"
label_wait: "Veuillez patienter pendant la configuration…"
label_upload_counter: "%{done} fichiers sur %{count} finis"
@@ -1189,7 +1189,7 @@ fr:
zero: "0 jour"
word:
one: "1 word"
- other: "%{count} words"
+ other: "%{count} mots"
zen_mode:
button_activate: "Activer le mode zen"
button_deactivate: "Désactiver le mode zen"
diff --git a/config/locales/crowdin/js-id.yml b/config/locales/crowdin/js-id.yml
index e133255e427f..55f9a40004f1 100644
--- a/config/locales/crowdin/js-id.yml
+++ b/config/locales/crowdin/js-id.yml
@@ -102,7 +102,7 @@ id:
button_save: "Simpan"
button_settings: "Pengaturan"
button_uncheck_all: "Uncek semua"
- button_update: "Perbarui"
+ button_update: "Update"
button_export-pdf: "Download PDF"
button_export-atom: "Download Atom"
button_create: "Buat baru"
diff --git a/config/locales/crowdin/js-no.yml b/config/locales/crowdin/js-no.yml
index 7758851695d3..ce8edd7cc2a5 100644
--- a/config/locales/crowdin/js-no.yml
+++ b/config/locales/crowdin/js-no.yml
@@ -102,7 +102,7 @@
button_save: "Lagre"
button_settings: "Innstillinger"
button_uncheck_all: "Avmerk alle"
- button_update: "Oppdater"
+ button_update: "Oppdatèr"
button_export-pdf: "Last ned PDF"
button_export-atom: "Last ned Atom"
button_create: "Opprett"
diff --git a/config/locales/crowdin/js-pt-BR.yml b/config/locales/crowdin/js-pt-BR.yml
index 63cb73415d72..9a2376e4791c 100644
--- a/config/locales/crowdin/js-pt-BR.yml
+++ b/config/locales/crowdin/js-pt-BR.yml
@@ -360,7 +360,7 @@ pt-BR:
"14_4":
standard:
new_features_html: >
- The release contains various new features and improvements, such as:
Dark mode option in personal settings
Separate permissions for viewing and editing on project attributes
Improved status-based progress reporting
Connection validation for Nextcloud storages
More filter options for project lists
+ A versão contém vários novos recursos e aprimoramentos, como:
Opção de modo escuro nas configurações pessoais
Permissões separadas para visualização e edição dos atributos do projeto
Relatórios de progresso baseados em status aprimorados
Validação de conexão para armazenamentos Nextcloud
Mais opções de filtro para listas de projetos
ical_sharing_modal:
title: "Assinar calendário"
inital_setup_error_message: "Ocorreu um erro ao buscar dados."
diff --git a/config/locales/crowdin/js-ro.yml b/config/locales/crowdin/js-ro.yml
index 3f474cdde792..5bb6939aab9a 100644
--- a/config/locales/crowdin/js-ro.yml
+++ b/config/locales/crowdin/js-ro.yml
@@ -102,7 +102,7 @@ ro:
button_save: "Salvează"
button_settings: "Setări"
button_uncheck_all: "Deselectează tot"
- button_update: "Actualizează"
+ button_update: "Actualizare"
button_export-pdf: "Descarcă PDF"
button_export-atom: "Descarcă Atom"
button_create: "Creează"
@@ -757,7 +757,7 @@ ro:
label: "Întrerupeți temporar memento-urile zilnice prin e-mail"
first_day: "Prima zi"
last_day: "Ultima zi"
- text_are_you_sure: "Ești sigur?"
+ text_are_you_sure: "Sunteți sigur?"
text_data_lost: "Toate datele introduse vor fi pierdute."
text_user_wrote: "%{value} a scris:"
types:
diff --git a/config/locales/crowdin/js-ru.yml b/config/locales/crowdin/js-ru.yml
index b454f9ee123c..21bdcfaf1463 100644
--- a/config/locales/crowdin/js-ru.yml
+++ b/config/locales/crowdin/js-ru.yml
@@ -102,7 +102,7 @@ ru:
button_save: "Сохранить"
button_settings: "Настройки"
button_uncheck_all: "Снять все отметки"
- button_update: "Обновить"
+ button_update: "Обновление"
button_export-pdf: "Скачать PDF"
button_export-atom: "Скачать Atom"
button_create: "Создать"
diff --git a/config/locales/crowdin/js-vi.yml b/config/locales/crowdin/js-vi.yml
index 665f62f99cee..60856c46ea82 100644
--- a/config/locales/crowdin/js-vi.yml
+++ b/config/locales/crowdin/js-vi.yml
@@ -102,7 +102,7 @@ vi:
button_save: "Lưu"
button_settings: "Cài đặt"
button_uncheck_all: "Bỏ chọn tất cả"
- button_update: "Cập nhật"
+ button_update: "Cập Nhật"
button_export-pdf: "Tải xuống PDF"
button_export-atom: "Tải xuống Atom"
button_create: "Tạo"
diff --git a/config/locales/crowdin/js-zh-CN.yml b/config/locales/crowdin/js-zh-CN.yml
index e70f8b25452e..68289e86ba07 100644
--- a/config/locales/crowdin/js-zh-CN.yml
+++ b/config/locales/crowdin/js-zh-CN.yml
@@ -1184,7 +1184,7 @@ zh-CN:
other: "%{count} 天"
zero: "0 天"
word:
- other: "%{count} words"
+ other: " %{count} 个单词"
zen_mode:
button_activate: "激活 zen 模式"
button_deactivate: "取消激活 zen 模式"
diff --git a/config/locales/crowdin/pl.yml b/config/locales/crowdin/pl.yml
index f8ee29dc4695..67fefcc4b648 100644
--- a/config/locales/crowdin/pl.yml
+++ b/config/locales/crowdin/pl.yml
@@ -818,7 +818,7 @@ pl:
confirmation: "nie pasuje do %{attribute}."
could_not_be_copied: "Nie można było (w pełni) skopiować %{dependency}."
does_not_exist: "nie istnieje."
- error_enterprise_only: "%{action} jest dostępna tylko w OpenProject Enterprise Edition"
+ error_enterprise_only: "%{action} jest dostępna tylko w OpenProject Enterprise edition"
error_unauthorized: "— nie można uzyskac dostępu."
error_readonly: "— podjęto próbę zapisu, ale nie jest zapisywalny."
error_conflict: "Information has been updated by at least one other user in the meantime."
diff --git a/config/locales/crowdin/pt-BR.yml b/config/locales/crowdin/pt-BR.yml
index c57cc6f876fc..fbce2bed5b74 100644
--- a/config/locales/crowdin/pt-BR.yml
+++ b/config/locales/crowdin/pt-BR.yml
@@ -211,12 +211,12 @@ pt-BR:
reorder_confirmation: "Aviso: A ordem atual dos valores disponíveis será perdida. Continuar?"
instructions:
is_required: "Marcar o campo personalizado como obrigatório. Isto tornará obrigatório o preenchimento do campo ao criar novos recursos ou ao atualizar recursos existentes."
- is_required_for_project: "Check to enable this attribute and make it required in all projects. It cannot be deactived for individual projects."
+ is_required_for_project: "Marque para ativar esse atributo e torná-lo obrigatório em todos os projetos. Ele não pode ser desativado para projetos individuais."
is_for_all: "Marcar o campo personalizado como disponível em todos os projetos existentes e novos."
searchable: "Incluir os valores dos campos ao utilizar a funcionalidade de busca global."
- searchable_for_project: "Check to make this attribute available as a filter in project lists."
+ searchable_for_project: "Marque para tornar esse atributo disponível como um filtro nas listas de projetos."
editable: "Permita que o campo seja editável pelos próprios usuários."
- admin_only: "Check to make this attribute only visible to administrators. Users without admin rights will not be able to view or edit it."
+ admin_only: "Marque para tornar esse atributo visível apenas para os administradores. Os usuários sem direitos de administrador não poderão visualizá-lo ou editá-lo."
is_filter: >
Permita que o campo personalizado seja utilizado num filtro nas visualizações do pacote de trabalho. Note que apenas com a opção "Para todos os projetos" selecionada, o campo personalizado irá aparecer nas visualizações globais.
tab:
@@ -264,8 +264,8 @@ pt-BR:
no_results_title_text: Atualmente, não existem projetos
no_results_content_text: Criar um novo projeto
search:
- label: Project name filter
- placeholder: Search by project name
+ label: Filtro de nome de projeto
+ placeholder: Pesquisar por nome de projeto
lists:
active: "Projetos ativos"
my: "Meus projetos"
@@ -391,8 +391,8 @@ pt-BR:
my:
access_token:
create_dialog:
- header: The %{type} token has been generated
- warning: Note that this is the only time you will see this token, make sure to copy it now.
+ header: O token %{type} foi gerado
+ warning: Note que esta é a única vez que você verá esse token, certifique-se de copiá-lo agora.
errors:
token_name_blank: "Forneça um nome para o token de API."
token_name_in_use: "Este nome de token de API já está em uso, escolha outro."
@@ -622,7 +622,7 @@ pt-BR:
possible_values: "Valores possíveis"
regexp: "Expressão regular"
searchable: "Pesquisável"
- admin_only: "Admin-only"
+ admin_only: "Somente administrador"
custom_value:
value: "Valor"
doorkeeper/application:
@@ -692,7 +692,7 @@ pt-BR:
versions: "Versões"
work_packages: "Pacotes de Trabalho"
project_custom_field:
- is_required: "Required for all projects"
+ is_required: "Obrigatório para todos os projetos"
custom_field_section: Seção
query:
column_names: "Colunas"
@@ -1038,10 +1038,10 @@ pt-BR:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
- must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "não corresponde ao trabalho e ao trabalho restante"
+ cannot_be_set_when_work_is_zero: "não pode ser definido quando o trabalho é 0h"
+ must_be_set_when_remaining_work_is_set: "necessário quando o Trabalho restante for definido."
+ must_be_set_when_work_and_remaining_work_are_set: "necessário quando o Trabalho e o Trabalho restante são definidos."
inclusion: "deve estar entre 0 e 100."
due_date:
not_start_date: "não é na data de início, embora isso seja necessário para os marcos."
@@ -1071,17 +1071,17 @@ pt-BR:
does_not_exist: "Categoria especificada não existe."
estimated_hours:
not_a_number: "não é uma duração válida."
- cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
+ cant_be_inferior_to_remaining_work: "não pode ser menor do que o Trabalho restante."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "necessário quando o Trabalho restante e o % concluído são definidos."
remaining_hours:
not_a_number: "não é uma duração válida."
- cant_exceed_work: "cannot be higher than Work."
- must_be_set_when_work_is_set: "required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ cant_exceed_work: "não pode ser maior que o Trabalho."
+ must_be_set_when_work_is_set: "necessário quando o Trabalho for definido."
+ must_be_set_when_work_and_percent_complete_are_set: "necessário quando Trabalho e % concluído são definidos."
must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
- must be 0h when Work is set and % Complete is 100%.
+ deve ser 0h quando o trabalho é definido e % concluído é de 100%.
must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
- must be empty when Work is empty and % Complete is 100%.
+ deve estar vazio quando Trabalho estiver vazio e %completo for 100%.
readonly_status: "O pacote de trabalho está em estado somente leitura, então seus atributos não podem ser alterados."
type:
attributes:
@@ -1165,8 +1165,8 @@ pt-BR:
other: "Papéis"
status: "Situação do pacote de trabalho"
token/api:
- one: Access token
- other: Access tokens
+ one: Token de acesso
+ other: Tokens de acesso
type: "Tipo"
user: "Usuário"
version: "Versão"
@@ -1648,10 +1648,10 @@ pt-BR:
subproject: "Subprojeto: %{name}"
export:
dialog:
- title: "Export"
- submit: "Export"
+ title: "Exportar"
+ submit: "Exportar"
format:
- label: "File format"
+ label: "Formato do arquivo"
options:
csv:
label: "CSV"
@@ -1660,37 +1660,37 @@ pt-BR:
xls:
label: "XLS"
columns:
- input_label_report: "Add columns to attribute table"
- input_caption_report: "By default all attributes added as columns in the work package list are selected. Long text fields are not available in the attribute table, but can be displayed below it."
- input_caption_table: "By default all attributes added as columns in the work package list are selected. Long text fields are not available in table based exports."
+ input_label_report: "Adicionar colunas à tabela de atributos"
+ input_caption_report: "Por padrão, todos os atributos adicionados como colunas na lista de pacotes de trabalho são selecionados. Os campos de texto longo não estão disponíveis na tabela de atributos, mas podem ser exibidos abaixo dela."
+ input_caption_table: "Por padrão, todos os atributos adicionados como colunas na lista de pacotes de trabalho são selecionados. Os campos de texto longo não estão disponíveis na tabela de atributos, mas podem ser exibidos abaixo dela."
pdf:
export_type:
- label: "PDF export type"
+ label: "Formato de exportação de PDF"
options:
table:
- label: "Table"
- caption: "Export the work packages list in a table with the desired columns."
+ label: "Tabela"
+ caption: "Exporte a lista de pacotes de trabalho em uma tabela com as colunas desejadas."
report:
- label: "Report"
- caption: "Export the work package on a detailed report of all work packages in the list."
+ label: "Relatório"
+ caption: "Exportar o pacote de trabalho em um relatório detalhado de todos os pacotes de trabalho da lista."
gantt:
- label: "Gantt chart"
- caption: "Export the work packages list in a Gantt diagram view."
+ label: "Gráfico de Gantt"
+ caption: "Exportar a lista de pacotes de trabalho em uma visualização de diagrama de Gantt."
include_images:
- label: "Include images"
- caption: "Exclude images to reduce the size of the PDF export."
+ label: "Incluir imagens"
+ caption: "Excluir imagens para reduzir o tamanho da exportação do PDF."
gantt_zoom_levels:
- label: "Zoom levels"
- caption: "Select what is the zoom level for dates displayed in the chart."
+ label: "Níveis de ampliação"
+ caption: "Selecione qual é o nível de ampliação para as datas exibidas no gráfico."
options:
- days: "Days"
- weeks: "Weeks"
- months: "Months"
- quarters: "Quarters"
+ days: "Dias"
+ weeks: "Semanas"
+ months: "Meses"
+ quarters: "Trimestres"
column_width:
- label: "Table column width"
+ label: "Largura da coluna da tabela"
options:
- narrow: "Narrow"
+ narrow: "Estreito"
medium: "Medium"
wide: "Wide"
very_wide: "Very wide"
diff --git a/config/locales/crowdin/ro.yml b/config/locales/crowdin/ro.yml
index 18f916b57fff..cf80e3dee3cd 100644
--- a/config/locales/crowdin/ro.yml
+++ b/config/locales/crowdin/ro.yml
@@ -2093,7 +2093,7 @@ ro:
label_duplicated_by: "dublat de"
label_duplicate: "duplicat"
label_duplicates: "dublează"
- label_edit: "Editează"
+ label_edit: "Editare"
label_edit_x: "Editare: %{x}"
label_enable_multi_select: "Comutare selecție multiplă"
label_enabled_project_custom_fields: "Câmpuri personalizate activate"
@@ -2145,7 +2145,7 @@ ro:
label_generate_key: "Generare cheie"
label_git_path: "Calea catre directorul .git"
label_greater_or_equal: ">="
- label_group_by: "Grupează după"
+ label_group_by: "Grupare după"
label_group_new: "Grupare nouă"
label_group: "Grup"
label_group_named: "Grup %{name}"
diff --git a/config/locales/crowdin/sl.yml b/config/locales/crowdin/sl.yml
index 00fed2c09ece..28e79a652a23 100644
--- a/config/locales/crowdin/sl.yml
+++ b/config/locales/crowdin/sl.yml
@@ -1502,8 +1502,8 @@ sl:
- "avgust"
- "september"
- "oktober"
- - "november"
- - "december"
+ - "November"
+ - "December"
order:
- :leto
- :mesec
diff --git a/config/locales/crowdin/tr.yml b/config/locales/crowdin/tr.yml
index 68269daef45a..688ef6f4531b 100644
--- a/config/locales/crowdin/tr.yml
+++ b/config/locales/crowdin/tr.yml
@@ -1229,7 +1229,7 @@ tr:
base: "Genel Hata:"
blocks_ids: "Engellenen iş paketlerinin ID'leri"
category: "Kategori"
- comment: "Yorumlar"
+ comment: "Yorum"
comments: "Yorum"
content: "İçerik"
color: "Renk"
diff --git a/config/locales/crowdin/uk.yml b/config/locales/crowdin/uk.yml
index 1624d8dc48db..98c60256fded 100644
--- a/config/locales/crowdin/uk.yml
+++ b/config/locales/crowdin/uk.yml
@@ -2199,7 +2199,7 @@ uk:
label_index_by_title: "Індекс за назвою"
label_information: "Інформація"
label_information_plural: "Інформація"
- label_installation_guides: "Інструкції із встановлення"
+ label_installation_guides: "Інструкції зі встановлення"
label_integer: "Ціле число"
label_internal: "Власне"
label_introduction_video: "Введення відео"
diff --git a/config/locales/crowdin/vi.yml b/config/locales/crowdin/vi.yml
index 88766dcd0ed6..fff5d7331f19 100644
--- a/config/locales/crowdin/vi.yml
+++ b/config/locales/crowdin/vi.yml
@@ -2064,7 +2064,7 @@ vi:
label_file_plural: "Tệp"
label_filter_add: "Thêm bộ lọc"
label_filter: "Bộ lọc"
- label_filter_plural: "Các bộ lọc"
+ label_filter_plural: "Bộ lọc"
label_filters_toggle: "Hiển thị/ẩn bộ lọc"
label_float: "Số thực"
label_folder: "Thư mục"
diff --git a/config/locales/crowdin/zh-CN.seeders.yml b/config/locales/crowdin/zh-CN.seeders.yml
index 64166d212273..037d46169ec8 100644
--- a/config/locales/crowdin/zh-CN.seeders.yml
+++ b/config/locales/crowdin/zh-CN.seeders.yml
@@ -81,7 +81,7 @@ zh-CN:
demo-project:
name: 演示项目
status_explanation: 所有任务都按计划进行。相关人员均知晓各自任务。系统已完全建立。
- description: 这是对此演示 Scrum 项目目标的简短摘要。
+ description: 这是对此演示项目目标的简短摘要。
news:
item_0:
title: 欢迎来到您的演示项目
@@ -199,7 +199,7 @@ zh-CN:
scrum-project:
name: Scrum 项目
status_explanation: 所有任务都按计划进行。相关人员均知晓各自任务。系统已完全建立。
- description: 这是对此演示 Scrum 项目目标的简短摘要。
+ description: 这是对此演示Scrum项目目标的简短摘要。
news:
item_0:
title: 欢迎来到您的 Scrum 演示项目
diff --git a/config/locales/crowdin/zh-CN.yml b/config/locales/crowdin/zh-CN.yml
index 396e2ec5554b..90615fc3d625 100644
--- a/config/locales/crowdin/zh-CN.yml
+++ b/config/locales/crowdin/zh-CN.yml
@@ -67,7 +67,7 @@ zh-CN:
text: "您确定要删除当前使用的企业版令牌吗?"
title: "删除令牌"
replace_token: "替换您当前的支持令牌"
- order: "订购本地部署版的 Enterprise edition"
+ order: "订购本地部署的 Enterprise edition"
paste: "粘贴您企业版的支持令牌"
required_for_feature: "此功能仅限具激活的企业版支持令牌的订阅者使用。"
enterprise_link: "如需了解详细信息,请单击此处。"
@@ -2316,7 +2316,7 @@ zh-CN:
label_revision_id: "修订版本 %{value}"
label_revision_plural: "修订"
label_roadmap: "路线图"
- label_roadmap_edit: "编辑路线图%{name}"
+ label_roadmap_edit: "编辑路线图 %{name}"
label_roadmap_due_in: "%{value} 到期"
label_roadmap_no_work_packages: "该版本没有工作包。"
label_roadmap_overdue: "%{value} 超时"
@@ -2965,7 +2965,7 @@ zh-CN:
managed: "在 OpenProject 中创建新的存储库"
storage:
not_available: "磁盘存储开销不可用于此存储库。"
- update_timeout: "在 N 分钟内保留存储库最后所需的磁盘空间信息。由于计算存储库所需的磁盘空间可能增加系统开销,增加该值可以减少性能影响。"
+ update_timeout: "在 N 分钟内保留存储库最后所需磁盘空间的信息。由于计算存储库所需的磁盘空间可能增加系统开销,增加该值可以减少性能影响。"
oauth_application_details: "关闭此窗口后,将无法再次访问客户端密钥值。请将这些值复制到 Nextcloud OpenProject 集成设置中:"
oauth_application_details_link_text: "转到设置页面"
setup_documentation_details: "如果您在配置新文件存储方面需要帮助,请查看文档:"
@@ -3116,7 +3116,7 @@ zh-CN:
setting_session_ttl_hint: "当设置的值低于5时,其作用类似于禁用。"
setting_session_ttl_enabled: "会话过期"
setting_start_of_week: "一周起始日"
- setting_sys_api_enabled: "启用存储库管理网页服务"
+ setting_sys_api_enabled: "启用版本库管理 web 服务"
setting_sys_api_description: "存储库管理网页服务提供了集成的,用户授权的存储库访问。"
setting_time_format: "时间"
setting_accessibility_mode_for_anonymous: "为匿名用户启用辅助功能模式"
@@ -3428,7 +3428,7 @@ zh-CN:
warning_user_limit_reached_admin: >
添加额外的用户将超出当前限制。请升级您的计划,以确保外部用户能够访问此实例。
warning_user_limit_reached_instructions: >
- 您已达到用户限制(%{current}/%{max} 活跃用户)。请联系 sales@openproject.com 升级您的企业版计划以添加额外用户。
+ 您达到了用户限制(%{current}/%{max}活跃用户)。 请联系sales@openproject.com以升级您的Enterprise edition计划并添加其他用户。
warning_protocol_mismatch_html: >
warning_bar:
diff --git a/config/locales/crowdin/zh-TW.yml b/config/locales/crowdin/zh-TW.yml
index 2a2764865450..2d3174e08898 100644
--- a/config/locales/crowdin/zh-TW.yml
+++ b/config/locales/crowdin/zh-TW.yml
@@ -2060,7 +2060,7 @@ zh-TW:
label_file_plural: "檔案"
label_filter_add: "新增條件"
label_filter: "篩選條件"
- label_filter_plural: "篩選條件"
+ label_filter_plural: "篩選器"
label_filters_toggle: "顯示/隱藏篩選條件"
label_float: "浮點數"
label_folder: "資料夾"
@@ -2073,7 +2073,7 @@ zh-TW:
label_generate_key: "產生一個金鑰"
label_git_path: ".git 目錄的路徑"
label_greater_or_equal: ">="
- label_group_by: "分類"
+ label_group_by: "分組依據"
label_group_new: "新增群組"
label_group: "群組"
label_group_named: "群組名稱 %{name}"
@@ -2084,7 +2084,7 @@ zh-TW:
label_history: "歷史"
label_hierarchy_leaf: "頁面結構頁"
label_home: "Home"
- label_subject_or_id: "名稱或 id"
+ label_subject_or_id: "主旨或 id"
label_calendar_subscriptions: "訂閱行事曆"
label_identifier: "識別碼"
label_in: "在"
@@ -2127,7 +2127,7 @@ zh-TW:
label_latest_revision_plural: "最新版本"
label_ldap_authentication: "LDAP 認證"
label_learn_more: "了解更多"
- label_less_or_equal: "之後"
+ label_less_or_equal: "<="
label_less_than_ago: "幾天內"
label_link_url: "連結(URL)"
label_list: "清單"
diff --git a/modules/backlogs/config/locales/crowdin/zh-TW.yml b/modules/backlogs/config/locales/crowdin/zh-TW.yml
index 6a7b6d653910..aaef165b374f 100644
--- a/modules/backlogs/config/locales/crowdin/zh-TW.yml
+++ b/modules/backlogs/config/locales/crowdin/zh-TW.yml
@@ -21,7 +21,7 @@
#++
zh-TW:
plugin_openproject_backlogs:
- name: "OpenProject待辦事項"
+ name: "OpenProject代辦事項"
description: "此模組新增了讓敏捷團隊能夠在 Scrum 專案中使用 OpenProject 的功能。"
activerecord:
attributes:
diff --git a/modules/bim/config/locales/crowdin/fr.yml b/modules/bim/config/locales/crowdin/fr.yml
index 9e4ab945797c..1be78163d4bc 100644
--- a/modules/bim/config/locales/crowdin/fr.yml
+++ b/modules/bim/config/locales/crowdin/fr.yml
@@ -58,7 +58,7 @@ fr:
perform_description: "Voulez-vous importer ou mettre à jour les problèmes repris ci-dessus ?"
replace_with_system_user: 'Les remplacer par l''utilisateur "Système"'
import_as_system_user: 'Les importer comme utilisateur "Système".'
- what_to_do: "Que voulez-vous faire ?"
+ what_to_do: "Que voulez-vous faire?"
work_package_has_newer_changes: "Obsolète ! Ce sujet n'a pas été mis à jour, car les derniers changements sur le serveur étaient plus récents que la \"ModifiedDate\" du sujet importé. Toutefois, les commentaires sur le sujet ont été importés."
bcf_file_not_found: "Impossible de localiser le fichier BCF. Veuillez recommencer le processus de téléversement."
export:
diff --git a/modules/budgets/config/locales/crowdin/cs.yml b/modules/budgets/config/locales/crowdin/cs.yml
index 72dd2ee8925f..231267126ec3 100644
--- a/modules/budgets/config/locales/crowdin/cs.yml
+++ b/modules/budgets/config/locales/crowdin/cs.yml
@@ -27,7 +27,7 @@ cs:
budget:
author: "Autor"
available: "Dostupné"
- budget: "Plánované"
+ budget: "Rozpočet"
budget_ratio: "Stráveno (poměr)"
description: "Popis"
spent: "Strávený čas"
diff --git a/modules/job_status/config/locales/crowdin/fr.yml b/modules/job_status/config/locales/crowdin/fr.yml
index f08ef07ded87..0c756fd92d6c 100644
--- a/modules/job_status/config/locales/crowdin/fr.yml
+++ b/modules/job_status/config/locales/crowdin/fr.yml
@@ -4,18 +4,18 @@ fr:
name: "Statut de tâches OpenProject"
description: "Liste et état des tâches d'arrière-plan."
job_status_dialog:
- download_starts: 'The download should start automatically.'
- link_to_download: 'Or, %{link} to download.'
- click_here: 'click here'
- title: 'Background job status'
- redirect: 'You are being redirected.'
- redirect_link: 'Please click here to continue.'
- redirect_errors: 'Due to these errors, you will not be redirected automatically.'
- errors: 'Something went wrong'
+ download_starts: 'Le téléchargement devrait démarrer automatiquement.'
+ link_to_download: 'Ou %{link} pour télécharger.'
+ click_here: 'cliquez ici'
+ title: 'Statut de la tâche en arrière-plan'
+ redirect: 'Vous allez être redirigé.'
+ redirect_link: 'Veuillez cliquer ici pour continuer.'
+ redirect_errors: 'En raison de ces erreurs, vous ne serez pas redirigé automatiquement.'
+ errors: 'Un problème est survenu'
generic_messages:
- not_found: 'This job could not be found.'
- in_queue: 'The job has been queued and will be processed shortly.'
- in_process: 'The job is currently being processed.'
- error: 'The job has failed to complete.'
- cancelled: 'The job has been cancelled due to an error.'
- success: 'The job completed successfully.'
+ not_found: 'Impossible de trouver cette tâche.'
+ in_queue: 'La tâche a été mise en file d''attente et sera traitée sous peu.'
+ in_process: 'La tâche est en cours de traitement.'
+ error: 'La tâche n''a pas été terminée.'
+ cancelled: 'La tâche a été annulée en raison d''une erreur.'
+ success: 'Le travail a été effectué avec succès.'
diff --git a/modules/job_status/config/locales/crowdin/pt-BR.yml b/modules/job_status/config/locales/crowdin/pt-BR.yml
index b25252d34725..d71598f27261 100644
--- a/modules/job_status/config/locales/crowdin/pt-BR.yml
+++ b/modules/job_status/config/locales/crowdin/pt-BR.yml
@@ -4,18 +4,18 @@ pt-BR:
name: "Situação do trabalho OpenProject"
description: "Listagem e situação dos trabalhos em segundo plano."
job_status_dialog:
- download_starts: 'The download should start automatically.'
- link_to_download: 'Or, %{link} to download.'
- click_here: 'click here'
- title: 'Background job status'
- redirect: 'You are being redirected.'
- redirect_link: 'Please click here to continue.'
- redirect_errors: 'Due to these errors, you will not be redirected automatically.'
- errors: 'Something went wrong'
+ download_starts: 'O download deve iniciar automaticamente.'
+ link_to_download: 'Ou, %{link} para baixar.'
+ click_here: 'clique aqui'
+ title: 'Status do trabalho em segundo plano'
+ redirect: 'Você está sendo redirecionado.'
+ redirect_link: 'Por favor, clique aqui para continuar.'
+ redirect_errors: 'Devido a esses erros, você não será redirecionado automaticamente.'
+ errors: 'Algo deu errado'
generic_messages:
- not_found: 'This job could not be found.'
- in_queue: 'The job has been queued and will be processed shortly.'
- in_process: 'The job is currently being processed.'
- error: 'The job has failed to complete.'
- cancelled: 'The job has been cancelled due to an error.'
- success: 'The job completed successfully.'
+ not_found: 'Este trabalho não pôde ser encontrado.'
+ in_queue: 'O trabalho foi colocado na fila e será processado em breve.'
+ in_process: 'O trabalho está sendo processado.'
+ error: 'O trabalho não pôde ser finalizado.'
+ cancelled: 'O trabalho foi cancelado devido a um erro.'
+ success: 'Trabalho concluído com sucesso.'
diff --git a/modules/ldap_groups/config/locales/crowdin/zh-CN.yml b/modules/ldap_groups/config/locales/crowdin/zh-CN.yml
index d551c0a9e91e..4d0259eed6ce 100644
--- a/modules/ldap_groups/config/locales/crowdin/zh-CN.yml
+++ b/modules/ldap_groups/config/locales/crowdin/zh-CN.yml
@@ -1,7 +1,7 @@
zh-CN:
plugin_openproject_ldap_groups:
name: "OpenProject LDAP 组"
- description: "LDAP组成员同步。"
+ description: "LDAP 组成员同步。"
activerecord:
attributes:
ldap_groups/synchronized_group:
diff --git a/modules/ldap_groups/config/locales/crowdin/zh-TW.yml b/modules/ldap_groups/config/locales/crowdin/zh-TW.yml
index d7227e6063ba..9f9da07a50a7 100644
--- a/modules/ldap_groups/config/locales/crowdin/zh-TW.yml
+++ b/modules/ldap_groups/config/locales/crowdin/zh-TW.yml
@@ -9,7 +9,7 @@ zh-TW:
ldap_auth_source: 'LDAP 連線'
sync_users: '同步使用者'
ldap_groups/synchronized_filter:
- filter_string: 'LDAP篩選條件'
+ filter_string: '簡約登入目錄制約(LDAP)篩選'
ldap_auth_source: 'LDAP 連線'
group_name_attribute: "群組名字屬性"
sync_users: '同步使用者'
diff --git a/modules/meeting/config/locales/crowdin/cs.yml b/modules/meeting/config/locales/crowdin/cs.yml
index f3d5a55737bb..4c5affff2da4 100644
--- a/modules/meeting/config/locales/crowdin/cs.yml
+++ b/modules/meeting/config/locales/crowdin/cs.yml
@@ -139,7 +139,7 @@ cs:
types:
classic: "Klasické"
classic_text: "Uspořádat schůzku do formátů textového programu a protokolu."
- structured: "Dynamický"
+ structured: "Dynamická"
structured_text: "Uspořádat schůzku jako seznam bodů pořadu jednání, případně je propojit s pracovním balíčkem."
structured_text_copy: "Kopírování schůzky v současné době nezkopíruje související body pořadu jednání, jen podrobnosti"
copied: "Zkopírováno ze schůzky #%{id}"
@@ -153,7 +153,7 @@ cs:
notice_meeting_updated: "This page has been updated by someone else. Reload to view changes."
permission_create_meetings: "Vytvořit schůzku\n"
permission_edit_meetings: "Upravit schůzku"
- permission_delete_meetings: "Odstranit schůzky"
+ permission_delete_meetings: "Smazat schůzku"
permission_view_meetings: "Zobrazit schůzky"
permission_create_meeting_agendas: "Vytvořit agendy schůzek"
permission_create_meeting_agendas_explanation: "Umožňuje upravovat obsah programu klasické schůzky."
diff --git a/modules/meeting/config/locales/crowdin/fr.yml b/modules/meeting/config/locales/crowdin/fr.yml
index 4717f449718f..0695f46e26f1 100644
--- a/modules/meeting/config/locales/crowdin/fr.yml
+++ b/modules/meeting/config/locales/crowdin/fr.yml
@@ -123,7 +123,7 @@ fr:
email:
send_emails: "Envoyer des e-mails"
send_invitation_emails: >
- Send an email invitation immediately to the participants selected above. You can also do this manually at any time later.
+ Envoyez immédiatement une invitation par e-mail aux participants sélectionnés ci-dessus. Vous pouvez également le faire manuellement à tout moment par la suite.
open_meeting_link: "Ouvrir la réunion"
invited:
summary: "%{actor} vous a envoyé une invitation pour la réunion %{title}"
@@ -148,7 +148,7 @@ fr:
empty_text: "Faites glisser des éléments ici ou créez-en un nouveau"
notice_successful_notification: "Notification envoyée avec succès"
notice_timezone_missing: Aucun fuseau horaire n'est défini et %{zone} est supposé. Pour choisir votre fuseau horaire, veuillez cliquer ici.
- notice_meeting_updated: "This page has been updated by someone else. Reload to view changes."
+ notice_meeting_updated: "Cette page a été mise à jour par quelqu'un d'autre. Rechargez pour voir les changements."
permission_create_meetings: "Créer des réunions"
permission_edit_meetings: "Modifier les réunions"
permission_delete_meetings: "Supprimer des réunions"
@@ -180,7 +180,7 @@ fr:
label_meeting_delete: "Supprimer la réunion"
label_meeting_created_by: "Créé par"
label_meeting_last_updated: "Dernière mise à jour"
- label_meeting_reload: "Reload"
+ label_meeting_reload: "Actualiser"
label_agenda_items: "Points de l'ordre du jour"
label_agenda_items_reordered: "réorganisé"
label_agenda_item_remove: "Supprimer de l'ordre du jour"
diff --git a/modules/meeting/config/locales/crowdin/js-pt-BR.yml b/modules/meeting/config/locales/crowdin/js-pt-BR.yml
index de1593cfc11c..5e68df5c7f6b 100644
--- a/modules/meeting/config/locales/crowdin/js-pt-BR.yml
+++ b/modules/meeting/config/locales/crowdin/js-pt-BR.yml
@@ -24,4 +24,4 @@ pt-BR:
label_meetings: 'Reuniões'
work_packages:
tabs:
- meetings: 'Meetings'
+ meetings: 'Reuniões'
diff --git a/modules/meeting/config/locales/crowdin/pt-BR.yml b/modules/meeting/config/locales/crowdin/pt-BR.yml
index 427360f16ae1..f8261883a6d8 100644
--- a/modules/meeting/config/locales/crowdin/pt-BR.yml
+++ b/modules/meeting/config/locales/crowdin/pt-BR.yml
@@ -123,7 +123,7 @@ pt-BR:
email:
send_emails: "Enviar e-mails"
send_invitation_emails: >
- Send an email invitation immediately to the participants selected above. You can also do this manually at any time later.
+ Enviar um convite por e-mail imediatamente para os participantes selecionados acima. Você também pode fazer isso manualmente a qualquer momento mais tarde.
open_meeting_link: "Abrir reunião"
invited:
summary: "%{actor} enviou a você um convite para a reunião %{title}"
@@ -148,7 +148,7 @@ pt-BR:
empty_text: "Arraste itens para cá ou crie um novo."
notice_successful_notification: "Notificação enviada com sucesso"
notice_timezone_missing: Nenhum fuso horário está definido, portanto assumiu-se %{zone}. Para escolher o seu fuso horário, clique aqui.
- notice_meeting_updated: "This page has been updated by someone else. Reload to view changes."
+ notice_meeting_updated: "Esta página foi atualizada por outra pessoa. Recarregue para ver as alterações."
permission_create_meetings: "Criar reuniões"
permission_edit_meetings: "Editar reuniões"
permission_delete_meetings: "Excluir reuniões"
@@ -180,7 +180,7 @@ pt-BR:
label_meeting_delete: "Excluir reunião"
label_meeting_created_by: "Criado por"
label_meeting_last_updated: "Última atualização"
- label_meeting_reload: "Reload"
+ label_meeting_reload: "Recarregar"
label_agenda_items: "Itens da agenda"
label_agenda_items_reordered: "reorganizado"
label_agenda_item_remove: "Remover da agenda"
diff --git a/modules/meeting/config/locales/crowdin/zh-TW.yml b/modules/meeting/config/locales/crowdin/zh-TW.yml
index 96ddbd052990..b2d17c875bb5 100644
--- a/modules/meeting/config/locales/crowdin/zh-TW.yml
+++ b/modules/meeting/config/locales/crowdin/zh-TW.yml
@@ -156,7 +156,7 @@ zh-TW:
permission_create_meeting_agendas_explanation: "允許編輯傳統會議的議程。"
permission_manage_agendas: "管理議程"
permission_manage_agendas_explanation: "允許編輯動態會議的議程項目。"
- permission_close_meeting_agendas: "結束會議大綱"
+ permission_close_meeting_agendas: "定案會議大綱"
permission_send_meeting_agendas_notification: "傳送會議大綱審閱通知"
permission_create_meeting_minutes: "管理會議記錄"
permission_send_meeting_minutes_notification: "傳送會議記錄審閱通知"
diff --git a/modules/recaptcha/config/locales/crowdin/pt-BR.yml b/modules/recaptcha/config/locales/crowdin/pt-BR.yml
index a112034e88e9..964395fcc92b 100644
--- a/modules/recaptcha/config/locales/crowdin/pt-BR.yml
+++ b/modules/recaptcha/config/locales/crowdin/pt-BR.yml
@@ -9,7 +9,7 @@ pt-BR:
verify_account: "Verifique a sua conta"
error_captcha: "Não foi possível verificar sua conta. Por favor, entre em contato com um administrador."
settings:
- website_key: 'Website key (May also be called "Site key")'
+ website_key: 'Chave do site (também pode ser chamada "Código do site")'
response_limit: 'Limite de resposta para HCaptcha'
response_limit_text: 'O número máximo de caracteres para tratar a resposta HCaptcha como válida.'
website_key_text: 'Digite a chave do site que você criou no console de administração reCAPTCHA para este domínio.'
diff --git a/modules/reporting/config/locales/crowdin/ro.yml b/modules/reporting/config/locales/crowdin/ro.yml
index f7cd91798e51..5ef2b8b85bf6 100644
--- a/modules/reporting/config/locales/crowdin/ro.yml
+++ b/modules/reporting/config/locales/crowdin/ro.yml
@@ -68,7 +68,7 @@ ro:
label_filter: "Filtrare"
label_filter_add: "Adăugare filtru"
label_filter_plural: "Filtre"
- label_group_by: "Grupează după"
+ label_group_by: "Grupare după"
label_group_by_add: "Adăugați atributul Group-by"
label_inactive: "Inactiv"
label_no: "Nu"
diff --git a/modules/reporting/config/locales/crowdin/zh-TW.yml b/modules/reporting/config/locales/crowdin/zh-TW.yml
index 62f33a5bd15d..61c3f7c6d1c7 100644
--- a/modules/reporting/config/locales/crowdin/zh-TW.yml
+++ b/modules/reporting/config/locales/crowdin/zh-TW.yml
@@ -51,7 +51,7 @@ zh-TW:
label_money: "現金價值"
label_month_reporting: "月"
label_new_report: "新建成本報表"
- label_open: "開啟"
+ label_open: "進行中"
label_operator: "操作員"
label_private_report_plural: "私密成本報告"
label_progress_bar_explanation: "產生報告中..."
@@ -68,7 +68,7 @@ zh-TW:
label_filter: "篩選條件"
label_filter_add: "新增篩選條件"
label_filter_plural: "篩選條件"
- label_group_by: "分類"
+ label_group_by: "分組依據"
label_group_by_add: "新增分組依據屬性"
label_inactive: "«不活動»"
label_no: "否"
diff --git a/modules/storages/config/locales/crowdin/fr.yml b/modules/storages/config/locales/crowdin/fr.yml
index 4d7ed8199dce..2f2944a9654e 100644
--- a/modules/storages/config/locales/crowdin/fr.yml
+++ b/modules/storages/config/locales/crowdin/fr.yml
@@ -31,7 +31,7 @@ fr:
attributes:
host:
authorization_header_missing: n'est pas entièrement configuré. L'instance Nextcloud ne reçoit pas l'en-tête "Authorization", ce qui est nécessaire pour une autorisation basée sur un jeton Bearer des requêtes API. Veuillez vérifier la configuration de votre serveur HTTP.
- cannot_be_connected_to: could not be reached. Please ensure the host is reachable and the OpenProject integration app is installed.
+ cannot_be_connected_to: n'a pas pu être atteint. Veuillez vous assurer que l'hôte est joignable et que l'application d'intégration OpenProject est installée.
minimal_nextcloud_version_unmet: ne répond pas aux exigences minimales de version (doit être Nextcloud 23 ou supérieur)
not_nextcloud_server: n'est pas un serveur Nextcloud
op_application_not_installed: semble ne pas avoir installé l'application "Intégration OpenProject" . Veuillez d'abord l'installer puis réessayer.
diff --git a/modules/storages/config/locales/crowdin/pt-BR.yml b/modules/storages/config/locales/crowdin/pt-BR.yml
index 4f7dde05336e..b93f83e6f655 100644
--- a/modules/storages/config/locales/crowdin/pt-BR.yml
+++ b/modules/storages/config/locales/crowdin/pt-BR.yml
@@ -22,7 +22,7 @@ pt-BR:
storages/project_storage:
attributes:
project_folder_id:
- blank: Please select a folder.
+ blank: Selecione uma pasta.
project_folder_mode:
mode_unavailable: não está disponível para este armazenamento.
project_ids:
@@ -31,7 +31,7 @@ pt-BR:
attributes:
host:
authorization_header_missing: se não totalmente configurado. A instância Nextcloud não recebe o cabeçalho "Autorização", que é necessário para um token Bearer com base na autorização de solicitações de API. Verifique novamente suas configurações de servidor HTTP.
- cannot_be_connected_to: could not be reached. Please ensure the host is reachable and the OpenProject integration app is installed.
+ cannot_be_connected_to: não pôde ser acessado. Verifique se o host pode ser acessado e se o aplicativo de integração do OpenProject está instalado.
minimal_nextcloud_version_unmet: não atende aos requisitos mínimos de versão (deve ser Nextcloud 23 ou superior)
not_nextcloud_server: não é um servidor Nextcloud
op_application_not_installed: Parece não possui o aplicativo "OpenProject integration" instalado. Instale-o primeiro e depois tente novamente.
@@ -60,13 +60,13 @@ pt-BR:
project_module_storages: Arquivos
project_storages:
edit_project_folder:
- label: Edit project folder
+ label: Editar a pasta do projeto
project_folder_mode:
automatic: Gerenciado automaticamente
inactive: Nenhuma pasta específica
manual: Pasta existente gerenciada manualmente
remove_project:
- deletion_failure_flash: Failed to remove the project from the storage. %{error}
+ deletion_failure_flash: Falha ao remover o projeto do armazenamento. %{error}
dialog:
automatically_managed_appendix: Além disso, neste caso, este armazenamento tenha uma pasta de projeto gerenciado automaticamente, este e seus arquivos serão excluídos para sempre.
confirmation_text: Confirme se você entende e deseja remover este armazenamento de arquivos do projeto
@@ -317,23 +317,23 @@ pt-BR:
notice_successful_storage_connection: |-
Armazenamento conectado com sucesso! Lembre-se de ativar o módulo e o armazenamento específico nas configurações do projeto de cada projeto desejado para utilizá-lo.
oauth_access_granted_modal:
- access_granted: Access granted
+ access_granted: Acesso concedido
project_settings:
- access_granted_screen_reader: Access granted. You are now ready to use %{storage}
- storage_ready: You are now ready to use %{storage}
+ access_granted_screen_reader: Acesso concedido. Você está pronto para usar %{storage}
+ storage_ready: Agora você está pronto para usar %{storage}
storage_admin:
- access_granted_screen_reader: Access granted. You are now ready to add projects to %{storage}
- storage_ready: You are now ready to add projects to %{storage}
+ access_granted_screen_reader: Acesso concedido. Agora você está pronto para adicionar projetos ao %{storage}
+ storage_ready: Agora você está pronto para adicionar projetos ao %{storage}
oauth_grant_nudge_modal:
cancel_button_label: Cuidarei disso mais tarde
- heading: Login to %{provider_type} required
- login_button_aria_label: Login to %{storage}
- login_button_label: "%{provider_type} log in"
+ heading: Login para %{provider_type} necessário
+ login_button_aria_label: Faça login em %{storage}
+ login_button_label: "Login %{provider_type}"
project_settings:
- description: To get access to the project folder you need to login to %{storage}.
+ description: Para ter acesso à pasta do projeto, você precisa entrar no %{storage}.
requesting_access_to: Solicitação de acesso ao site %{storage}
storage_admin:
- description: In order to add projects to this storage you need to be logged into %{provider_type}. Please, log in and try again.
+ description: Para adicionar projetos a esse armazenamento, o senhor precisa estar conectado em %{provider_type}. Por favor, faça o login e tente novamente.
open_project_storage_modal:
success:
subtitle: Você está sendo redirecionado
diff --git a/modules/team_planner/config/locales/crowdin/js-fr.yml b/modules/team_planner/config/locales/crowdin/js-fr.yml
index 658122291596..67a93cb353c0 100644
--- a/modules/team_planner/config/locales/crowdin/js-fr.yml
+++ b/modules/team_planner/config/locales/crowdin/js-fr.yml
@@ -18,7 +18,7 @@ fr:
today: 'Aujourd''hui'
drag_here_to_remove: 'Faites glisser ici pour supprimer le responsable et les dates de début et de fin.'
cannot_drag_here: 'Impossible de supprimer le lot de travaux en raison des autorisations ou des restrictions d''édition.'
- cannot_drag_to_non_working_day: 'Ce lot de travaux ne peut pas démarrer/terminer sur un jour non ouvré.'
+ cannot_drag_to_non_working_day: 'Ce lot de travail ne peut pas démarrer/terminer sur un jour non ouvré.'
quick_add:
empty_state: 'Utilisez le champ de recherche pour trouver des lots de travaux et faites-les glisser vers le planificateur pour l''assigner à quelqu''un et définir des dates de début et de fin.'
search_placeholder: 'Rechercher...'
diff --git a/modules/two_factor_authentication/config/locales/crowdin/ro.yml b/modules/two_factor_authentication/config/locales/crowdin/ro.yml
index 717e80c0e557..ed1e50f455f2 100644
--- a/modules/two_factor_authentication/config/locales/crowdin/ro.yml
+++ b/modules/two_factor_authentication/config/locales/crowdin/ro.yml
@@ -174,7 +174,7 @@ ro:
label_expiration_hint: "%{date} sau la deconectare"
label_actions: "Acțiuni"
label_confirmed: "Confirmat"
- button_continue: "Continuă"
+ button_continue: "Continuaţi"
button_make_default: "Marcați ca implicit"
label_unverified_phone: "Telefonul mobil nu a fost încă verificat"
notice_phone_number_format: "Vă rugăm să introduceți numărul în următorul format: +XX XXXXXXXX."
diff --git a/modules/two_factor_authentication/config/locales/crowdin/ru.yml b/modules/two_factor_authentication/config/locales/crowdin/ru.yml
index 1b98cf398196..c8b20adea521 100644
--- a/modules/two_factor_authentication/config/locales/crowdin/ru.yml
+++ b/modules/two_factor_authentication/config/locales/crowdin/ru.yml
@@ -174,7 +174,7 @@ ru:
label_expiration_hint: "%{date} или при выходе из системы"
label_actions: "Действия"
label_confirmed: "Подтвержден"
- button_continue: "Продолжить"
+ button_continue: "Далее"
button_make_default: "Задать по умолчанию"
label_unverified_phone: "Сотовый телефон еще не подтвержден"
notice_phone_number_format: "Введите номер в следующем формате: +XX XXXXXXXX."
diff --git a/modules/two_factor_authentication/config/locales/crowdin/uk.yml b/modules/two_factor_authentication/config/locales/crowdin/uk.yml
index 08d5f4a4cbd9..b66b4ca73912 100644
--- a/modules/two_factor_authentication/config/locales/crowdin/uk.yml
+++ b/modules/two_factor_authentication/config/locales/crowdin/uk.yml
@@ -115,7 +115,7 @@ uk:
failed_to_delete: "Не вдалося видалити пристрій 2FA."
is_default_cannot_delete: "Пристрій позначено як типовий і його не можна видалити через активну політику безпеки. Перед видаленням позначте інший пристрій як стандартний."
not_existing: "Для вашого облікового запису не зареєстровано жодного пристрою 2FA."
- 2fa_from_input: Введіть код, отриманий на пристрій %{device_name}, щоб підтвердити свою особу.
+ 2fa_from_input: Введіть код, що надійшов на пристрій %{device_name}, щоб підтвердити свою особу.
2fa_from_webauthn: Укажіть пристрій WebAuthn %{device_name}. Якщо це USB-пристрій, переконайтеся, що його підключено, і торкніться його. Потім натисніть кнопку входу.
webauthn:
title: "WebAuthn"
diff --git a/modules/xls_export/config/locales/crowdin/zh-CN.yml b/modules/xls_export/config/locales/crowdin/zh-CN.yml
index 59230e603ecf..31c8d3cdd710 100644
--- a/modules/xls_export/config/locales/crowdin/zh-CN.yml
+++ b/modules/xls_export/config/locales/crowdin/zh-CN.yml
@@ -13,4 +13,4 @@ zh-CN:
xls_with_relations: "带关系的 XLS"
xls_export:
child_of: 此项的子项
- parent_of: 此项的父级
+ parent_of: 此项的父项
From a02ecc6a8953f765f7e691f532cc46d858569f01 Mon Sep 17 00:00:00 2001
From: OpenProject Actions CI
Date: Sat, 31 Aug 2024 03:07:42 +0000
Subject: [PATCH 041/147] update locales from crowdin [ci skip]
---
config/locales/crowdin/af.yml | 2 +-
config/locales/crowdin/ar.yml | 2 +-
config/locales/crowdin/az.yml | 2 +-
config/locales/crowdin/be.yml | 2 +-
config/locales/crowdin/bg.yml | 2 +-
config/locales/crowdin/ca.yml | 2 +-
config/locales/crowdin/ckb-IR.yml | 2 +-
config/locales/crowdin/cs.yml | 2 +-
config/locales/crowdin/da.yml | 2 +-
config/locales/crowdin/de.yml | 2 +-
config/locales/crowdin/el.yml | 2 +-
config/locales/crowdin/eo.yml | 2 +-
config/locales/crowdin/es.yml | 2 +-
config/locales/crowdin/et.yml | 2 +-
config/locales/crowdin/eu.yml | 2 +-
config/locales/crowdin/fa.yml | 2 +-
config/locales/crowdin/fi.yml | 2 +-
config/locales/crowdin/fil.yml | 2 +-
config/locales/crowdin/fr.yml | 34 +++----
config/locales/crowdin/he.yml | 2 +-
config/locales/crowdin/hi.yml | 2 +-
config/locales/crowdin/hr.yml | 2 +-
config/locales/crowdin/hu.yml | 2 +-
config/locales/crowdin/id.yml | 2 +-
config/locales/crowdin/it.yml | 2 +-
config/locales/crowdin/ja.yml | 2 +-
config/locales/crowdin/js-fr.yml | 68 +++++++-------
config/locales/crowdin/js-pt-BR.yml | 2 +-
config/locales/crowdin/js-zh-CN.yml | 2 +-
config/locales/crowdin/ka.yml | 2 +-
config/locales/crowdin/kk.yml | 2 +-
config/locales/crowdin/ko.yml | 2 +-
config/locales/crowdin/lt.yml | 2 +-
config/locales/crowdin/lv.yml | 2 +-
config/locales/crowdin/mn.yml | 2 +-
config/locales/crowdin/ms.yml | 2 +-
config/locales/crowdin/ne.yml | 2 +-
config/locales/crowdin/nl.yml | 2 +-
config/locales/crowdin/no.yml | 2 +-
config/locales/crowdin/pl.yml | 2 +-
config/locales/crowdin/pt-BR.yml | 92 +++++++++----------
config/locales/crowdin/pt-PT.yml | 2 +-
config/locales/crowdin/ro.yml | 2 +-
config/locales/crowdin/ru.yml | 2 +-
config/locales/crowdin/rw.yml | 2 +-
config/locales/crowdin/si.yml | 2 +-
config/locales/crowdin/sk.yml | 2 +-
config/locales/crowdin/sl.yml | 2 +-
config/locales/crowdin/sr.yml | 2 +-
config/locales/crowdin/sv.yml | 2 +-
config/locales/crowdin/th.yml | 2 +-
config/locales/crowdin/tr.yml | 2 +-
config/locales/crowdin/uk.yml | 2 +-
config/locales/crowdin/uz.yml | 2 +-
config/locales/crowdin/vi.yml | 2 +-
config/locales/crowdin/zh-CN.yml | 2 +-
config/locales/crowdin/zh-TW.yml | 2 +-
.../job_status/config/locales/crowdin/fr.yml | 28 +++---
.../config/locales/crowdin/pt-BR.yml | 28 +++---
modules/meeting/config/locales/crowdin/fr.yml | 6 +-
.../config/locales/crowdin/js-pt-BR.yml | 2 +-
.../meeting/config/locales/crowdin/pt-BR.yml | 6 +-
.../config/locales/crowdin/pt-BR.yml | 2 +-
.../storages/config/locales/crowdin/fr.yml | 2 +-
.../storages/config/locales/crowdin/pt-BR.yml | 28 +++---
65 files changed, 202 insertions(+), 202 deletions(-)
diff --git a/config/locales/crowdin/af.yml b/config/locales/crowdin/af.yml
index 2e44ea426ef8..960051ac7207 100644
--- a/config/locales/crowdin/af.yml
+++ b/config/locales/crowdin/af.yml
@@ -300,7 +300,7 @@ af:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/ar.yml b/config/locales/crowdin/ar.yml
index 9494864a26f2..41e039a55d16 100644
--- a/config/locales/crowdin/ar.yml
+++ b/config/locales/crowdin/ar.yml
@@ -300,7 +300,7 @@ ar:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/az.yml b/config/locales/crowdin/az.yml
index 187327f6e154..73f52c51cabd 100644
--- a/config/locales/crowdin/az.yml
+++ b/config/locales/crowdin/az.yml
@@ -300,7 +300,7 @@ az:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/be.yml b/config/locales/crowdin/be.yml
index 3a89b5721d57..1fb22eb2b43f 100644
--- a/config/locales/crowdin/be.yml
+++ b/config/locales/crowdin/be.yml
@@ -300,7 +300,7 @@ be:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/bg.yml b/config/locales/crowdin/bg.yml
index e449214a6517..e65d3e9a9699 100644
--- a/config/locales/crowdin/bg.yml
+++ b/config/locales/crowdin/bg.yml
@@ -300,7 +300,7 @@ bg:
actions:
label_enable_single: "Активен в този проект, щракнете за да деактивирате"
label_disable_single: "Неактивен в този проект, щракнете, за да разрешите"
- deactivate_for_project: "Деактивирайте за този проект"
+ remove_from_project: "Remove from project"
label_enable_all: "Разрешете всички"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/ca.yml b/config/locales/crowdin/ca.yml
index 2ca0e9078d98..fd57361b7436 100644
--- a/config/locales/crowdin/ca.yml
+++ b/config/locales/crowdin/ca.yml
@@ -297,7 +297,7 @@ ca:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/ckb-IR.yml b/config/locales/crowdin/ckb-IR.yml
index 312b45ca7129..53c80d593e0f 100644
--- a/config/locales/crowdin/ckb-IR.yml
+++ b/config/locales/crowdin/ckb-IR.yml
@@ -300,7 +300,7 @@ ckb-IR:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/cs.yml b/config/locales/crowdin/cs.yml
index 72f8d5b2bffb..7b88394da0ac 100644
--- a/config/locales/crowdin/cs.yml
+++ b/config/locales/crowdin/cs.yml
@@ -300,7 +300,7 @@ cs:
actions:
label_enable_single: "Aktivní v tomto projektu, kliknutím vypnete"
label_disable_single: "Neaktivní v tomto projektu, klikněte pro povolení"
- deactivate_for_project: "Deaktivovat pro tento projekt"
+ remove_from_project: "Remove from project"
label_enable_all: "Povolit vše"
label_disable_all: "Zakázat vše"
is_required_blank_slate:
diff --git a/config/locales/crowdin/da.yml b/config/locales/crowdin/da.yml
index cd069d10f239..9fc044daa437 100644
--- a/config/locales/crowdin/da.yml
+++ b/config/locales/crowdin/da.yml
@@ -298,7 +298,7 @@ da:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/de.yml b/config/locales/crowdin/de.yml
index 65cbe6b291d7..34feba45f2e7 100644
--- a/config/locales/crowdin/de.yml
+++ b/config/locales/crowdin/de.yml
@@ -297,7 +297,7 @@ de:
actions:
label_enable_single: "In diesem Projekt aktiv, zum Deaktivieren anklicken"
label_disable_single: "In diesem Projekt inaktiv, zum Aktivieren anklicken"
- deactivate_for_project: "Für dieses Projekt deaktivieren"
+ remove_from_project: "Remove from project"
label_enable_all: "Alles aktivieren"
label_disable_all: "Alles deaktivieren"
is_required_blank_slate:
diff --git a/config/locales/crowdin/el.yml b/config/locales/crowdin/el.yml
index b968ac9a5edc..81b444231089 100644
--- a/config/locales/crowdin/el.yml
+++ b/config/locales/crowdin/el.yml
@@ -296,7 +296,7 @@ el:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/eo.yml b/config/locales/crowdin/eo.yml
index ace0ab3fc8da..8b2542eda0da 100644
--- a/config/locales/crowdin/eo.yml
+++ b/config/locales/crowdin/eo.yml
@@ -300,7 +300,7 @@ eo:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/es.yml b/config/locales/crowdin/es.yml
index d2bec73660ac..0e2522133e10 100644
--- a/config/locales/crowdin/es.yml
+++ b/config/locales/crowdin/es.yml
@@ -297,7 +297,7 @@ es:
actions:
label_enable_single: "Activo en este proyecto, pulse para desactivarlo"
label_disable_single: "Inactivo en este proyecto, pulse para activarlo"
- deactivate_for_project: "Desactivar para este proyecto"
+ remove_from_project: "Remove from project"
label_enable_all: "Activar todo"
label_disable_all: "Desactivar todo"
is_required_blank_slate:
diff --git a/config/locales/crowdin/et.yml b/config/locales/crowdin/et.yml
index cc2e4ee8cb00..c39a3fb23a2b 100644
--- a/config/locales/crowdin/et.yml
+++ b/config/locales/crowdin/et.yml
@@ -300,7 +300,7 @@ et:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/eu.yml b/config/locales/crowdin/eu.yml
index 8e562c32eeeb..4344e220c0aa 100644
--- a/config/locales/crowdin/eu.yml
+++ b/config/locales/crowdin/eu.yml
@@ -300,7 +300,7 @@ eu:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/fa.yml b/config/locales/crowdin/fa.yml
index 3d0398f47c35..b0ce1d1b731d 100644
--- a/config/locales/crowdin/fa.yml
+++ b/config/locales/crowdin/fa.yml
@@ -300,7 +300,7 @@ fa:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "فعال کردن همه"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/fi.yml b/config/locales/crowdin/fi.yml
index 391e2249d9da..aa8458539ef2 100644
--- a/config/locales/crowdin/fi.yml
+++ b/config/locales/crowdin/fi.yml
@@ -300,7 +300,7 @@ fi:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/fil.yml b/config/locales/crowdin/fil.yml
index 2365685dafd2..9945377c3cf4 100644
--- a/config/locales/crowdin/fil.yml
+++ b/config/locales/crowdin/fil.yml
@@ -300,7 +300,7 @@ fil:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/fr.yml b/config/locales/crowdin/fr.yml
index 5638c54d1a0d..0e2e8b02e6a5 100644
--- a/config/locales/crowdin/fr.yml
+++ b/config/locales/crowdin/fr.yml
@@ -265,8 +265,8 @@ fr:
no_results_title_text: Aucun projet pour le moment
no_results_content_text: Créer un nouveau projet
search:
- label: Project name filter
- placeholder: Search by project name
+ label: Filtre sur le nom du projet
+ placeholder: Recherche par nom de projet
lists:
active: "Projets actifs"
my: "Mes projets"
@@ -300,7 +300,7 @@ fr:
actions:
label_enable_single: "Actif dans ce projet, cliquez pour le désactiver"
label_disable_single: "Inactif dans ce projet, cliquez pour l'activer"
- deactivate_for_project: "Désactiver pour ce projet"
+ remove_from_project: "Remove from project"
label_enable_all: "Activer tout"
label_disable_all: "Désactiver tout"
is_required_blank_slate:
@@ -1039,10 +1039,10 @@ fr:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
- must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "ne correspond pas au Travail et au Travail restant"
+ cannot_be_set_when_work_is_zero: "ne peut pas être défini lorsque le Travail est nul"
+ must_be_set_when_remaining_work_is_set: "requis lorsque le Travail restant est défini."
+ must_be_set_when_work_and_remaining_work_are_set: "requis lorsque le Travail et le Travail restant sont définis."
inclusion: "doit être compris entre 0 et 100."
due_date:
not_start_date: "n'est pas identique à la date de début, bien que cela soit requis pour les jalons."
@@ -1072,17 +1072,17 @@ fr:
does_not_exist: "La catégorie spécifiée n'existe pas."
estimated_hours:
not_a_number: "n'est pas une durée valide."
- cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
+ cant_be_inferior_to_remaining_work: "ne peut être inférieur au travail restant."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "requis lorsque le Travail et le % Complété sont définis."
remaining_hours:
not_a_number: "n'est pas une durée valide."
- cant_exceed_work: "cannot be higher than Work."
- must_be_set_when_work_is_set: "required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ cant_exceed_work: "ne peut être supérieur à Travail."
+ must_be_set_when_work_is_set: "requis lorsque le Travail est défini."
+ must_be_set_when_work_and_percent_complete_are_set: "requis lorsque le Travail et le % Complété sont définis."
must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
- must be 0h when Work is set and % Complete is 100%.
+ doit être 0h lorsque le travail est défini et % Complété est de 100 %.
must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
- must be empty when Work is empty and % Complete is 100%.
+ doit être vide lorsque le Travail est vide et le % Complété est de 100 %.
readonly_status: "Le lot de travaux est en lecture seule, ses attributs ne peuvent donc pas être changés."
type:
attributes:
@@ -1649,10 +1649,10 @@ fr:
subproject: "Sous-projet : %{name}"
export:
dialog:
- title: "Export"
- submit: "Export"
+ title: "Exporter"
+ submit: "Exporter"
format:
- label: "File format"
+ label: "Format de fichier"
options:
csv:
label: "CSV"
diff --git a/config/locales/crowdin/he.yml b/config/locales/crowdin/he.yml
index 6b5e3234fab1..816531943298 100644
--- a/config/locales/crowdin/he.yml
+++ b/config/locales/crowdin/he.yml
@@ -300,7 +300,7 @@ he:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/hi.yml b/config/locales/crowdin/hi.yml
index ca1cdebb33f3..6b06c0b7c540 100644
--- a/config/locales/crowdin/hi.yml
+++ b/config/locales/crowdin/hi.yml
@@ -300,7 +300,7 @@ hi:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/hr.yml b/config/locales/crowdin/hr.yml
index 81c8c1662d5f..52eda3e7b4c5 100644
--- a/config/locales/crowdin/hr.yml
+++ b/config/locales/crowdin/hr.yml
@@ -300,7 +300,7 @@ hr:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/hu.yml b/config/locales/crowdin/hu.yml
index 375a4168a936..1764ea20a09d 100644
--- a/config/locales/crowdin/hu.yml
+++ b/config/locales/crowdin/hu.yml
@@ -299,7 +299,7 @@ hu:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/id.yml b/config/locales/crowdin/id.yml
index 84eef066d0d7..cfdd76a2af84 100644
--- a/config/locales/crowdin/id.yml
+++ b/config/locales/crowdin/id.yml
@@ -294,7 +294,7 @@ id:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/it.yml b/config/locales/crowdin/it.yml
index bd6e4af4e2d5..eb92e65602ad 100644
--- a/config/locales/crowdin/it.yml
+++ b/config/locales/crowdin/it.yml
@@ -297,7 +297,7 @@ it:
actions:
label_enable_single: "Attivo in questo progetto, clicca per disattivarlo"
label_disable_single: "Non attivo in questo progetto, clicca per attivarlo"
- deactivate_for_project: "Disattiva per questo progetto"
+ remove_from_project: "Remove from project"
label_enable_all: "Abilita tutti"
label_disable_all: "Disabilita tutti"
is_required_blank_slate:
diff --git a/config/locales/crowdin/ja.yml b/config/locales/crowdin/ja.yml
index 5f263fc3e1ea..aea0eb092384 100644
--- a/config/locales/crowdin/ja.yml
+++ b/config/locales/crowdin/ja.yml
@@ -298,7 +298,7 @@ ja:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/js-fr.yml b/config/locales/crowdin/js-fr.yml
index 0952189c86a9..3136798a8d77 100644
--- a/config/locales/crowdin/js-fr.yml
+++ b/config/locales/crowdin/js-fr.yml
@@ -138,8 +138,8 @@ fr:
description_select_work_package: "Sélectionner le lot de travaux #%{id}"
description_subwork_package: "Enfant du lot de travaux #%{id}"
editor:
- revisions: "Show local modifications"
- no_revisions: "No local modifications found"
+ revisions: "Afficher les modifications locales"
+ no_revisions: "Aucune modification locale trouvée"
preview: "Basculer en mode aperçu"
source_code: "Basculer en mode source Markdown"
error_saving_failed: "L'enregistrement du document a échoué en raison de l'erreur suivante : %{error}"
@@ -188,15 +188,15 @@ fr:
without_type: "Créer un lot de travaux"
with_type: "Créer un lot de travaux (Type : %{typename})"
embedded_table:
- button: "Intégrer le tableau du lot de travaux"
- text: "[Placeholder] Tableau du lot de travaux intégré"
+ button: "Tableau intégré de lots de travaux"
+ text: "[Placeholder] Tableau intégré de lots de travaux"
embedded_calendar:
text: "[Placeholder] Calendrier embarqué"
admin:
type_form:
custom_field: "Champ personnalisé"
inactive: "Inactif"
- drag_to_activate: "Faites glisser les champs ici pour les activer"
+ drag_to_activate: "Faire glisser les champs ici pour les activer"
add_group: "Ajouter un groupe d’attributs"
add_table: "Ajouter un tableau des lots de travaux associés"
edit_query: "Modifier la requête"
@@ -230,7 +230,7 @@ fr:
next_steps: "Prochaines étapes"
resend_link: "Renvoyer"
resend_success: "L'e-mail a été renvoyé. Veuillez vérifier vos e-mails et cliquer sur le lien de confirmation fourni."
- resend_warning: "Impossible de renvoyer l'e-mail"
+ resend_warning: "Impossible de renvoyer l'e-mail."
session_timeout: "Votre session a expiré. Veuillez rafraîchir la page ou renvoyer l'e-mail."
status_label: "Statut :"
status_confirmed: "confirmé"
@@ -250,7 +250,7 @@ fr:
premium_features: "Add-ons Entreprise"
premium_features_text: "Tableaux agiles, thème et logo personnalisés, graphiques, flux de travail intelligents avec actions personnalisées, recherche en plein texte des pièces jointes de lots de travaux et champs personnalisés à choix multiples"
professional_support: "Support professionnel"
- professional_support_text: "Obtenez une assitance fiable et à haut contact de la part d'ingénieurs d'assistance expérimentés qui ont une connaissance approfondie de la mise en œuvre d'OpenProject dans des environnements critiques pour l'entreprise."
+ professional_support_text: "Obtenez une assistance fiable et disponible de la part d'ingénieurs d'assistance expérimentés qui ont une connaissance approfondie de la mise en œuvre d'OpenProject dans des environnements critiques pour l'entreprise."
button_start_trial: "Commencer l'essai gratuit"
button_upgrade: "Mettre à niveau maintenant"
button_contact_us: "Contactez-nous pour une démo"
@@ -279,9 +279,9 @@ fr:
Voulez-vous continuer ?
work_packages_settings:
warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
- Changing progress calculation mode from status-based to work-based will make % Complete a non-editable field whose value is derived from Work and Remaining work. Existing values for % Complete are preserved. If values for Work and Remaining work were not present, they will be required in order to change % Complete.
+ Passer du mode de calcul de la progression basé sur le statut au mode basé sur le travail transformera % réalisé en champ non modifiable dont la valeur est dérivée des champs Travail et Travail restant. Les valeurs existantes pour % réalisé sont conservées. Des valeurs pour Travail et Travail restant sont requises pour modifier % réalisé.
warning_progress_calculation_mode_change_from_status_to_field_html: >-
- Changing progress calculation mode from status-based to work-based will make the % Complete field freely editable. If you optionally enter values for Work or Remaining work, they will also be linked to % Complete. Changing Remaining work can then update % Complete.
+ Passer du mode de calcul de la progression basé sur le statut au mode basé sur le travail transformera % réalisé en champ librement modifiable. Si vous complétez les champs Travail et Travail restant, ils seront également liés à % réalisé. Changer le champ Travail restant peut alors changer le % réalisé.
warning_progress_calculation_mode_change_from_field_to_status_html: >-
Passer du mode de calcul de la progression basé sur le travail au mode basé sur le statut entraînera la perte de toutes les valeurs de % réalisé existantes et leur remplacement par les valeurs associées à chaque statut. Les valeurs existantes pour Travail restant peuvent également être recalculées pour refléter ce changement. Cette action est irréversible.
custom_actions:
@@ -295,13 +295,13 @@ fr:
embedded_table_loading: "La vue intégrée n’a pas pu être chargée : %{message}"
enumeration_activities: "Activités (suivi de temps)"
enumeration_doc_categories: "Catégories de documents"
- enumeration_work_package_priorities: "Priorités du Lot de Travaux"
+ enumeration_work_package_priorities: "Priorités des lots de travaux"
filter:
more_values_not_shown: "Il y a %{total} résultats supplémentaires, effectuez une recherche pour filtrer les résultats."
description:
- text_open_filter: "Ouvrir ce filtre avec les touches « ALT » et fléchées."
- text_close_filter: "Pour sélectionner une entrée, laissez le focus par exemple en appuyant sur enter. Pour quitter sans filtre, sélectionnez la première entrée (vide)."
- noneElement: "(none)"
+ text_open_filter: "Ouvrir ce filtre avec la touche « ALT » et les touches fléchées."
+ text_close_filter: "Pour sélectionner une entrée, laissez le focus par exemple en appuyant sur Entrée. Pour quitter sans filtre, sélectionnez la première entrée (vide)."
+ noneElement: "(aucun)"
time_zone_converted:
two_values: "%{from} - %{to} dans votre heure locale."
only_start: "À partir de %{from} dans votre heure locale."
@@ -346,8 +346,8 @@ fr:
general_text_Yes: "Oui"
hal:
error:
- update_conflict_refresh: "Cliquez ici pour actualiser la resource et mettre à jour vers la version la plus récente."
- edit_prohibited: "L'édition de %{attribute} est bloquée pour cette ressource. Soit cet attribut est dérivé de relations (ex, enfants), soit autrement non configurable."
+ update_conflict_refresh: "Cliquez ici pour actualiser la ressource et mettre à jour vers la version la plus récente."
+ edit_prohibited: "La modification de %{attribute} est bloquée pour cette ressource. Soit cet attribut est dérivé de relations (ex. enfants), soit il n'est pas configurable."
format:
date: "%{attribute} n’est pas une date valide. Format attendu : AAAA-MM-JJ."
general: "Une erreur s'est produite."
@@ -379,11 +379,11 @@ fr:
label_add_column_before: "Ajouter une colonne avant"
label_add_columns: "Ajouter des colonnes"
label_add_comment: "Ajouter un commentaire"
- label_add_comment_title: "Commentez et utilisez @ pour informer d’autres personnes."
+ label_add_comment_title: "Commentez et utilisez @ pour informer d’autres personnes"
label_add_row_after: "Ajouter une ligne après"
label_add_row_before: "Ajouter une ligne avant"
label_add_selected_columns: "Ajouter les colonnes sélectionnées"
- label_added_by: "Ajouté par"
+ label_added_by: "ajouté par"
label_added_time_by: 'Ajouté par %{author} le %{age}'
label_ago: "il y a"
label_all: "tous"
@@ -397,13 +397,13 @@ fr:
label_board: "Tableau"
label_board_locked: "Verrouillé"
label_board_plural: "Tableaux"
- label_board_sticky: "Epinglé"
+ label_board_sticky: "Épinglé"
label_change: "Changer"
label_create: "Créer"
label_create_work_package: "Créer un nouveau lot de travaux"
label_created_by: "Créé par"
- label_current: "current"
- label_date: "date"
+ label_current: "actuel"
+ label_date: "Date"
label_date_with_format: "Saisissez l'attribut %{date_attribute} en utilisant le format suivant : %{format}"
label_deactivate: "Désactiver"
label_descending: "Décroissant"
@@ -412,20 +412,20 @@ fr:
label_display: "Affichage"
label_cancel_comment: "Annuler le commentaire"
label_closed_work_packages: "clôturé"
- label_collapse: "Regrouper"
- label_collapsed: "regroupé"
+ label_collapse: "Replier"
+ label_collapsed: "replié"
label_collapse_all: "Tout replier"
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: "Éditer ce commentaire"
+ label_edit_comment: "Modifier ce commentaire"
label_edit_status: "Modifier le statut du lot de travaux"
- label_email: "Courriel"
+ label_email: "Adresse e-mail"
label_equals: "est"
- label_expand: "développer"
- label_expanded: "étendu"
+ label_expand: "Déplier"
+ label_expanded: "déplié"
label_expand_all: "Tout déplier"
label_expand_project_menu: "Déplier le menu du projet"
label_export: "Exporter"
@@ -519,7 +519,7 @@ fr:
label_time_entry_plural: "Temps passé"
label_up: "Haut"
label_user_plural: "Utilisateurs"
- label_activity_show_only_comments: "Afficher les activités avec les commentaires seulement"
+ label_activity_show_only_comments: "Afficher les activités avec des commentaires uniquement"
label_activity_show_all: "Afficher toutes les activités"
label_total_progress: "%{percent}% de progression totale"
label_total_amount: "Total : %{amount}"
@@ -544,21 +544,21 @@ fr:
label_global_queries: "Public"
label_custom_queries: "Privé"
label_columns: "Colonnes"
- label_attachments: Fichiers
+ label_attachments: Pièces jointes
label_drop_files: "Déposez des fichiers ici pour joindre des fichiers."
label_drop_or_click_files: "Déposez des fichiers ici ou cliquez pour joindre des fichiers."
- label_drop_folders_hint: Vous ne pouvez pas télécharger les dossiers en pièce jointe. S’il vous plaît sélectionnez des fichiers seuls.
- label_add_attachments: "Joindre fichiers"
+ label_drop_folders_hint: Vous ne pouvez pas déposer les dossiers en pièces jointes. Veuillez sélectionner des fichiers seuls.
+ label_add_attachments: "Joindre des fichiers"
label_formattable_attachment_hint: "Insérer des fichiers en les glissant sur ce champ, ou en les collant depuis le presse-papiers."
label_remove_file: "Supprimer %{fileName}"
label_remove_watcher: "Retirer l'observateur %{name}"
label_remove_all_files: Supprimer tous les fichiers
label_add_description: "Ajouter une description pour %{file}"
label_upload_notification: "Chargement des fichiers..."
- label_work_package_upload_notification: "Transfert en cours des fichiers pour le lot de travaux #%{id}: %{subject}"
+ label_work_package_upload_notification: "Transfert en cours des fichiers pour le lot de travaux #%{id} : %{subject}"
label_wp_id_added_by: "#%{id} ajouté par %{author}"
- label_files_to_upload: "Ces fichiers vont être transférés:"
- label_rejected_files: "Ces fichiers ne peuvent pas être transférés:"
+ label_files_to_upload: "Ces fichiers vont être transférés :"
+ label_rejected_files: "Ces fichiers ne peuvent pas être transférés :"
label_rejected_files_reason: "Ces fichiers ne peuvent pas être transférés car leur taille est supérieure à %{maximumFilesize}"
label_wait: "Veuillez patienter pendant la configuration…"
label_upload_counter: "%{done} fichiers sur %{count} finis"
@@ -1189,7 +1189,7 @@ fr:
zero: "0 jour"
word:
one: "1 word"
- other: "%{count} words"
+ other: "%{count} mots"
zen_mode:
button_activate: "Activer le mode zen"
button_deactivate: "Désactiver le mode zen"
diff --git a/config/locales/crowdin/js-pt-BR.yml b/config/locales/crowdin/js-pt-BR.yml
index 63cb73415d72..9a2376e4791c 100644
--- a/config/locales/crowdin/js-pt-BR.yml
+++ b/config/locales/crowdin/js-pt-BR.yml
@@ -360,7 +360,7 @@ pt-BR:
"14_4":
standard:
new_features_html: >
- The release contains various new features and improvements, such as:
Dark mode option in personal settings
Separate permissions for viewing and editing on project attributes
Improved status-based progress reporting
Connection validation for Nextcloud storages
More filter options for project lists
+ A versão contém vários novos recursos e aprimoramentos, como:
Opção de modo escuro nas configurações pessoais
Permissões separadas para visualização e edição dos atributos do projeto
Relatórios de progresso baseados em status aprimorados
Validação de conexão para armazenamentos Nextcloud
Mais opções de filtro para listas de projetos
ical_sharing_modal:
title: "Assinar calendário"
inital_setup_error_message: "Ocorreu um erro ao buscar dados."
diff --git a/config/locales/crowdin/js-zh-CN.yml b/config/locales/crowdin/js-zh-CN.yml
index e70f8b25452e..68289e86ba07 100644
--- a/config/locales/crowdin/js-zh-CN.yml
+++ b/config/locales/crowdin/js-zh-CN.yml
@@ -1184,7 +1184,7 @@ zh-CN:
other: "%{count} 天"
zero: "0 天"
word:
- other: "%{count} words"
+ other: " %{count} 个单词"
zen_mode:
button_activate: "激活 zen 模式"
button_deactivate: "取消激活 zen 模式"
diff --git a/config/locales/crowdin/ka.yml b/config/locales/crowdin/ka.yml
index c334143978e9..bc0cb54cb8cd 100644
--- a/config/locales/crowdin/ka.yml
+++ b/config/locales/crowdin/ka.yml
@@ -300,7 +300,7 @@ ka:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/kk.yml b/config/locales/crowdin/kk.yml
index b27671681648..d00fe80e5a1a 100644
--- a/config/locales/crowdin/kk.yml
+++ b/config/locales/crowdin/kk.yml
@@ -300,7 +300,7 @@ kk:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/ko.yml b/config/locales/crowdin/ko.yml
index 82c093b93630..65a77889d775 100644
--- a/config/locales/crowdin/ko.yml
+++ b/config/locales/crowdin/ko.yml
@@ -300,7 +300,7 @@ ko:
actions:
label_enable_single: "이 프로젝트에서 활성화되어 있습니다. 비활성화하려면 클릭하세요."
label_disable_single: "이 프로젝트에서 비활성화되어 있습니다. 활성화하려면 클릭하세요."
- deactivate_for_project: "이 프로젝트에 대해 비활성화"
+ remove_from_project: "Remove from project"
label_enable_all: "모두 활성화"
label_disable_all: "모두 비활성화"
is_required_blank_slate:
diff --git a/config/locales/crowdin/lt.yml b/config/locales/crowdin/lt.yml
index 1e69aa7281fb..47141448be5b 100644
--- a/config/locales/crowdin/lt.yml
+++ b/config/locales/crowdin/lt.yml
@@ -297,7 +297,7 @@ lt:
actions:
label_enable_single: "Aktyvus šiame projekte, spauskite, jei norite išjungti"
label_disable_single: "Neakvyus šiame projekte, spauskite, jei norite įjungti"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Įjungti visus"
label_disable_all: "Išjungti visus"
is_required_blank_slate:
diff --git a/config/locales/crowdin/lv.yml b/config/locales/crowdin/lv.yml
index 0d2c068d97db..41a590d8d428 100644
--- a/config/locales/crowdin/lv.yml
+++ b/config/locales/crowdin/lv.yml
@@ -300,7 +300,7 @@ lv:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/mn.yml b/config/locales/crowdin/mn.yml
index 98d5253536c9..b32ed97ce977 100644
--- a/config/locales/crowdin/mn.yml
+++ b/config/locales/crowdin/mn.yml
@@ -300,7 +300,7 @@ mn:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/ms.yml b/config/locales/crowdin/ms.yml
index b7663e3af9cf..c70e3d31d300 100644
--- a/config/locales/crowdin/ms.yml
+++ b/config/locales/crowdin/ms.yml
@@ -299,7 +299,7 @@ ms:
actions:
label_enable_single: "Aktif dalam projek ini, klik untuk nyahaktifkan"
label_disable_single: "Tidak aktif dalam projek ini, klik untuk aktifkan"
- deactivate_for_project: "Nyahaktifkan untuk projek ini"
+ remove_from_project: "Remove from project"
label_enable_all: "Aktifkan semua"
label_disable_all: "Nyahaktifkan semua"
is_required_blank_slate:
diff --git a/config/locales/crowdin/ne.yml b/config/locales/crowdin/ne.yml
index c17c821777e2..dadc105d44dc 100644
--- a/config/locales/crowdin/ne.yml
+++ b/config/locales/crowdin/ne.yml
@@ -300,7 +300,7 @@ ne:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/nl.yml b/config/locales/crowdin/nl.yml
index 979bea334719..d58dff55d32b 100644
--- a/config/locales/crowdin/nl.yml
+++ b/config/locales/crowdin/nl.yml
@@ -297,7 +297,7 @@ nl:
actions:
label_enable_single: "Actief in dit project, klik om uit te schakelen"
label_disable_single: "Inactief in dit project, klik om in te schakelen"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Alles inschakelen"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/no.yml b/config/locales/crowdin/no.yml
index 9e5bea29f725..e14bdd00f9b1 100644
--- a/config/locales/crowdin/no.yml
+++ b/config/locales/crowdin/no.yml
@@ -300,7 +300,7 @@
actions:
label_enable_single: "Aktivert i dette prosjektet, klikk for å deaktivere"
label_disable_single: "Deaktivert i dette prosjektet, klikk for å aktivere"
- deactivate_for_project: "Deaktiver for dette prosjektet"
+ remove_from_project: "Remove from project"
label_enable_all: "Aktiver alle"
label_disable_all: "Deaktiver alle"
is_required_blank_slate:
diff --git a/config/locales/crowdin/pl.yml b/config/locales/crowdin/pl.yml
index f8ee29dc4695..981e26ad9222 100644
--- a/config/locales/crowdin/pl.yml
+++ b/config/locales/crowdin/pl.yml
@@ -297,7 +297,7 @@ pl:
actions:
label_enable_single: "Aktywne w tym projekcie, kliknij, aby wyłączyć"
label_disable_single: "Nieaktywne w tym projekcie, kliknij, aby włączyć"
- deactivate_for_project: "Dezaktywuj dla tego projektu"
+ remove_from_project: "Remove from project"
label_enable_all: "Włącz wszystkie"
label_disable_all: "Wyłącz wszystkie"
is_required_blank_slate:
diff --git a/config/locales/crowdin/pt-BR.yml b/config/locales/crowdin/pt-BR.yml
index c57cc6f876fc..b8b4dd9e4527 100644
--- a/config/locales/crowdin/pt-BR.yml
+++ b/config/locales/crowdin/pt-BR.yml
@@ -211,12 +211,12 @@ pt-BR:
reorder_confirmation: "Aviso: A ordem atual dos valores disponíveis será perdida. Continuar?"
instructions:
is_required: "Marcar o campo personalizado como obrigatório. Isto tornará obrigatório o preenchimento do campo ao criar novos recursos ou ao atualizar recursos existentes."
- is_required_for_project: "Check to enable this attribute and make it required in all projects. It cannot be deactived for individual projects."
+ is_required_for_project: "Marque para ativar esse atributo e torná-lo obrigatório em todos os projetos. Ele não pode ser desativado para projetos individuais."
is_for_all: "Marcar o campo personalizado como disponível em todos os projetos existentes e novos."
searchable: "Incluir os valores dos campos ao utilizar a funcionalidade de busca global."
- searchable_for_project: "Check to make this attribute available as a filter in project lists."
+ searchable_for_project: "Marque para tornar esse atributo disponível como um filtro nas listas de projetos."
editable: "Permita que o campo seja editável pelos próprios usuários."
- admin_only: "Check to make this attribute only visible to administrators. Users without admin rights will not be able to view or edit it."
+ admin_only: "Marque para tornar esse atributo visível apenas para os administradores. Os usuários sem direitos de administrador não poderão visualizá-lo ou editá-lo."
is_filter: >
Permita que o campo personalizado seja utilizado num filtro nas visualizações do pacote de trabalho. Note que apenas com a opção "Para todos os projetos" selecionada, o campo personalizado irá aparecer nas visualizações globais.
tab:
@@ -264,8 +264,8 @@ pt-BR:
no_results_title_text: Atualmente, não existem projetos
no_results_content_text: Criar um novo projeto
search:
- label: Project name filter
- placeholder: Search by project name
+ label: Filtro de nome de projeto
+ placeholder: Pesquisar por nome de projeto
lists:
active: "Projetos ativos"
my: "Meus projetos"
@@ -299,7 +299,7 @@ pt-BR:
actions:
label_enable_single: "Ativo neste projeto, clique para desativar"
label_disable_single: "Inativo neste projeto, clique para ativar"
- deactivate_for_project: "Desativar para este projeto"
+ remove_from_project: "Remove from project"
label_enable_all: "Ativar tudo"
label_disable_all: "Desativar tudo"
is_required_blank_slate:
@@ -391,8 +391,8 @@ pt-BR:
my:
access_token:
create_dialog:
- header: The %{type} token has been generated
- warning: Note that this is the only time you will see this token, make sure to copy it now.
+ header: O token %{type} foi gerado
+ warning: Note que esta é a única vez que você verá esse token, certifique-se de copiá-lo agora.
errors:
token_name_blank: "Forneça um nome para o token de API."
token_name_in_use: "Este nome de token de API já está em uso, escolha outro."
@@ -622,7 +622,7 @@ pt-BR:
possible_values: "Valores possíveis"
regexp: "Expressão regular"
searchable: "Pesquisável"
- admin_only: "Admin-only"
+ admin_only: "Somente administrador"
custom_value:
value: "Valor"
doorkeeper/application:
@@ -692,7 +692,7 @@ pt-BR:
versions: "Versões"
work_packages: "Pacotes de Trabalho"
project_custom_field:
- is_required: "Required for all projects"
+ is_required: "Obrigatório para todos os projetos"
custom_field_section: Seção
query:
column_names: "Colunas"
@@ -1038,10 +1038,10 @@ pt-BR:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
- must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "não corresponde ao trabalho e ao trabalho restante"
+ cannot_be_set_when_work_is_zero: "não pode ser definido quando o trabalho é 0h"
+ must_be_set_when_remaining_work_is_set: "necessário quando o Trabalho restante for definido."
+ must_be_set_when_work_and_remaining_work_are_set: "necessário quando o Trabalho e o Trabalho restante são definidos."
inclusion: "deve estar entre 0 e 100."
due_date:
not_start_date: "não é na data de início, embora isso seja necessário para os marcos."
@@ -1071,17 +1071,17 @@ pt-BR:
does_not_exist: "Categoria especificada não existe."
estimated_hours:
not_a_number: "não é uma duração válida."
- cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
- must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
+ cant_be_inferior_to_remaining_work: "não pode ser menor do que o Trabalho restante."
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "necessário quando o Trabalho restante e o % concluído são definidos."
remaining_hours:
not_a_number: "não é uma duração válida."
- cant_exceed_work: "cannot be higher than Work."
- must_be_set_when_work_is_set: "required when Work is set."
- must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set."
+ cant_exceed_work: "não pode ser maior que o Trabalho."
+ must_be_set_when_work_is_set: "necessário quando o Trabalho for definido."
+ must_be_set_when_work_and_percent_complete_are_set: "necessário quando Trabalho e % concluído são definidos."
must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
- must be 0h when Work is set and % Complete is 100%.
+ deve ser 0h quando o trabalho é definido e % concluído é de 100%.
must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
- must be empty when Work is empty and % Complete is 100%.
+ deve estar vazio quando Trabalho estiver vazio e %completo for 100%.
readonly_status: "O pacote de trabalho está em estado somente leitura, então seus atributos não podem ser alterados."
type:
attributes:
@@ -1165,8 +1165,8 @@ pt-BR:
other: "Papéis"
status: "Situação do pacote de trabalho"
token/api:
- one: Access token
- other: Access tokens
+ one: Token de acesso
+ other: Tokens de acesso
type: "Tipo"
user: "Usuário"
version: "Versão"
@@ -1648,10 +1648,10 @@ pt-BR:
subproject: "Subprojeto: %{name}"
export:
dialog:
- title: "Export"
- submit: "Export"
+ title: "Exportar"
+ submit: "Exportar"
format:
- label: "File format"
+ label: "Formato do arquivo"
options:
csv:
label: "CSV"
@@ -1660,37 +1660,37 @@ pt-BR:
xls:
label: "XLS"
columns:
- input_label_report: "Add columns to attribute table"
- input_caption_report: "By default all attributes added as columns in the work package list are selected. Long text fields are not available in the attribute table, but can be displayed below it."
- input_caption_table: "By default all attributes added as columns in the work package list are selected. Long text fields are not available in table based exports."
+ input_label_report: "Adicionar colunas à tabela de atributos"
+ input_caption_report: "Por padrão, todos os atributos adicionados como colunas na lista de pacotes de trabalho são selecionados. Os campos de texto longo não estão disponíveis na tabela de atributos, mas podem ser exibidos abaixo dela."
+ input_caption_table: "Por padrão, todos os atributos adicionados como colunas na lista de pacotes de trabalho são selecionados. Os campos de texto longo não estão disponíveis na tabela de atributos, mas podem ser exibidos abaixo dela."
pdf:
export_type:
- label: "PDF export type"
+ label: "Formato de exportação de PDF"
options:
table:
- label: "Table"
- caption: "Export the work packages list in a table with the desired columns."
+ label: "Tabela"
+ caption: "Exporte a lista de pacotes de trabalho em uma tabela com as colunas desejadas."
report:
- label: "Report"
- caption: "Export the work package on a detailed report of all work packages in the list."
+ label: "Relatório"
+ caption: "Exportar o pacote de trabalho em um relatório detalhado de todos os pacotes de trabalho da lista."
gantt:
- label: "Gantt chart"
- caption: "Export the work packages list in a Gantt diagram view."
+ label: "Gráfico de Gantt"
+ caption: "Exportar a lista de pacotes de trabalho em uma visualização de diagrama de Gantt."
include_images:
- label: "Include images"
- caption: "Exclude images to reduce the size of the PDF export."
+ label: "Incluir imagens"
+ caption: "Excluir imagens para reduzir o tamanho da exportação do PDF."
gantt_zoom_levels:
- label: "Zoom levels"
- caption: "Select what is the zoom level for dates displayed in the chart."
+ label: "Níveis de ampliação"
+ caption: "Selecione qual é o nível de ampliação para as datas exibidas no gráfico."
options:
- days: "Days"
- weeks: "Weeks"
- months: "Months"
- quarters: "Quarters"
+ days: "Dias"
+ weeks: "Semanas"
+ months: "Meses"
+ quarters: "Trimestres"
column_width:
- label: "Table column width"
+ label: "Largura da coluna da tabela"
options:
- narrow: "Narrow"
+ narrow: "Estreito"
medium: "Medium"
wide: "Wide"
very_wide: "Very wide"
diff --git a/config/locales/crowdin/pt-PT.yml b/config/locales/crowdin/pt-PT.yml
index a1ae4eb0b417..1ebf94d6deeb 100644
--- a/config/locales/crowdin/pt-PT.yml
+++ b/config/locales/crowdin/pt-PT.yml
@@ -298,7 +298,7 @@ pt-PT:
actions:
label_enable_single: "Ativo neste projeto, clique para desativar"
label_disable_single: "Inativo neste projeto, clique para ativar"
- deactivate_for_project: "Desativar para este projeto"
+ remove_from_project: "Remove from project"
label_enable_all: "Ativar tudo"
label_disable_all: "Desativar tudo"
is_required_blank_slate:
diff --git a/config/locales/crowdin/ro.yml b/config/locales/crowdin/ro.yml
index 18f916b57fff..093f1b88e5ca 100644
--- a/config/locales/crowdin/ro.yml
+++ b/config/locales/crowdin/ro.yml
@@ -300,7 +300,7 @@ ro:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/ru.yml b/config/locales/crowdin/ru.yml
index fd91cdb07b34..b98aa845b3b6 100644
--- a/config/locales/crowdin/ru.yml
+++ b/config/locales/crowdin/ru.yml
@@ -299,7 +299,7 @@ ru:
actions:
label_enable_single: "Активно в этом проекте, нажмите для отключения"
label_disable_single: "Неактивно в этом проекте, нажмите для включения"
- deactivate_for_project: "Деактивировать для этого проекта"
+ remove_from_project: "Remove from project"
label_enable_all: "Включить всё"
label_disable_all: "Выключить всё"
is_required_blank_slate:
diff --git a/config/locales/crowdin/rw.yml b/config/locales/crowdin/rw.yml
index e83722c5ac42..4940ddcdf55f 100644
--- a/config/locales/crowdin/rw.yml
+++ b/config/locales/crowdin/rw.yml
@@ -300,7 +300,7 @@ rw:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/si.yml b/config/locales/crowdin/si.yml
index d8e84bb796b8..3cc13360e145 100644
--- a/config/locales/crowdin/si.yml
+++ b/config/locales/crowdin/si.yml
@@ -300,7 +300,7 @@ si:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/sk.yml b/config/locales/crowdin/sk.yml
index d94f2648ffbc..67f19c79eca3 100644
--- a/config/locales/crowdin/sk.yml
+++ b/config/locales/crowdin/sk.yml
@@ -300,7 +300,7 @@ sk:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/sl.yml b/config/locales/crowdin/sl.yml
index 00fed2c09ece..6adf4d7a93d6 100644
--- a/config/locales/crowdin/sl.yml
+++ b/config/locales/crowdin/sl.yml
@@ -299,7 +299,7 @@ sl:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/sr.yml b/config/locales/crowdin/sr.yml
index a4136d290e31..d3cebb2ccda4 100644
--- a/config/locales/crowdin/sr.yml
+++ b/config/locales/crowdin/sr.yml
@@ -300,7 +300,7 @@ sr:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/sv.yml b/config/locales/crowdin/sv.yml
index e0f687d32b91..b920f1565d27 100644
--- a/config/locales/crowdin/sv.yml
+++ b/config/locales/crowdin/sv.yml
@@ -300,7 +300,7 @@ sv:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/th.yml b/config/locales/crowdin/th.yml
index 4cf3f4ec7fad..321845f83da2 100644
--- a/config/locales/crowdin/th.yml
+++ b/config/locales/crowdin/th.yml
@@ -300,7 +300,7 @@ th:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/tr.yml b/config/locales/crowdin/tr.yml
index 68269daef45a..ba9a68e738fb 100644
--- a/config/locales/crowdin/tr.yml
+++ b/config/locales/crowdin/tr.yml
@@ -300,7 +300,7 @@ tr:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/uk.yml b/config/locales/crowdin/uk.yml
index 1624d8dc48db..3c6c24fa51d8 100644
--- a/config/locales/crowdin/uk.yml
+++ b/config/locales/crowdin/uk.yml
@@ -295,7 +295,7 @@ uk:
actions:
label_enable_single: "Увімкнено в цьому проєкті; натисніть, щоб вимкнути"
label_disable_single: "Вимкнено в цьому проєкті; натисніть, щоб увімкнути"
- deactivate_for_project: "Деактивувати для цього проєкту"
+ remove_from_project: "Remove from project"
label_enable_all: "Увімкнути все"
label_disable_all: "Вимкнути все"
is_required_blank_slate:
diff --git a/config/locales/crowdin/uz.yml b/config/locales/crowdin/uz.yml
index 021f91e952f8..ca9e7c3f89a3 100644
--- a/config/locales/crowdin/uz.yml
+++ b/config/locales/crowdin/uz.yml
@@ -300,7 +300,7 @@ uz:
actions:
label_enable_single: "Active in this project, click to disable"
label_disable_single: "Inactive in this project, click to enable"
- deactivate_for_project: "Deactivate for this project"
+ remove_from_project: "Remove from project"
label_enable_all: "Enable all"
label_disable_all: "Disable all"
is_required_blank_slate:
diff --git a/config/locales/crowdin/vi.yml b/config/locales/crowdin/vi.yml
index 88766dcd0ed6..db1663be1d86 100644
--- a/config/locales/crowdin/vi.yml
+++ b/config/locales/crowdin/vi.yml
@@ -302,7 +302,7 @@ vi:
actions:
label_enable_single: "Kích hoạt trong dự án này, nhấp để tắt"
label_disable_single: "Không kích hoạt trong dự án này, nhấp để bật"
- deactivate_for_project: "Vô hiệu hóa cho dự án này"
+ remove_from_project: "Remove from project"
label_enable_all: "Bật tất cả"
label_disable_all: "Tắt tất cả"
is_required_blank_slate:
diff --git a/config/locales/crowdin/zh-CN.yml b/config/locales/crowdin/zh-CN.yml
index 396e2ec5554b..7b4e6e1ca084 100644
--- a/config/locales/crowdin/zh-CN.yml
+++ b/config/locales/crowdin/zh-CN.yml
@@ -297,7 +297,7 @@ zh-CN:
actions:
label_enable_single: "在此项目中处于活动状态,点击禁用"
label_disable_single: "在此项目中未启用,点击启用"
- deactivate_for_project: "停用此项目"
+ remove_from_project: "Remove from project"
label_enable_all: "全部启用"
label_disable_all: "全部禁用"
is_required_blank_slate:
diff --git a/config/locales/crowdin/zh-TW.yml b/config/locales/crowdin/zh-TW.yml
index 2a2764865450..580a403d87be 100644
--- a/config/locales/crowdin/zh-TW.yml
+++ b/config/locales/crowdin/zh-TW.yml
@@ -299,7 +299,7 @@ zh-TW:
actions:
label_enable_single: "於此專案使用,請按一下停用"
label_disable_single: "於此專案未使用,請按一下啟用"
- deactivate_for_project: "停用此專案"
+ remove_from_project: "Remove from project"
label_enable_all: "全部啟用"
label_disable_all: "全部停用"
is_required_blank_slate:
diff --git a/modules/job_status/config/locales/crowdin/fr.yml b/modules/job_status/config/locales/crowdin/fr.yml
index f08ef07ded87..0c756fd92d6c 100644
--- a/modules/job_status/config/locales/crowdin/fr.yml
+++ b/modules/job_status/config/locales/crowdin/fr.yml
@@ -4,18 +4,18 @@ fr:
name: "Statut de tâches OpenProject"
description: "Liste et état des tâches d'arrière-plan."
job_status_dialog:
- download_starts: 'The download should start automatically.'
- link_to_download: 'Or, %{link} to download.'
- click_here: 'click here'
- title: 'Background job status'
- redirect: 'You are being redirected.'
- redirect_link: 'Please click here to continue.'
- redirect_errors: 'Due to these errors, you will not be redirected automatically.'
- errors: 'Something went wrong'
+ download_starts: 'Le téléchargement devrait démarrer automatiquement.'
+ link_to_download: 'Ou %{link} pour télécharger.'
+ click_here: 'cliquez ici'
+ title: 'Statut de la tâche en arrière-plan'
+ redirect: 'Vous allez être redirigé.'
+ redirect_link: 'Veuillez cliquer ici pour continuer.'
+ redirect_errors: 'En raison de ces erreurs, vous ne serez pas redirigé automatiquement.'
+ errors: 'Un problème est survenu'
generic_messages:
- not_found: 'This job could not be found.'
- in_queue: 'The job has been queued and will be processed shortly.'
- in_process: 'The job is currently being processed.'
- error: 'The job has failed to complete.'
- cancelled: 'The job has been cancelled due to an error.'
- success: 'The job completed successfully.'
+ not_found: 'Impossible de trouver cette tâche.'
+ in_queue: 'La tâche a été mise en file d''attente et sera traitée sous peu.'
+ in_process: 'La tâche est en cours de traitement.'
+ error: 'La tâche n''a pas été terminée.'
+ cancelled: 'La tâche a été annulée en raison d''une erreur.'
+ success: 'Le travail a été effectué avec succès.'
diff --git a/modules/job_status/config/locales/crowdin/pt-BR.yml b/modules/job_status/config/locales/crowdin/pt-BR.yml
index b25252d34725..d71598f27261 100644
--- a/modules/job_status/config/locales/crowdin/pt-BR.yml
+++ b/modules/job_status/config/locales/crowdin/pt-BR.yml
@@ -4,18 +4,18 @@ pt-BR:
name: "Situação do trabalho OpenProject"
description: "Listagem e situação dos trabalhos em segundo plano."
job_status_dialog:
- download_starts: 'The download should start automatically.'
- link_to_download: 'Or, %{link} to download.'
- click_here: 'click here'
- title: 'Background job status'
- redirect: 'You are being redirected.'
- redirect_link: 'Please click here to continue.'
- redirect_errors: 'Due to these errors, you will not be redirected automatically.'
- errors: 'Something went wrong'
+ download_starts: 'O download deve iniciar automaticamente.'
+ link_to_download: 'Ou, %{link} para baixar.'
+ click_here: 'clique aqui'
+ title: 'Status do trabalho em segundo plano'
+ redirect: 'Você está sendo redirecionado.'
+ redirect_link: 'Por favor, clique aqui para continuar.'
+ redirect_errors: 'Devido a esses erros, você não será redirecionado automaticamente.'
+ errors: 'Algo deu errado'
generic_messages:
- not_found: 'This job could not be found.'
- in_queue: 'The job has been queued and will be processed shortly.'
- in_process: 'The job is currently being processed.'
- error: 'The job has failed to complete.'
- cancelled: 'The job has been cancelled due to an error.'
- success: 'The job completed successfully.'
+ not_found: 'Este trabalho não pôde ser encontrado.'
+ in_queue: 'O trabalho foi colocado na fila e será processado em breve.'
+ in_process: 'O trabalho está sendo processado.'
+ error: 'O trabalho não pôde ser finalizado.'
+ cancelled: 'O trabalho foi cancelado devido a um erro.'
+ success: 'Trabalho concluído com sucesso.'
diff --git a/modules/meeting/config/locales/crowdin/fr.yml b/modules/meeting/config/locales/crowdin/fr.yml
index 4717f449718f..0695f46e26f1 100644
--- a/modules/meeting/config/locales/crowdin/fr.yml
+++ b/modules/meeting/config/locales/crowdin/fr.yml
@@ -123,7 +123,7 @@ fr:
email:
send_emails: "Envoyer des e-mails"
send_invitation_emails: >
- Send an email invitation immediately to the participants selected above. You can also do this manually at any time later.
+ Envoyez immédiatement une invitation par e-mail aux participants sélectionnés ci-dessus. Vous pouvez également le faire manuellement à tout moment par la suite.
open_meeting_link: "Ouvrir la réunion"
invited:
summary: "%{actor} vous a envoyé une invitation pour la réunion %{title}"
@@ -148,7 +148,7 @@ fr:
empty_text: "Faites glisser des éléments ici ou créez-en un nouveau"
notice_successful_notification: "Notification envoyée avec succès"
notice_timezone_missing: Aucun fuseau horaire n'est défini et %{zone} est supposé. Pour choisir votre fuseau horaire, veuillez cliquer ici.
- notice_meeting_updated: "This page has been updated by someone else. Reload to view changes."
+ notice_meeting_updated: "Cette page a été mise à jour par quelqu'un d'autre. Rechargez pour voir les changements."
permission_create_meetings: "Créer des réunions"
permission_edit_meetings: "Modifier les réunions"
permission_delete_meetings: "Supprimer des réunions"
@@ -180,7 +180,7 @@ fr:
label_meeting_delete: "Supprimer la réunion"
label_meeting_created_by: "Créé par"
label_meeting_last_updated: "Dernière mise à jour"
- label_meeting_reload: "Reload"
+ label_meeting_reload: "Actualiser"
label_agenda_items: "Points de l'ordre du jour"
label_agenda_items_reordered: "réorganisé"
label_agenda_item_remove: "Supprimer de l'ordre du jour"
diff --git a/modules/meeting/config/locales/crowdin/js-pt-BR.yml b/modules/meeting/config/locales/crowdin/js-pt-BR.yml
index de1593cfc11c..5e68df5c7f6b 100644
--- a/modules/meeting/config/locales/crowdin/js-pt-BR.yml
+++ b/modules/meeting/config/locales/crowdin/js-pt-BR.yml
@@ -24,4 +24,4 @@ pt-BR:
label_meetings: 'Reuniões'
work_packages:
tabs:
- meetings: 'Meetings'
+ meetings: 'Reuniões'
diff --git a/modules/meeting/config/locales/crowdin/pt-BR.yml b/modules/meeting/config/locales/crowdin/pt-BR.yml
index 427360f16ae1..f8261883a6d8 100644
--- a/modules/meeting/config/locales/crowdin/pt-BR.yml
+++ b/modules/meeting/config/locales/crowdin/pt-BR.yml
@@ -123,7 +123,7 @@ pt-BR:
email:
send_emails: "Enviar e-mails"
send_invitation_emails: >
- Send an email invitation immediately to the participants selected above. You can also do this manually at any time later.
+ Enviar um convite por e-mail imediatamente para os participantes selecionados acima. Você também pode fazer isso manualmente a qualquer momento mais tarde.
open_meeting_link: "Abrir reunião"
invited:
summary: "%{actor} enviou a você um convite para a reunião %{title}"
@@ -148,7 +148,7 @@ pt-BR:
empty_text: "Arraste itens para cá ou crie um novo."
notice_successful_notification: "Notificação enviada com sucesso"
notice_timezone_missing: Nenhum fuso horário está definido, portanto assumiu-se %{zone}. Para escolher o seu fuso horário, clique aqui.
- notice_meeting_updated: "This page has been updated by someone else. Reload to view changes."
+ notice_meeting_updated: "Esta página foi atualizada por outra pessoa. Recarregue para ver as alterações."
permission_create_meetings: "Criar reuniões"
permission_edit_meetings: "Editar reuniões"
permission_delete_meetings: "Excluir reuniões"
@@ -180,7 +180,7 @@ pt-BR:
label_meeting_delete: "Excluir reunião"
label_meeting_created_by: "Criado por"
label_meeting_last_updated: "Última atualização"
- label_meeting_reload: "Reload"
+ label_meeting_reload: "Recarregar"
label_agenda_items: "Itens da agenda"
label_agenda_items_reordered: "reorganizado"
label_agenda_item_remove: "Remover da agenda"
diff --git a/modules/recaptcha/config/locales/crowdin/pt-BR.yml b/modules/recaptcha/config/locales/crowdin/pt-BR.yml
index a112034e88e9..964395fcc92b 100644
--- a/modules/recaptcha/config/locales/crowdin/pt-BR.yml
+++ b/modules/recaptcha/config/locales/crowdin/pt-BR.yml
@@ -9,7 +9,7 @@ pt-BR:
verify_account: "Verifique a sua conta"
error_captcha: "Não foi possível verificar sua conta. Por favor, entre em contato com um administrador."
settings:
- website_key: 'Website key (May also be called "Site key")'
+ website_key: 'Chave do site (também pode ser chamada "Código do site")'
response_limit: 'Limite de resposta para HCaptcha'
response_limit_text: 'O número máximo de caracteres para tratar a resposta HCaptcha como válida.'
website_key_text: 'Digite a chave do site que você criou no console de administração reCAPTCHA para este domínio.'
diff --git a/modules/storages/config/locales/crowdin/fr.yml b/modules/storages/config/locales/crowdin/fr.yml
index 4d7ed8199dce..2f2944a9654e 100644
--- a/modules/storages/config/locales/crowdin/fr.yml
+++ b/modules/storages/config/locales/crowdin/fr.yml
@@ -31,7 +31,7 @@ fr:
attributes:
host:
authorization_header_missing: n'est pas entièrement configuré. L'instance Nextcloud ne reçoit pas l'en-tête "Authorization", ce qui est nécessaire pour une autorisation basée sur un jeton Bearer des requêtes API. Veuillez vérifier la configuration de votre serveur HTTP.
- cannot_be_connected_to: could not be reached. Please ensure the host is reachable and the OpenProject integration app is installed.
+ cannot_be_connected_to: n'a pas pu être atteint. Veuillez vous assurer que l'hôte est joignable et que l'application d'intégration OpenProject est installée.
minimal_nextcloud_version_unmet: ne répond pas aux exigences minimales de version (doit être Nextcloud 23 ou supérieur)
not_nextcloud_server: n'est pas un serveur Nextcloud
op_application_not_installed: semble ne pas avoir installé l'application "Intégration OpenProject" . Veuillez d'abord l'installer puis réessayer.
diff --git a/modules/storages/config/locales/crowdin/pt-BR.yml b/modules/storages/config/locales/crowdin/pt-BR.yml
index 4f7dde05336e..b93f83e6f655 100644
--- a/modules/storages/config/locales/crowdin/pt-BR.yml
+++ b/modules/storages/config/locales/crowdin/pt-BR.yml
@@ -22,7 +22,7 @@ pt-BR:
storages/project_storage:
attributes:
project_folder_id:
- blank: Please select a folder.
+ blank: Selecione uma pasta.
project_folder_mode:
mode_unavailable: não está disponível para este armazenamento.
project_ids:
@@ -31,7 +31,7 @@ pt-BR:
attributes:
host:
authorization_header_missing: se não totalmente configurado. A instância Nextcloud não recebe o cabeçalho "Autorização", que é necessário para um token Bearer com base na autorização de solicitações de API. Verifique novamente suas configurações de servidor HTTP.
- cannot_be_connected_to: could not be reached. Please ensure the host is reachable and the OpenProject integration app is installed.
+ cannot_be_connected_to: não pôde ser acessado. Verifique se o host pode ser acessado e se o aplicativo de integração do OpenProject está instalado.
minimal_nextcloud_version_unmet: não atende aos requisitos mínimos de versão (deve ser Nextcloud 23 ou superior)
not_nextcloud_server: não é um servidor Nextcloud
op_application_not_installed: Parece não possui o aplicativo "OpenProject integration" instalado. Instale-o primeiro e depois tente novamente.
@@ -60,13 +60,13 @@ pt-BR:
project_module_storages: Arquivos
project_storages:
edit_project_folder:
- label: Edit project folder
+ label: Editar a pasta do projeto
project_folder_mode:
automatic: Gerenciado automaticamente
inactive: Nenhuma pasta específica
manual: Pasta existente gerenciada manualmente
remove_project:
- deletion_failure_flash: Failed to remove the project from the storage. %{error}
+ deletion_failure_flash: Falha ao remover o projeto do armazenamento. %{error}
dialog:
automatically_managed_appendix: Além disso, neste caso, este armazenamento tenha uma pasta de projeto gerenciado automaticamente, este e seus arquivos serão excluídos para sempre.
confirmation_text: Confirme se você entende e deseja remover este armazenamento de arquivos do projeto
@@ -317,23 +317,23 @@ pt-BR:
notice_successful_storage_connection: |-
Armazenamento conectado com sucesso! Lembre-se de ativar o módulo e o armazenamento específico nas configurações do projeto de cada projeto desejado para utilizá-lo.
oauth_access_granted_modal:
- access_granted: Access granted
+ access_granted: Acesso concedido
project_settings:
- access_granted_screen_reader: Access granted. You are now ready to use %{storage}
- storage_ready: You are now ready to use %{storage}
+ access_granted_screen_reader: Acesso concedido. Você está pronto para usar %{storage}
+ storage_ready: Agora você está pronto para usar %{storage}
storage_admin:
- access_granted_screen_reader: Access granted. You are now ready to add projects to %{storage}
- storage_ready: You are now ready to add projects to %{storage}
+ access_granted_screen_reader: Acesso concedido. Agora você está pronto para adicionar projetos ao %{storage}
+ storage_ready: Agora você está pronto para adicionar projetos ao %{storage}
oauth_grant_nudge_modal:
cancel_button_label: Cuidarei disso mais tarde
- heading: Login to %{provider_type} required
- login_button_aria_label: Login to %{storage}
- login_button_label: "%{provider_type} log in"
+ heading: Login para %{provider_type} necessário
+ login_button_aria_label: Faça login em %{storage}
+ login_button_label: "Login %{provider_type}"
project_settings:
- description: To get access to the project folder you need to login to %{storage}.
+ description: Para ter acesso à pasta do projeto, você precisa entrar no %{storage}.
requesting_access_to: Solicitação de acesso ao site %{storage}
storage_admin:
- description: In order to add projects to this storage you need to be logged into %{provider_type}. Please, log in and try again.
+ description: Para adicionar projetos a esse armazenamento, o senhor precisa estar conectado em %{provider_type}. Por favor, faça o login e tente novamente.
open_project_storage_modal:
success:
subtitle: Você está sendo redirecionado
From 1315cb2bde660ca6feb37eb0191a8d059ed8c406 Mon Sep 17 00:00:00 2001
From: OpenProject Actions CI
Date: Sun, 1 Sep 2024 03:11:32 +0000
Subject: [PATCH 042/147] update locales from crowdin [ci skip]
---
config/locales/crowdin/js-sv.yml | 4 +--
config/locales/crowdin/js-zh-CN.yml | 4 +--
config/locales/crowdin/sv.yml | 10 +++----
config/locales/crowdin/zh-CN.yml | 30 +++++++++----------
.../config/locales/crowdin/zh-CN.yml | 8 ++---
.../storages/config/locales/crowdin/sv.yml | 2 +-
6 files changed, 29 insertions(+), 29 deletions(-)
diff --git a/config/locales/crowdin/js-sv.yml b/config/locales/crowdin/js-sv.yml
index ab63025c4242..5a60402ffffe 100644
--- a/config/locales/crowdin/js-sv.yml
+++ b/config/locales/crowdin/js-sv.yml
@@ -1187,8 +1187,8 @@ sv:
other: "%{count} dagar"
zero: "0 dagar"
word:
- one: "1 word"
- other: "%{count} words"
+ one: "1 ord"
+ other: "%{count} ord"
zen_mode:
button_activate: "Aktivera zen-läge"
button_deactivate: "Inaktivera avskalat läge"
diff --git a/config/locales/crowdin/js-zh-CN.yml b/config/locales/crowdin/js-zh-CN.yml
index 68289e86ba07..ec92c25eb122 100644
--- a/config/locales/crowdin/js-zh-CN.yml
+++ b/config/locales/crowdin/js-zh-CN.yml
@@ -278,9 +278,9 @@ zh-CN:
更改可能需要一些时间才能生效。当更新完所有相关工作包时,您将收到通知。
work_packages_settings:
warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
- 将进度计算模式从基于状态改为基于工时,将使% 完成变为不可编辑字段,其值来自工时和剩余工时。% 完成现有值将保留。如果没有 工时和剩余工时的值,则需要这些值才能更改 % 完成。
+ 将进度计算模式从基于状态改为基于工时,将使完成 %变为不可编辑字段,其值来自工时和剩余工时。完成 %现有值将保留。如果没有 工时和剩余工时的值,则需要这些值才能更改 完成 %。
warning_progress_calculation_mode_change_from_status_to_field_html: >-
- 将进度计算模式从基于状态改为基于工时,将使% 完成字段可自由编辑。如果您选择输入工时或剩余工时的值,它们也将与% 完成相关联。更改剩余工时就可以更新% 完成。
+ 将进度计算模式从基于状态改为基于工时,将使完成 %字段可自由编辑。如果您选择输入工时或剩余工时的值,它们也将与完成 %相关联。更改剩余工时就可以更新完成 %。
warning_progress_calculation_mode_change_from_field_to_status_html: >-
将进度计算模式从基于工时的方式改为基于状态,将会导致所有现有的 %完整的 值丢失,并被与每个状态相关的值所替代。 剩余工时 的现有值也可能被重新计算,以反映这种变化。此操作不可逆转。
custom_actions:
diff --git a/config/locales/crowdin/sv.yml b/config/locales/crowdin/sv.yml
index b920f1565d27..8f3739f5a235 100644
--- a/config/locales/crowdin/sv.yml
+++ b/config/locales/crowdin/sv.yml
@@ -1652,7 +1652,7 @@ sv:
title: "Export"
submit: "Export"
format:
- label: "File format"
+ label: "Filformat"
options:
csv:
label: "CSV"
@@ -1684,10 +1684,10 @@ sv:
label: "Zoom levels"
caption: "Select what is the zoom level for dates displayed in the chart."
options:
- days: "Days"
- weeks: "Weeks"
- months: "Months"
- quarters: "Quarters"
+ days: "Dagar"
+ weeks: "Veckor"
+ months: "Månader"
+ quarters: "Kvartal"
column_width:
label: "Table column width"
options:
diff --git a/config/locales/crowdin/zh-CN.yml b/config/locales/crowdin/zh-CN.yml
index af1148b13cff..6f639772ec65 100644
--- a/config/locales/crowdin/zh-CN.yml
+++ b/config/locales/crowdin/zh-CN.yml
@@ -297,7 +297,7 @@ zh-CN:
actions:
label_enable_single: "在此项目中处于活动状态,点击禁用"
label_disable_single: "在此项目中未启用,点击启用"
- remove_from_project: "Remove from project"
+ remove_from_project: "从项目移除"
label_enable_all: "全部启用"
label_disable_all: "全部禁用"
is_required_blank_slate:
@@ -1063,16 +1063,16 @@ zh-CN:
estimated_hours:
not_a_number: "不是有效的持续时间。"
cant_be_inferior_to_remaining_work: "不能低于剩余工时。"
- must_be_set_when_remaining_work_and_percent_complete_are_set: "设置“剩余工时”和“% 完成”时必填。"
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "设置“剩余工时”和“完成%”时必填。"
remaining_hours:
not_a_number: "不是有效的持续时间。"
cant_exceed_work: "不能高于工时。"
must_be_set_when_work_is_set: "设置“工时”时必填。"
- must_be_set_when_work_and_percent_complete_are_set: "设置“工时”和“% 完成”时必填。"
+ must_be_set_when_work_and_percent_complete_are_set: "设置“工时”和“完成%”时必填。"
must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
- 当“工时”已设置,且“% 完成”为 100%时,必须为0h。
+ 当“工时”已设置,且“完成%”为 100% 时,必须为 0h 。
must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
- 当“工时”为空,且“% 完成”为 100%时,必须为空。
+ 当“工时”为空,且“完成%”为 100% 时,必须为空。
readonly_status: "工作包处于只读状态,因此无法更改其属性。"
type:
attributes:
@@ -1632,7 +1632,7 @@ zh-CN:
options:
table:
label: "表格"
- caption: "以表格形式导出工作包列表,包含所需的列。"
+ caption: "将工作包列表导出为包含所需列的表格。"
report:
label: "报告"
caption: "以详细报告的形式导出列表中的所有工作包。"
@@ -1640,8 +1640,8 @@ zh-CN:
label: "甘特图"
caption: "以甘特图视图导出工作包列表。"
include_images:
- label: "包含图片"
- caption: "不包含图像以缩小导出PDF的大小。"
+ label: "包含图像"
+ caption: "不包含图像以减小导出PDF的大小。"
gantt_zoom_levels:
label: "缩放级别"
caption: "选择图表中显示日期的缩放级别。"
@@ -1668,7 +1668,7 @@ zh-CN:
xls:
include_relations:
label: "包含关系"
- caption: "该选项将为每个工作包与另一个工作包的关系创建一个副本。"
+ caption: "此选项将为每个与其他工作包有关系的工作包创建一个副本。"
include_descriptions:
label: "包含描述"
caption: "该选项将添加原始格式的描述列。"
@@ -3074,9 +3074,9 @@ zh-CN:
setting_work_package_done_ratio_field: "基于工时"
setting_work_package_done_ratio_status: "基于状态"
setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
- 在基于工时模式下,“% 完成”是根据已完成的工时占总工时的比例计算出来的。在基于状态模式下,每个状态都有一个与之相关的“% 完成”。更改状态将改变“% 完成”。
+ 在基于工时模式下,“完成 %”是根据已完成的工时占总工时的比例计算出来的。在基于状态模式下,每个状态都有一个与之相关的“完成 %”。更改状态将改变“完成 %”。
setting_work_package_done_ratio_explanation_html: >
- 在基于工作的模式下,“% 完成”可以自由设置为任何值。如果选择输入 "工时 "值,则会自动得出 "剩余工时"。在基于状态的模式下,每个状态都有一个与之相关的“% 完成”值。更改状态将改变“% 完成”。
+ 在基于工作的模式下,“完成 %”可以自由设置为任何值。如果选择输入 "工时 "值,则会自动得出 "剩余工时"。在基于状态的模式下,每个状态都有一个与之相关的“完成 %”值。更改状态将改变“完成 %”。
setting_work_package_properties: "工作包属性"
setting_work_package_startdate_is_adddate: "使用当前日期作为新工作包的开始日期"
setting_work_packages_projects_export_limit: "工作包/项目导出限制"
@@ -3458,7 +3458,7 @@ zh-CN:
label_note: "注意:"
modal:
work_based_help_text: "在可能的情况下,每个字段都会根据另外两个字段自动计算。"
- work_based_help_text_pre_14_4_without_percent_complete_edition: "“% 完成”由 \"工时\" 和 \"剩余工时\" 自动得出。"
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "“完成 %”由 \"工时\" 和 \"剩余工时\" 自动得出。"
status_based_help_text: "完成百分比由工作包状态设定。"
migration_warning_text: "在基于工时的进度计算模式下,完成百分比不能手动设置,而是与工时绑定。现有值已被保留,但无法编辑。请先输入工时。"
derivation_hints:
@@ -3468,13 +3468,13 @@ zh-CN:
derived: "源自“工时”和“剩余工时”。"
estimated_hours:
cleared_because_remaining_work_is_empty: "已清空,因为“剩余工时”为空。"
- derived: "由“剩余工时”和“% 完成”得出"
+ derived: "由“剩余工时”和“完成 %”得出"
same_as_remaining_work: "设置为与“剩余工时”相同的值。"
remaining_hours:
cleared_because_work_is_empty: "已清空,因为 \"工时 \"为空。"
- cleared_because_percent_complete_is_empty: "已清空,因为“% 完成”为空。"
+ cleared_because_percent_complete_is_empty: "已清空,因为“完成 %”为空。"
decreased_like_work: "减少与 \"工时 \"相同的数额。"
- derived: "由“工时”和“% 完成”得出"
+ derived: "由“工时”和“完成 %”得出"
increased_like_work: "增加与 \"工时 \"相同的数额。"
same_as_work: "设置为与 \"工时 \"相同的值。"
permissions:
diff --git a/modules/job_status/config/locales/crowdin/zh-CN.yml b/modules/job_status/config/locales/crowdin/zh-CN.yml
index da0ec0621059..c0cfed029dc1 100644
--- a/modules/job_status/config/locales/crowdin/zh-CN.yml
+++ b/modules/job_status/config/locales/crowdin/zh-CN.yml
@@ -5,17 +5,17 @@ zh-CN:
description: "后台作业的列表和状态。"
job_status_dialog:
download_starts: '下载会自动开始。'
- link_to_download: '或 %{link} 下载。'
+ link_to_download: '或者,%{link} 以下载。'
click_here: '点击此处'
title: '后台作业状态'
- redirect: '正在将您重新定向。'
+ redirect: '正在将您重定向。'
redirect_link: '请点击此处继续。'
- redirect_errors: '由于这些错误,您将不会被自动重新定向。'
+ redirect_errors: '由于这些错误,您将不会被自动重定向。'
errors: '出错了'
generic_messages:
not_found: '找不到此项作业。'
in_queue: '作业已排队,将很快处理。'
- in_process: '工作正在处理中。'
+ in_process: '作业正在处理中。'
error: '作业未能完成。'
cancelled: '作业因错误被取消。'
success: '作业已成功完成。'
diff --git a/modules/storages/config/locales/crowdin/sv.yml b/modules/storages/config/locales/crowdin/sv.yml
index 7047866eec73..790a1bce560b 100644
--- a/modules/storages/config/locales/crowdin/sv.yml
+++ b/modules/storages/config/locales/crowdin/sv.yml
@@ -60,7 +60,7 @@ sv:
project_module_storages: Filer
project_storages:
edit_project_folder:
- label: Edit project folder
+ label: Redigera projektmapp
project_folder_mode:
automatic: Automatically managed
inactive: No specific folder
From 71562d16e79ea2b379860563861effbe492cbdad Mon Sep 17 00:00:00 2001
From: OpenProject Actions CI
Date: Sun, 1 Sep 2024 03:13:16 +0000
Subject: [PATCH 043/147] update locales from crowdin [ci skip]
---
config/locales/crowdin/js-sv.yml | 4 +--
config/locales/crowdin/js-zh-CN.yml | 4 +--
config/locales/crowdin/sv.yml | 10 +++----
config/locales/crowdin/zh-CN.yml | 30 +++++++++----------
.../config/locales/crowdin/zh-CN.yml | 8 ++---
.../storages/config/locales/crowdin/sv.yml | 2 +-
6 files changed, 29 insertions(+), 29 deletions(-)
diff --git a/config/locales/crowdin/js-sv.yml b/config/locales/crowdin/js-sv.yml
index ab63025c4242..5a60402ffffe 100644
--- a/config/locales/crowdin/js-sv.yml
+++ b/config/locales/crowdin/js-sv.yml
@@ -1187,8 +1187,8 @@ sv:
other: "%{count} dagar"
zero: "0 dagar"
word:
- one: "1 word"
- other: "%{count} words"
+ one: "1 ord"
+ other: "%{count} ord"
zen_mode:
button_activate: "Aktivera zen-läge"
button_deactivate: "Inaktivera avskalat läge"
diff --git a/config/locales/crowdin/js-zh-CN.yml b/config/locales/crowdin/js-zh-CN.yml
index 68289e86ba07..ec92c25eb122 100644
--- a/config/locales/crowdin/js-zh-CN.yml
+++ b/config/locales/crowdin/js-zh-CN.yml
@@ -278,9 +278,9 @@ zh-CN:
更改可能需要一些时间才能生效。当更新完所有相关工作包时,您将收到通知。
work_packages_settings:
warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_html: >-
- 将进度计算模式从基于状态改为基于工时,将使% 完成变为不可编辑字段,其值来自工时和剩余工时。% 完成现有值将保留。如果没有 工时和剩余工时的值,则需要这些值才能更改 % 完成。
+ 将进度计算模式从基于状态改为基于工时,将使完成 %变为不可编辑字段,其值来自工时和剩余工时。完成 %现有值将保留。如果没有 工时和剩余工时的值,则需要这些值才能更改 完成 %。
warning_progress_calculation_mode_change_from_status_to_field_html: >-
- 将进度计算模式从基于状态改为基于工时,将使% 完成字段可自由编辑。如果您选择输入工时或剩余工时的值,它们也将与% 完成相关联。更改剩余工时就可以更新% 完成。
+ 将进度计算模式从基于状态改为基于工时,将使完成 %字段可自由编辑。如果您选择输入工时或剩余工时的值,它们也将与完成 %相关联。更改剩余工时就可以更新完成 %。
warning_progress_calculation_mode_change_from_field_to_status_html: >-
将进度计算模式从基于工时的方式改为基于状态,将会导致所有现有的 %完整的 值丢失,并被与每个状态相关的值所替代。 剩余工时 的现有值也可能被重新计算,以反映这种变化。此操作不可逆转。
custom_actions:
diff --git a/config/locales/crowdin/sv.yml b/config/locales/crowdin/sv.yml
index b920f1565d27..8f3739f5a235 100644
--- a/config/locales/crowdin/sv.yml
+++ b/config/locales/crowdin/sv.yml
@@ -1652,7 +1652,7 @@ sv:
title: "Export"
submit: "Export"
format:
- label: "File format"
+ label: "Filformat"
options:
csv:
label: "CSV"
@@ -1684,10 +1684,10 @@ sv:
label: "Zoom levels"
caption: "Select what is the zoom level for dates displayed in the chart."
options:
- days: "Days"
- weeks: "Weeks"
- months: "Months"
- quarters: "Quarters"
+ days: "Dagar"
+ weeks: "Veckor"
+ months: "Månader"
+ quarters: "Kvartal"
column_width:
label: "Table column width"
options:
diff --git a/config/locales/crowdin/zh-CN.yml b/config/locales/crowdin/zh-CN.yml
index 7b4e6e1ca084..10c6419b8c6f 100644
--- a/config/locales/crowdin/zh-CN.yml
+++ b/config/locales/crowdin/zh-CN.yml
@@ -297,7 +297,7 @@ zh-CN:
actions:
label_enable_single: "在此项目中处于活动状态,点击禁用"
label_disable_single: "在此项目中未启用,点击启用"
- remove_from_project: "Remove from project"
+ remove_from_project: "从项目移除"
label_enable_all: "全部启用"
label_disable_all: "全部禁用"
is_required_blank_slate:
@@ -1063,16 +1063,16 @@ zh-CN:
estimated_hours:
not_a_number: "不是有效的持续时间。"
cant_be_inferior_to_remaining_work: "不能低于剩余工时。"
- must_be_set_when_remaining_work_and_percent_complete_are_set: "设置“剩余工时”和“% 完成”时必填。"
+ must_be_set_when_remaining_work_and_percent_complete_are_set: "设置“剩余工时”和“完成%”时必填。"
remaining_hours:
not_a_number: "不是有效的持续时间。"
cant_exceed_work: "不能高于工时。"
must_be_set_when_work_is_set: "设置“工时”时必填。"
- must_be_set_when_work_and_percent_complete_are_set: "设置“工时”和“% 完成”时必填。"
+ must_be_set_when_work_and_percent_complete_are_set: "设置“工时”和“完成%”时必填。"
must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >-
- 当“工时”已设置,且“% 完成”为 100%时,必须为0h。
+ 当“工时”已设置,且“完成%”为 100% 时,必须为 0h 。
must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >-
- 当“工时”为空,且“% 完成”为 100%时,必须为空。
+ 当“工时”为空,且“完成%”为 100% 时,必须为空。
readonly_status: "工作包处于只读状态,因此无法更改其属性。"
type:
attributes:
@@ -1632,7 +1632,7 @@ zh-CN:
options:
table:
label: "表格"
- caption: "以表格形式导出工作包列表,包含所需的列。"
+ caption: "将工作包列表导出为包含所需列的表格。"
report:
label: "报告"
caption: "以详细报告的形式导出列表中的所有工作包。"
@@ -1640,8 +1640,8 @@ zh-CN:
label: "甘特图"
caption: "以甘特图视图导出工作包列表。"
include_images:
- label: "包含图片"
- caption: "不包含图像以缩小导出PDF的大小。"
+ label: "包含图像"
+ caption: "不包含图像以减小导出PDF的大小。"
gantt_zoom_levels:
label: "缩放级别"
caption: "选择图表中显示日期的缩放级别。"
@@ -1668,7 +1668,7 @@ zh-CN:
xls:
include_relations:
label: "包含关系"
- caption: "该选项将为每个工作包与另一个工作包的关系创建一个副本。"
+ caption: "此选项将为每个与其他工作包有关系的工作包创建一个副本。"
include_descriptions:
label: "包含描述"
caption: "该选项将添加原始格式的描述列。"
@@ -3074,9 +3074,9 @@ zh-CN:
setting_work_package_done_ratio_field: "基于工时"
setting_work_package_done_ratio_status: "基于状态"
setting_work_package_done_ratio_explanation_pre_14_4_without_percent_complete_edition_html: >
- 在基于工时模式下,“% 完成”是根据已完成的工时占总工时的比例计算出来的。在基于状态模式下,每个状态都有一个与之相关的“% 完成”。更改状态将改变“% 完成”。
+ 在基于工时模式下,“完成 %”是根据已完成的工时占总工时的比例计算出来的。在基于状态模式下,每个状态都有一个与之相关的“完成 %”。更改状态将改变“完成 %”。
setting_work_package_done_ratio_explanation_html: >
- 在基于工作的模式下,“% 完成”可以自由设置为任何值。如果选择输入 "工时 "值,则会自动得出 "剩余工时"。在基于状态的模式下,每个状态都有一个与之相关的“% 完成”值。更改状态将改变“% 完成”。
+ 在基于工作的模式下,“完成 %”可以自由设置为任何值。如果选择输入 "工时 "值,则会自动得出 "剩余工时"。在基于状态的模式下,每个状态都有一个与之相关的“完成 %”值。更改状态将改变“完成 %”。
setting_work_package_properties: "工作包属性"
setting_work_package_startdate_is_adddate: "使用当前日期作为新工作包的开始日期"
setting_work_packages_projects_export_limit: "工作包/项目导出限制"
@@ -3458,7 +3458,7 @@ zh-CN:
label_note: "注意:"
modal:
work_based_help_text: "在可能的情况下,每个字段都会根据另外两个字段自动计算。"
- work_based_help_text_pre_14_4_without_percent_complete_edition: "“% 完成”由 \"工时\" 和 \"剩余工时\" 自动得出。"
+ work_based_help_text_pre_14_4_without_percent_complete_edition: "“完成 %”由 \"工时\" 和 \"剩余工时\" 自动得出。"
status_based_help_text: "完成百分比由工作包状态设定。"
migration_warning_text: "在基于工时的进度计算模式下,完成百分比不能手动设置,而是与工时绑定。现有值已被保留,但无法编辑。请先输入工时。"
derivation_hints:
@@ -3468,13 +3468,13 @@ zh-CN:
derived: "源自“工时”和“剩余工时”。"
estimated_hours:
cleared_because_remaining_work_is_empty: "已清空,因为“剩余工时”为空。"
- derived: "由“剩余工时”和“% 完成”得出"
+ derived: "由“剩余工时”和“完成 %”得出"
same_as_remaining_work: "设置为与“剩余工时”相同的值。"
remaining_hours:
cleared_because_work_is_empty: "已清空,因为 \"工时 \"为空。"
- cleared_because_percent_complete_is_empty: "已清空,因为“% 完成”为空。"
+ cleared_because_percent_complete_is_empty: "已清空,因为“完成 %”为空。"
decreased_like_work: "减少与 \"工时 \"相同的数额。"
- derived: "由“工时”和“% 完成”得出"
+ derived: "由“工时”和“完成 %”得出"
increased_like_work: "增加与 \"工时 \"相同的数额。"
same_as_work: "设置为与 \"工时 \"相同的值。"
permissions:
diff --git a/modules/job_status/config/locales/crowdin/zh-CN.yml b/modules/job_status/config/locales/crowdin/zh-CN.yml
index da0ec0621059..c0cfed029dc1 100644
--- a/modules/job_status/config/locales/crowdin/zh-CN.yml
+++ b/modules/job_status/config/locales/crowdin/zh-CN.yml
@@ -5,17 +5,17 @@ zh-CN:
description: "后台作业的列表和状态。"
job_status_dialog:
download_starts: '下载会自动开始。'
- link_to_download: '或 %{link} 下载。'
+ link_to_download: '或者,%{link} 以下载。'
click_here: '点击此处'
title: '后台作业状态'
- redirect: '正在将您重新定向。'
+ redirect: '正在将您重定向。'
redirect_link: '请点击此处继续。'
- redirect_errors: '由于这些错误,您将不会被自动重新定向。'
+ redirect_errors: '由于这些错误,您将不会被自动重定向。'
errors: '出错了'
generic_messages:
not_found: '找不到此项作业。'
in_queue: '作业已排队,将很快处理。'
- in_process: '工作正在处理中。'
+ in_process: '作业正在处理中。'
error: '作业未能完成。'
cancelled: '作业因错误被取消。'
success: '作业已成功完成。'
diff --git a/modules/storages/config/locales/crowdin/sv.yml b/modules/storages/config/locales/crowdin/sv.yml
index 7047866eec73..790a1bce560b 100644
--- a/modules/storages/config/locales/crowdin/sv.yml
+++ b/modules/storages/config/locales/crowdin/sv.yml
@@ -60,7 +60,7 @@ sv:
project_module_storages: Filer
project_storages:
edit_project_folder:
- label: Edit project folder
+ label: Redigera projektmapp
project_folder_mode:
automatic: Automatically managed
inactive: No specific folder
From e5d334f9a019e876b39119da481bf2cdd1ab2c20 Mon Sep 17 00:00:00 2001
From: OpenProject Actions CI
Date: Mon, 2 Sep 2024 03:05:36 +0000
Subject: [PATCH 044/147] update locales from crowdin [ci skip]
---
config/locales/crowdin/vi.yml | 14 +++++++-------
modules/meeting/config/locales/crowdin/vi.yml | 6 +++---
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/config/locales/crowdin/vi.yml b/config/locales/crowdin/vi.yml
index 95d02458d286..d7d9acc44134 100644
--- a/config/locales/crowdin/vi.yml
+++ b/config/locales/crowdin/vi.yml
@@ -267,8 +267,8 @@ vi:
no_results_title_text: Không có dự án nào
no_results_content_text: Tạo một dự án mới
search:
- label: Project name filter
- placeholder: Search by project name
+ label: Bộ lọc tên dự án
+ placeholder: Tìm kiếm theo tên dự án
lists:
active: "Các dự án đang hoạt động"
my: "Dự án của tôi"
@@ -1035,10 +1035,10 @@ vi:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
- must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "không khớp với Công việc và Công việc còn lại"
+ cannot_be_set_when_work_is_zero: "không thể thiết lập khi Công việc là 0h"
+ must_be_set_when_remaining_work_is_set: "cần thiết khi công việc còn lại được thiết lập."
+ must_be_set_when_work_and_remaining_work_are_set: "cần thiết khi Công việc và Công việc còn lại được thiết lập."
inclusion: "phải nằm trong khoảng từ 0 đến 100."
due_date:
not_start_date: "không phải ngày bắt đầu, mặc dù điều này là cần thiết cho các mốc quan trọng."
@@ -1068,7 +1068,7 @@ vi:
does_not_exist: "Thể loại đã chỉ định không tồn tại."
estimated_hours:
not_a_number: "không phải là thời gian hợp lệ."
- cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ cant_be_inferior_to_remaining_work: "không thể thấp hơn Công việc còn lại."
must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "không phải là thời gian hợp lệ."
diff --git a/modules/meeting/config/locales/crowdin/vi.yml b/modules/meeting/config/locales/crowdin/vi.yml
index 15189cde1e9b..1bd2bc127497 100644
--- a/modules/meeting/config/locales/crowdin/vi.yml
+++ b/modules/meeting/config/locales/crowdin/vi.yml
@@ -122,7 +122,7 @@ vi:
email:
send_emails: "Gửi email"
send_invitation_emails: >
- Send an email invitation immediately to the participants selected above. You can also do this manually at any time later.
+ Gửi lời mời qua email ngay lập tức đến những người tham gia được chọn ở trên. Bạn cũng có thể thực hiện thủ công bất kỳ lúc nào sau đó.
open_meeting_link: "Mở cuộc họp"
invited:
summary: "%{actor} đã gửi cho bạn một lời mời tham gia cuộc họp %{title}"
@@ -147,7 +147,7 @@ vi:
empty_text: "Kéo các mục vào đây hoặc tạo một cái mới"
notice_successful_notification: "Đã gửi thông báo thành công"
notice_timezone_missing: Chưa đặt múi giờ và %{zone} đã được chọn. Để chọn múi giowf của bạn, nhấn vào đây.
- notice_meeting_updated: "This page has been updated by someone else. Reload to view changes."
+ notice_meeting_updated: "Trang này đã được người khác cập nhật. Tải lại để xem thay đổi."
permission_create_meetings: "Tạo cuộc họp"
permission_edit_meetings: "Chỉnh sửa cuộc họp"
permission_delete_meetings: "Xóa cuộc họp"
@@ -179,7 +179,7 @@ vi:
label_meeting_delete: "Xóa cuộc họp"
label_meeting_created_by: "Được tạo bởi"
label_meeting_last_updated: "Cập nhật lần cuối"
- label_meeting_reload: "Reload"
+ label_meeting_reload: "Tải lại"
label_agenda_items: "Các mục chương trình nghị sự"
label_agenda_items_reordered: "đã sắp xếp lại"
label_agenda_item_remove: "Gỡ bỏ khỏi chương trình nghị sự"
From 5cc84f41c5a580b6d85a044ed57471e428c70a76 Mon Sep 17 00:00:00 2001
From: OpenProject Actions CI
Date: Mon, 2 Sep 2024 03:07:53 +0000
Subject: [PATCH 045/147] update locales from crowdin [ci skip]
---
config/locales/crowdin/vi.yml | 14 +++++++-------
modules/meeting/config/locales/crowdin/vi.yml | 6 +++---
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/config/locales/crowdin/vi.yml b/config/locales/crowdin/vi.yml
index db1663be1d86..ddebd42acc7f 100644
--- a/config/locales/crowdin/vi.yml
+++ b/config/locales/crowdin/vi.yml
@@ -267,8 +267,8 @@ vi:
no_results_title_text: Không có dự án nào
no_results_content_text: Tạo một dự án mới
search:
- label: Project name filter
- placeholder: Search by project name
+ label: Bộ lọc tên dự án
+ placeholder: Tìm kiếm theo tên dự án
lists:
active: "Các dự án đang hoạt động"
my: "Dự án của tôi"
@@ -1035,10 +1035,10 @@ vi:
assigned_to:
format: "%{message}"
done_ratio:
- does_not_match_work_and_remaining_work: "does not match Work and Remaining work"
- cannot_be_set_when_work_is_zero: "cannot be set when Work is 0h"
- must_be_set_when_remaining_work_is_set: "required when Remaining work is set."
- must_be_set_when_work_and_remaining_work_are_set: "required when Work and Remaining work are set."
+ does_not_match_work_and_remaining_work: "không khớp với Công việc và Công việc còn lại"
+ cannot_be_set_when_work_is_zero: "không thể thiết lập khi Công việc là 0h"
+ must_be_set_when_remaining_work_is_set: "cần thiết khi công việc còn lại được thiết lập."
+ must_be_set_when_work_and_remaining_work_are_set: "cần thiết khi Công việc và Công việc còn lại được thiết lập."
inclusion: "phải nằm trong khoảng từ 0 đến 100."
due_date:
not_start_date: "không phải ngày bắt đầu, mặc dù điều này là cần thiết cho các mốc quan trọng."
@@ -1068,7 +1068,7 @@ vi:
does_not_exist: "Thể loại đã chỉ định không tồn tại."
estimated_hours:
not_a_number: "không phải là thời gian hợp lệ."
- cant_be_inferior_to_remaining_work: "cannot be lower than Remaining work."
+ cant_be_inferior_to_remaining_work: "không thể thấp hơn Công việc còn lại."
must_be_set_when_remaining_work_and_percent_complete_are_set: "required when Remaining work and % Complete are set."
remaining_hours:
not_a_number: "không phải là thời gian hợp lệ."
diff --git a/modules/meeting/config/locales/crowdin/vi.yml b/modules/meeting/config/locales/crowdin/vi.yml
index 15189cde1e9b..1bd2bc127497 100644
--- a/modules/meeting/config/locales/crowdin/vi.yml
+++ b/modules/meeting/config/locales/crowdin/vi.yml
@@ -122,7 +122,7 @@ vi:
email:
send_emails: "Gửi email"
send_invitation_emails: >
- Send an email invitation immediately to the participants selected above. You can also do this manually at any time later.
+ Gửi lời mời qua email ngay lập tức đến những người tham gia được chọn ở trên. Bạn cũng có thể thực hiện thủ công bất kỳ lúc nào sau đó.
open_meeting_link: "Mở cuộc họp"
invited:
summary: "%{actor} đã gửi cho bạn một lời mời tham gia cuộc họp %{title}"
@@ -147,7 +147,7 @@ vi:
empty_text: "Kéo các mục vào đây hoặc tạo một cái mới"
notice_successful_notification: "Đã gửi thông báo thành công"
notice_timezone_missing: Chưa đặt múi giờ và %{zone} đã được chọn. Để chọn múi giowf của bạn, nhấn vào đây.
- notice_meeting_updated: "This page has been updated by someone else. Reload to view changes."
+ notice_meeting_updated: "Trang này đã được người khác cập nhật. Tải lại để xem thay đổi."
permission_create_meetings: "Tạo cuộc họp"
permission_edit_meetings: "Chỉnh sửa cuộc họp"
permission_delete_meetings: "Xóa cuộc họp"
@@ -179,7 +179,7 @@ vi:
label_meeting_delete: "Xóa cuộc họp"
label_meeting_created_by: "Được tạo bởi"
label_meeting_last_updated: "Cập nhật lần cuối"
- label_meeting_reload: "Reload"
+ label_meeting_reload: "Tải lại"
label_agenda_items: "Các mục chương trình nghị sự"
label_agenda_items_reordered: "đã sắp xếp lại"
label_agenda_item_remove: "Gỡ bỏ khỏi chương trình nghị sự"
From 5c79c89ae27c2b46f52903b858e05ef8465ebf9f Mon Sep 17 00:00:00 2001
From: as-op
Date: Mon, 2 Sep 2024 09:57:05 +0200
Subject: [PATCH 046/147] fix broken anchor link
---
docs/api/apiv3/example/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/api/apiv3/example/README.md b/docs/api/apiv3/example/README.md
index 3c6e740fca48..7aab5e7fe4e4 100644
--- a/docs/api/apiv3/example/README.md
+++ b/docs/api/apiv3/example/README.md
@@ -138,7 +138,7 @@ A form:
* contains a *schema* describing the properties of the work package as well as listing the available values for those referencing other resources. E.g. the projects in which work packages can be created (read in which the user has the permission to create work packages) are listed.
* notes the current *errors* in the payload. E.g. a work package cannot be created outside of a project so a project reference needs to be provided.
-The API documentation offers detailed information [on forms in general](../forms) and on the [work package create form](../endpoints/work-packages/#work-package-create-form-for-project) in particular.
+The API documentation offers detailed information [on forms in general](../forms) and on the [work package create form](../endpoints/work-packages/#form-for-creating-work-packages-in-a-project) in particular.
We will first fetch the empty form:
From ce412d8fbe687aba7f62fbbb102e6d5957999d64 Mon Sep 17 00:00:00 2001
From: as-op
Date: Mon, 2 Sep 2024 09:57:30 +0200
Subject: [PATCH 047/147] chore(docs): remove unused images
---
.../openproject_my_account_page_new.png | Bin 71158 -> 0 bytes
..._file_storages_health_message_nextcloud.png | Bin 105639 -> 0 bytes
.../information/Sys-admin-information.png | Bin 28103 -> 0 bytes
.../information/image-20200124104411677.png | Bin 21949 -> 0 bytes
.../information/image-20200124104803476.png | Bin 9520 -> 0 bytes
.../Sys-admin-copy-workflow.png | Bin 15081 -> 0 bytes
.../Sys-admin-workflow-summary.png | Bin 15102 -> 0 bytes
.../system-guide-ph-user-edit-project-role.png | Bin 28232 -> 0 bytes
.../agile-boards/this-is-a-kanban-board.png | Bin 135659 -> 0 bytes
.../home/openproject_user_guide_home_page.png | Bin 573039 -> 0 bytes
.../project-lists/public-project-lists.png | Bin 38002 -> 0 bytes
.../edit-work-package-1566546727784.png | Bin 109500 -> 0 bytes
12 files changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 docs/getting-started/my-account/openproject_my_account_page_new.png
delete mode 100644 docs/system-admin-guide/files/external-file-storages/health-status/openproject_file_storages_health_message_nextcloud.png
delete mode 100644 docs/system-admin-guide/information/Sys-admin-information.png
delete mode 100644 docs/system-admin-guide/information/image-20200124104411677.png
delete mode 100644 docs/system-admin-guide/information/image-20200124104803476.png
delete mode 100644 docs/system-admin-guide/manage-work-packages/work-package-workflows/Sys-admin-copy-workflow.png
delete mode 100644 docs/system-admin-guide/manage-work-packages/work-package-workflows/Sys-admin-workflow-summary.png
delete mode 100644 docs/system-admin-guide/users-permissions/placeholder-users/system-guide-ph-user-edit-project-role.png
delete mode 100644 docs/user-guide/agile-boards/this-is-a-kanban-board.png
delete mode 100644 docs/user-guide/home/openproject_user_guide_home_page.png
delete mode 100644 docs/user-guide/projects/project-lists/public-project-lists.png
delete mode 100644 docs/user-guide/work-packages/edit-work-package/edit-work-package-1566546727784.png
diff --git a/docs/getting-started/my-account/openproject_my_account_page_new.png b/docs/getting-started/my-account/openproject_my_account_page_new.png
deleted file mode 100644
index 998de6a73c0d43d644de6e9e3456639939ea201e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 71158
zcmcG#Wmp?cxG-GDDH_~@Lxa0p(4wVCa1U-RTBJAxDN@|sH9*ngR@~jSIK}l#`n+XBcv_Qfkkhy?OiW*~>2E7l;x-j}RR3cE2gN~F+Zjn69IVo{39fE2UYBQ690H~A)LF~*Z4+~3W^UH!arVEq7c7Wdr1-L
zdVJ*8yP>!urM!&*_w1Q5iq7AMFXYw#^ZTdWA#aQz4W=ZC9Jf;~>lSsLLx%`5-i4If
zrqHs9>)KYEy%Fo~70h?>6M@o<9+BkBM+TzF%Ev~bdFxxNPFr_AjZ=em!UipRqK(Ui
zi}zS`1+K%vnk8flkIK?c^wwJ?fe(c~kE36ao_TX8FDnggofVzyTNU#Ny2q1N(D(YW
zA=evm2;G{_=;~9UcCtMN%W5&4@rLA;#`ze&!)plm9yp7PW}0J4MKYtt()ofrF1l&Z
zFPfUJUi`hC(eTzEQhP@3F0KUgZTGv+x7+&MP%%@IQH
zGJKRiHG(}k^m@eI@h){USg)kn{$^DuQzG#AvdGa*IO}3@(r&WC5#MdkK&a1}kU-q{
z!~qSG&w6Z-+vvQIpvoQaz}I3!iLYbhur~^S*KNoK#Dg-xKSEwVb)kd`b#K{Le$6KX
zv&gJbh;u})QZ4}{kf~^jN`c{cMm;iKK}Hai!<|CGfB;!4M_YE-Q-mUFR;m1z`02s+*MEYc%|0H%iY~czdV_|
zY_*hGf|yUSK;m3^8=BxyYM9%_9<`s7a^_NzydN+^G9`n>(P)@Zy
z%!N^YLw~e*kDZ)y^EGXx%n5w9ThJ_RA$Wd4WH0`5#^gy-=|M}q*H)^ne+U;jGW)nu
zZ)R*i3|2Q+OWkl`LRlhE`vrI6*6>(&ah>T{=rQWkl1O=zNR+kae$Sz8ipIj>{Q0e^
zj*i}bvbt>xEpbkEem5btbk4T1d_*V?I{_|&i!?N1ST6!zNf`dXwZo-ki(TVj)7^e?
zXV!XR&X=0Rk7dq>>%DVhp58Bbyw!Y6WWIcpx?=WTC0Z5_#V|mWMH?v^s(;?MvA?SO
zW|5OsLUUII8ZFBu<7GQlzQEJHa=Q1yHBZ=WWG`b`$6=)
zX)gEWa~VRC4?U~`Nctb~g}fJ%o;>zvOW&LLqBPzGS2iGlBs5QvSfNZp7jo^RyIrs@
zxvPqikZwZhkoGQoX4`5@{l={#R`TWKi6cVwHmHRQ2CI~mEes1Nuh%Owv%ADvAmwhv
zPrAC=R!MS8Q=pNyV2l;7Ct@oFyxG7>x~wB=4LtT{eC`>E44g;(<=WQReV
zUmr|1*?e