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 diff --git a/.github/workflows/test-core.yml b/.github/workflows/test-core.yml index e5b9afcf86e0..30d3d658d320 100644 --- a/.github/workflows/test-core.yml +++ b/.github/workflows/test-core.yml @@ -27,6 +27,7 @@ jobs: labels: - runs-on - runner=32cpu-linux-x64 + - family=m7 - run-id=${{ github.run_id }} timeout-minutes: 40 env: diff --git a/Gemfile b/Gemfile index 81dfd6cd209c..9f6902c2d042 100644 --- a/Gemfile +++ b/Gemfile @@ -61,7 +61,7 @@ gem "friendly_id", "~> 5.5.0" gem "acts_as_list", "~> 1.2.0" gem "acts_as_tree", "~> 2.9.0" -gem "awesome_nested_set", "~> 3.6.0" +gem "awesome_nested_set", "~> 3.7.0" gem "closure_tree", "~> 7.4.0" gem "rubytree", "~> 2.1.0" # Only used in down migrations now. @@ -348,7 +348,7 @@ group :development, :test do gem "erblint-github", require: false # Brakeman scanner - gem "brakeman", "~> 6.1.0" + gem "brakeman", "~> 6.2.0" # i18n-tasks helps find and manage missing and unused translations. gem "i18n-tasks", "~> 1.0.13", require: false @@ -398,4 +398,4 @@ end gem "openproject-octicons", "~>19.18.0" gem "openproject-octicons_helper", "~>19.18.0" -gem "openproject-primer_view_components", "~>0.43.0" +gem "openproject-primer_view_components", "~>0.43.1" diff --git a/Gemfile.lock b/Gemfile.lock index dd24b489df94..ad3b67481d06 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -338,21 +338,21 @@ GEM attr_required (1.0.2) auto_strip_attributes (2.6.0) activerecord (>= 4.0) - awesome_nested_set (3.6.0) - activerecord (>= 4.0.0, < 7.2) + awesome_nested_set (3.7.0) + activerecord (>= 4.0.0, < 8.0) awrence (1.2.1) aws-eventstream (1.3.0) - aws-partitions (1.968.0) - aws-sdk-core (3.202.0) + aws-partitions (1.970.0) + aws-sdk-core (3.203.0) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.9) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.88.0) - aws-sdk-core (~> 3, >= 3.201.0) + aws-sdk-kms (1.89.0) + aws-sdk-core (~> 3, >= 3.203.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.159.0) - aws-sdk-core (~> 3, >= 3.201.0) + aws-sdk-s3 (1.160.0) + aws-sdk-core (~> 3, >= 3.203.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) aws-sdk-sns (1.82.0) @@ -384,7 +384,7 @@ GEM bindata (2.5.0) bootsnap (1.18.4) msgpack (~> 1.2) - brakeman (6.1.2) + brakeman (6.2.1) racc browser (6.0.0) builder (3.3.0) @@ -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) @@ -633,7 +634,7 @@ GEM hashdiff (1.1.1) hashery (2.1.2) hashie (3.6.0) - highline (3.1.0) + highline (3.1.1) reline html-pipeline (2.14.3) activesupport (>= 2) @@ -698,7 +699,7 @@ GEM launchy (3.0.1) addressable (~> 2.8) childprocess (~> 5.0) - lefthook (1.7.14) + lefthook (1.7.15) letter_opener (1.10.0) launchy (>= 2.2, < 4) letter_opener_web (3.0.0) @@ -748,14 +749,14 @@ 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) minitest (5.25.1) msgpack (1.7.2) multi_json (1.15.0) - mustermann (3.0.2) + mustermann (3.0.3) ruby2_keywords (~> 0.0.1) mustermann-grape (1.1.0) mustermann (>= 1.0.0) @@ -802,7 +803,7 @@ GEM actionview openproject-octicons (= 19.18.0) railties - openproject-primer_view_components (0.43.0) + openproject-primer_view_components (0.43.1) actionview (>= 5.0.0) activesupport (>= 5.0.0) openproject-octicons (>= 19.17.0) @@ -822,7 +823,7 @@ GEM parallel (1.26.3) parallel_tests (4.7.1) parallel - parser (3.3.4.2) + parser (3.3.5.0) ast (~> 2.4.1) racc pdf-core (0.9.0) @@ -982,15 +983,15 @@ GEM rspec-core (~> 3.13.0) rspec-expectations (~> 3.13.0) rspec-mocks (~> 3.13.0) - rspec-core (3.13.0) + rspec-core (3.13.1) rspec-support (~> 3.13.0) - rspec-expectations (3.13.1) + rspec-expectations (3.13.2) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-mocks (3.13.1) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-rails (6.1.4) + rspec-rails (6.1.5) actionpack (>= 6.1) activesupport (>= 6.1) railties (>= 6.1) @@ -1001,18 +1002,17 @@ GEM rspec-retry (0.6.2) rspec-core (> 3.3) rspec-support (3.13.1) - rubocop (1.65.1) + rubocop (1.66.1) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 2.4, < 3.0) - rexml (>= 3.2.5, < 4.0) - rubocop-ast (>= 1.31.1, < 2.0) + rubocop-ast (>= 1.32.2, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.32.1) + rubocop-ast (1.32.3) parser (>= 3.3.1.0) rubocop-capybara (2.21.0) rubocop (~> 1.41) @@ -1054,9 +1054,9 @@ 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) + selenium-webdriver (4.24.0) base64 (~> 0.2) logger (~> 1.4) rexml (~> 3.2, >= 3.2.5) @@ -1091,8 +1091,8 @@ GEM sprockets (>= 3.0.0) ssrf_filter (1.0.8) stackprof (0.2.26) - store_attribute (1.2.0) - activerecord (>= 6.0) + store_attribute (1.3.0) + activerecord (>= 6.1) stringex (2.8.6) stringio (3.1.1) strscan (3.1.0) @@ -1108,9 +1108,9 @@ GEM table_print (1.5.7) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) - test-prof (1.4.1) + test-prof (1.4.2) text-hyphen (1.5.0) - thor (1.3.1) + thor (1.3.2) thread_safe (0.3.6) timecop (0.9.10) timeout (0.4.1) @@ -1134,7 +1134,7 @@ GEM tzinfo (>= 1.0.0) uber (0.1.0) unicode-display_width (2.5.0) - uri (0.13.0) + uri (0.13.1) validate_email (0.1.6) activemodel (>= 3.0) mail (>= 2.2.5) @@ -1184,7 +1184,7 @@ GEM xpath (3.2.0) nokogiri (~> 1.8) yard (0.9.36) - zeitwerk (2.6.17) + zeitwerk (2.6.18) PLATFORMS ruby @@ -1201,13 +1201,13 @@ DEPENDENCIES airbrake (~> 13.0.0) appsignal (~> 3.10.0) auto_strip_attributes (~> 2.5) - awesome_nested_set (~> 3.6.0) + awesome_nested_set (~> 3.7.0) aws-sdk-core (~> 3.107) aws-sdk-s3 (~> 1.91) axe-core-rspec bcrypt (~> 3.1.6) bootsnap (~> 1.18.0) - brakeman (~> 6.1.0) + brakeman (~> 6.2.0) browser (~> 6.0.0) budgets! capybara (~> 3.40.0) @@ -1303,7 +1303,7 @@ DEPENDENCIES openproject-octicons (~> 19.18.0) openproject-octicons_helper (~> 19.18.0) openproject-openid_connect! - openproject-primer_view_components (~> 0.43.0) + openproject-primer_view_components (~> 0.43.1) openproject-recaptcha! openproject-reporting! openproject-storages! diff --git a/modules/storages/app/components/storages/project_storages/projects/table_component.html.erb b/app/components/admin/custom_fields/edit_form_header_component.html.erb similarity index 62% rename from modules/storages/app/components/storages/project_storages/projects/table_component.html.erb rename to app/components/admin/custom_fields/edit_form_header_component.html.erb index 3488dfd23538..140535ca0d47 100644 --- a/modules/storages/app/components/storages/project_storages/projects/table_component.html.erb +++ b/app/components/admin/custom_fields/edit_form_header_component.html.erb @@ -27,6 +27,26 @@ See COPYRIGHT and LICENSE files for more details. ++#%> -<%= component_wrapper(tag: "div", data: { turbo: true }) do %> - <%= render_parent %> -<% end %> +<%= + render(Primer::OpenProject::PageHeader.new(test_selector: "custom-fields--page-header")) do |header| + header.with_title { @custom_field.name } + + header.with_breadcrumbs(breadcrumbs_items) + + header.with_tab_nav(label: nil, test_selector: :custom_field_detail_header) do |tab_nav| + tab_nav.with_tab( + selected: tab_selected?(:edit), + href: edit_custom_field_path(@custom_field) + ) do |tab| + tab.with_text { t(:label_details) } + end + + tab_nav.with_tab( + selected: tab_selected?(:custom_field_projects), + href: custom_field_projects_path(@custom_field) + ) do |tab| + tab.with_text { t(:label_project_plural) } + end + end + end +%> diff --git a/app/components/admin/custom_fields/edit_form_header_component.rb b/app/components/admin/custom_fields/edit_form_header_component.rb new file mode 100644 index 000000000000..c64d79dc8c5c --- /dev/null +++ b/app/components/admin/custom_fields/edit_form_header_component.rb @@ -0,0 +1,57 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +module Admin + module CustomFields + class EditFormHeaderComponent < ApplicationComponent + TAB_NAVS = %i[ + edit + custom_field_projects + ].freeze + + def initialize(custom_field:, selected:, **) + @custom_field = custom_field + @selected = selected + super(custom_field, **) + end + + def tab_selected?(tab_name) + TAB_NAVS.include?(tab_name) && tab_name == @selected + end + + private + + def breadcrumbs_items + [{ href: admin_index_path, text: t(:label_administration) }, + { href: custom_fields_path, text: t(:label_custom_field_plural) }, + { href: custom_fields_path(tab: @custom_field.type), text: I18n.t(@custom_field.type_name) }, + @custom_field.name] + end + end + end +end diff --git a/app/components/projects/row_component.rb b/app/components/projects/row_component.rb index 813360e27a06..d775a4669c73 100644 --- a/app/components/projects/row_component.rb +++ b/app/components/projects/row_component.rb @@ -116,7 +116,7 @@ def name end content << " " - content << helpers.link_to_project(project, {}, {}, false) + content << helpers.link_to_project(project, {}, { data: { turbo: false } }, false) content end 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/app/components/work_packages/details/tab_component.html.erb b/app/components/work_packages/details/tab_component.html.erb index 1561aa56938e..f684953bf5cd 100644 --- a/app/components/work_packages/details/tab_component.html.erb +++ b/app/components/work_packages/details/tab_component.html.erb @@ -1,12 +1,35 @@ <%= - flex_layout(classes: "op-work-package-details-tab-component") do |flex| + flex_layout(classes: "op-work-package-details-tab-component", data: { + "application-target": "dynamic", + controller: "work-packages--details--tabs" + }) do |flex| + flex.with_column(classes: "op-work-package-details-tab-component--action") do + render(Primer::Beta::IconButton.new(icon: :"chevron-left", + tag: :a, + scheme: :invisible, + data: { + action: "click->work-packages--details--tabs#scrollLeft" + }, + aria: { label: I18n.t(:label_scroll_left) })) + end + + flex.with_column(flex: 1, classes: "op-work-package-details-tab-component--tabs", test_selector: "wp-details-tab-component--tabs") do - render(Primer::Alpha::UnderlineNav.new(align: :left, label: "Tabs", classes: "op-primer-adjustment--UnderlineNav_spaciousLeft")) do |component| + render(Primer::Alpha::UnderlineNav.new(align: :left, + label: "Tabs", + data: { + "work-packages--details--tabs-target": "underlineNav", + })) do |component| menu_items.each do |node| component.with_tab(selected: @tab == node.name, - href: url_for(node.url), + href: helpers.url_for_with_params(**node.url), test_selector: "wp-details-tab-component--tab-#{node.name}", - data: { turbo: true, turbo_stream: true, turbo_action: "replace" } + data: { + turbo: true, + turbo_stream: true, + turbo_action: "replace", + "work-packages--details--tabs-target": @tab == node.name ? "activeElement" : "" + } ) do |c| c.with_text { t("js.work_packages.tabs.#{node.name}") } count = node.badge(work_package:).to_i @@ -16,6 +39,16 @@ end end + flex.with_column(classes: "op-work-package-details-tab-component--action") do + render(Primer::Beta::IconButton.new(icon: :"chevron-right", + tag: :a, + scheme: :invisible, + data: { + action: "click->work-packages--details--tabs#scrollRight" + }, + aria: { label: I18n.t(:label_scroll_right) })) + end + flex.with_column(classes: "op-work-package-details-tab-component--action") do render(Primer::Beta::IconButton.new(icon: :"screen-full", tag: :a, @@ -29,7 +62,7 @@ flex.with_column(classes: "op-work-package-details-tab-component--action") do render(Primer::Beta::IconButton.new(icon: :x, tag: :a, - href: url_for(action: :close_split_view), + href: helpers.url_for_with_params(action: :close_split_view), data: { turbo: true, 'turbo-stream': true }, scheme: :invisible, test_selector: "wp-details-tab-component--close", diff --git a/app/components/work_packages/details/tab_component.sass b/app/components/work_packages/details/tab_component.sass index 23c2a467bf4c..4a6fdeb48444 100644 --- a/app/components/work_packages/details/tab_component.sass +++ b/app/components/work_packages/details/tab_component.sass @@ -14,3 +14,6 @@ &:last-of-type padding-right: 10px + + &:first-of-type + padding-left: 5px diff --git a/app/components/work_packages/exports/csv/export_settings_component.html.erb b/app/components/work_packages/exports/csv/export_settings_component.html.erb index 4cc6a176a260..dddd90a2649b 100644 --- a/app/components/work_packages/exports/csv/export_settings_component.html.erb +++ b/app/components/work_packages/exports/csv/export_settings_component.html.erb @@ -1,5 +1,20 @@ -<%= render WorkPackages::Exports::ColumnSelectionComponent.new( - query, - "columns-select-export-csv", - I18n.t("export.dialog.columns.input_caption_table") -) %> +<%= flex_layout do |container| %> + <%= container.with_row do |_columns| %> + <%= render WorkPackages::Exports::ColumnSelectionComponent.new( + query, + "columns-select-export-csv", + I18n.t("export.dialog.columns.input_caption_table") + ) %> + <% end %> + <%= container.with_row do |_csv_include_description| %> + <%= render OpenProject::Common::DividerComponent.new %> + <%= render(Primer::Alpha::CheckBox.new( + id: "show_descriptions_csv", + name: "show_descriptions", + value: "true", + unchecked_value: "false", + label: I18n.t("export.dialog.xls.include_descriptions.label"), + caption: I18n.t("export.dialog.xls.include_descriptions.caption"), + visually_hide_label: false)) %> + <% end %> +<% end %> diff --git a/app/components/work_packages/exports/modal_dialog_component.rb b/app/components/work_packages/exports/modal_dialog_component.rb index 45255b25993a..0707cb75ca62 100644 --- a/app/components/work_packages/exports/modal_dialog_component.rb +++ b/app/components/work_packages/exports/modal_dialog_component.rb @@ -38,16 +38,22 @@ class ModalDialogComponent < ApplicationComponent attr_reader :query, :project, :query_params - def initialize(query:, project:) + def initialize(query:, project:, title:) super @query = query @project = project - @query_params = ::API::V3::Queries::QueryParamsRepresenter.new(query).to_url_query(merge_params: { columns: [] }) + @query_params = ::API::V3::Queries::QueryParamsRepresenter.new(query).to_url_query(merge_params: { columns: [], title: }) end def export_format_url(format) - @project.nil? ? index_work_packages_path(format:) : project_work_packages_path(project, format:) + if @project.nil? + index_work_packages_path(format:) + elsif @query.id.present? + project_work_packages_path(project, query_id: @query.id, format:) + else + project_work_packages_path(project, format:) + end end def export_formats_settings diff --git a/app/components/work_packages/exports/xls/export_settings_component.html.erb b/app/components/work_packages/exports/xls/export_settings_component.html.erb index 0465d0db5488..7909c0191895 100644 --- a/app/components/work_packages/exports/xls/export_settings_component.html.erb +++ b/app/components/work_packages/exports/xls/export_settings_component.html.erb @@ -8,20 +8,24 @@ <% end %> <%= container.with_row do |_xls_include_relations| %> <%= render OpenProject::Common::DividerComponent.new(mt: 2) %> - <%= render(Primer::Alpha::CheckBox.new(name: "show_relations", - value: "true", - unchecked_value: "false", - label: I18n.t("export.dialog.xls.include_relations.label"), - caption: I18n.t("export.dialog.xls.include_relations.caption"), - visually_hide_label: false)) %> + <%= render(Primer::Alpha::CheckBox.new( + id: "show_relations_xls", + name: "show_relations", + value: "true", + unchecked_value: "false", + label: I18n.t("export.dialog.xls.include_relations.label"), + caption: I18n.t("export.dialog.xls.include_relations.caption"), + visually_hide_label: false)) %> <% end %> <%= container.with_row do |_xls_include_description| %> <%= render OpenProject::Common::DividerComponent.new %> - <%= render(Primer::Alpha::CheckBox.new(name: "show_descriptions", - value: "true", - unchecked_value: "false", - label: I18n.t("export.dialog.xls.include_descriptions.label"), - caption: I18n.t("export.dialog.xls.include_descriptions.caption"), - visually_hide_label: false)) %> + <%= render(Primer::Alpha::CheckBox.new( + id: "show_descriptions_xls", + name: "show_descriptions", + value: "true", + unchecked_value: "false", + label: I18n.t("export.dialog.xls.include_descriptions.label"), + caption: I18n.t("export.dialog.xls.include_descriptions.caption"), + visually_hide_label: false)) %> <% end %> <% end %> diff --git a/app/components/work_packages/split_view_component.sass b/app/components/work_packages/split_view_component.sass index 87e22c19c856..a6dfcb54e1ba 100644 --- a/app/components/work_packages/split_view_component.sass +++ b/app/components/work_packages/split_view_component.sass @@ -6,4 +6,4 @@ @media screen and (max-width: $breakpoint-lg) // Unfortunately, we have to enforce this style via !important as the resizer writes the width directly on the element as inline style - width: unset !important + min-width: unset !important diff --git a/app/contracts/roles/base_contract.rb b/app/contracts/roles/base_contract.rb index 854f0fe70047..7fc489a910f0 100644 --- a/app/contracts/roles/base_contract.rb +++ b/app/contracts/roles/base_contract.rb @@ -43,7 +43,7 @@ def assignable_permissions(keep_public: false) else assignable_member_permissions end.reject do |permission| - !keep_public && permission.public? + (!keep_public && permission.public?) || permission.hidden? end end diff --git a/app/controllers/activities_controller.rb b/app/controllers/activities_controller.rb index 40033e2a911f..930caf24843a 100644 --- a/app/controllers/activities_controller.rb +++ b/app/controllers/activities_controller.rb @@ -30,7 +30,8 @@ class ActivitiesController < ApplicationController include Layout menu_item :activity - before_action :load_and_authorize_in_optional_project, + before_action :warn_if_no_projects_visible, + :load_and_authorize_in_optional_project, :verify_activities_module_activated, :determine_subprojects, :determine_author, @@ -143,4 +144,10 @@ def set_session session[:activity] = { scope: @activity.scope, with_subprojects: @with_subprojects } end + + def warn_if_no_projects_visible + unless current_user.allowed_in_any_project?(:view_project_activity) + render_404(message: I18n.t("homescreen.additional.no_visible_projects")) + end + end end diff --git a/app/controllers/admin/custom_fields/custom_field_projects_controller.rb b/app/controllers/admin/custom_fields/custom_field_projects_controller.rb new file mode 100644 index 000000000000..1e0678764920 --- /dev/null +++ b/app/controllers/admin/custom_fields/custom_field_projects_controller.rb @@ -0,0 +1,49 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +class Admin::CustomFields::CustomFieldProjectsController < ApplicationController + layout "admin" + + model_object CustomField + + before_action :require_admin + before_action :find_model_object + + menu_item :custom_fields + + def index; end + + private + + def find_model_object(object_id = :custom_field_id) + super + @custom_field = @object + end +end diff --git a/app/controllers/colors_controller.rb b/app/controllers/colors_controller.rb index 7b710cb494f3..ed553c1ce1cf 100644 --- a/app/controllers/colors_controller.rb +++ b/app/controllers/colors_controller.rb @@ -109,7 +109,7 @@ def show_local_breadcrumb def default_breadcrumb; end def require_admin_unless_readonly_api_request - require_admin unless %w[index show].include? params[:action] and + require_admin unless %w[index show].include? action_name and api_request? end end diff --git a/app/controllers/concerns/accounts/authorization.rb b/app/controllers/concerns/accounts/authorization.rb index f99824e798d7..3d4227a43ded 100644 --- a/app/controllers/concerns/accounts/authorization.rb +++ b/app/controllers/concerns/accounts/authorization.rb @@ -46,9 +46,9 @@ module Accounts::Authorization private def authorization_check_required - unless authorization_is_ensured?(params[:action]) + unless authorization_is_ensured?(action_name) raise <<-MESSAGE - Authorization check required for #{self.class.name}##{params[:action]}. + Authorization check required for #{self.class.name}##{action_name}. Use any method of #{METHODS_ENFORCING_AUTHORIZATION.join(', ')} @@ -62,20 +62,20 @@ def authorization_check_required # Authorize the user for the requested controller action. # To be used in before_action hooks def authorize - do_authorize({ controller: params[:controller], action: params[:action] }, global: false) + do_authorize({ controller: controller_path, action: action_name }, global: false) end # Authorize the user for the requested controller action outside a project # To be used in before_action hooks def authorize_global - do_authorize({ controller: params[:controller], action: params[:action] }, global: true) + do_authorize({ controller: controller_path, action: action_name }, global: true) end # Find a project based on params[:project_id] def load_and_authorize_in_optional_project @project = Project.find(params[:project_id]) if params[:project_id].present? - do_authorize({ controller: params[:controller], action: params[:action] }, global: params[:project_id].blank?) + do_authorize({ controller: controller_path, action: action_name }, global: params[:project_id].blank?) rescue ActiveRecord::RecordNotFound render_404 end diff --git a/app/controllers/concerns/accounts/current_user.rb b/app/controllers/concerns/accounts/current_user.rb index e6bf353a8df9..de51756c3f36 100644 --- a/app/controllers/concerns/accounts/current_user.rb +++ b/app/controllers/concerns/accounts/current_user.rb @@ -105,7 +105,7 @@ def current_autologin_user end def current_rss_key_user - if params[:format] == "atom" && params[:key] && accept_key_auth_actions.include?(params[:action]) + if params[:format] == "atom" && params[:key] && accept_key_auth_actions.include?(action_name) # RSS key authentication does not start a session User.find_by_rss_key(params[:key]) end @@ -116,7 +116,7 @@ def current_api_key_user key = api_key_from_request - if key && accept_key_auth_actions.include?(params[:action]) + if key && accept_key_auth_actions.include?(action_name) # Use API key User.find_by_api_key(key) end diff --git a/app/controllers/notifications_controller.rb b/app/controllers/notifications_controller.rb index 123c55e92940..e7cdb02293b4 100644 --- a/app/controllers/notifications_controller.rb +++ b/app/controllers/notifications_controller.rb @@ -65,7 +65,7 @@ def share_upsale private - def split_view_base_route = notifications_path + def split_view_base_route = notifications_path(request.query_parameters) def default_breadcrumb; end diff --git a/app/controllers/roles_controller.rb b/app/controllers/roles_controller.rb index 8ef5d825ae5b..d4c2e0d08fbb 100644 --- a/app/controllers/roles_controller.rb +++ b/app/controllers/roles_controller.rb @@ -97,7 +97,7 @@ def destroy def report @roles = roles_scope - @permissions = OpenProject::AccessControl.permissions.reject(&:public?) + @permissions = visible_permissions end def bulk_update @@ -110,7 +110,7 @@ def bulk_update redirect_to action: "index" else @calls = calls - @permissions = OpenProject::AccessControl.permissions.reject(&:public?) + @permissions = visible_permissions render action: "report" end end @@ -139,6 +139,12 @@ def bulk_update_roles(roles) end end + def visible_permissions + OpenProject::AccessControl.permissions + .reject(&:public?) + .filter(&:visible?) + end + def roles_scope Role.visible.ordered_by_builtin_and_position end diff --git a/app/controllers/wiki_controller.rb b/app/controllers/wiki_controller.rb index 4e97b53cb491..95538c1a28ca 100644 --- a/app/controllers/wiki_controller.rb +++ b/app/controllers/wiki_controller.rb @@ -261,10 +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 + @html_diff = OpenProject::HtmlDiff.from_markdown( + @diff.content_from.data.text, + @diff.content_to.data.text + ) else render_404 end diff --git a/app/controllers/work_packages_controller.rb b/app/controllers/work_packages_controller.rb index 9e68b8b46495..3d8e12986034 100644 --- a/app/controllers/work_packages_controller.rb +++ b/app/controllers/work_packages_controller.rb @@ -87,7 +87,7 @@ def show end def export_dialog - respond_with_dialog WorkPackages::Exports::ModalDialogComponent.new(query: @query, project: @project) + respond_with_dialog WorkPackages::Exports::ModalDialogComponent.new(query: @query, project: @project, title: params[:title]) end protected diff --git a/app/forms/work_packages/progress_form.rb b/app/forms/work_packages/progress_form.rb index 61eecfa284b5..e61176221d27 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) @@ -182,10 +183,7 @@ def field_value(name) end def field_hint_message(field_name) - hint = work_package.derived_progress_hints[field_name] - return if hint.nil? - - I18n.t("work_package.progress.derivation_hints.#{field_name}.#{hint}") + work_package.derived_progress_hint(field_name)&.message end def validation_message(name) @@ -201,7 +199,7 @@ def as_percent(value) def default_field_options(name) 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: "work-packages--progress--touched-field-marker#markFieldAsTouched" } if @focused_field == name data[:"work-packages--progress--focus-field-target"] = "fieldToFocus" diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 85cea8735937..f03f5ca75c93 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -63,7 +63,7 @@ def link_to_if_authorized(*args, &) html_options = args.shift parameters_for_method_reference = args - return unless authorize_for(options[:controller] || params[:controller], options[:action]) + return unless authorize_for(options[:controller] || controller_path, options[:action]) if block_given? link_to(options, html_options, *parameters_for_method_reference, &) @@ -241,11 +241,11 @@ def other_formats_links(&) # Returns the theme, controller name, and action as css classes for the # HTML body. def body_css_classes - css = ["theme-" + OpenProject::CustomStyles::Design.identifier.to_s] + css = ["theme-#{OpenProject::CustomStyles::Design.identifier}"] - if params[:controller] && params[:action] - css << ("controller-" + params[:controller]) - css << ("action-" + params[:action]) + if controller_path && action_name + css << ("controller-#{controller_path}") + css << ("action-#{action_name}") end css << "ee-banners-#{EnterpriseToken.show_banners? ? 'visible' : 'hidden'}" diff --git a/app/helpers/settings_helper.rb b/app/helpers/settings_helper.rb index d34f4aab9b42..9aea8d24eb01 100644 --- a/app/helpers/settings_helper.rb +++ b/app/helpers/settings_helper.rb @@ -44,11 +44,6 @@ def system_settings_tabs controller: "/admin/settings/languages_settings", label: :label_languages }, - { - name: "projects", - controller: "/admin/settings/projects_settings", - label: :label_project_plural - }, { name: "repositories", controller: "/admin/settings/repositories_settings", diff --git a/app/helpers/url_helper.rb b/app/helpers/url_helper.rb new file mode 100644 index 000000000000..c044acf09826 --- /dev/null +++ b/app/helpers/url_helper.rb @@ -0,0 +1,6 @@ +module UrlHelper + def url_for_with_params(**args) + query = request.query_parameters + url_for(**query.merge(args)) + end +end diff --git a/app/helpers/wiki_helper.rb b/app/helpers/wiki_helper.rb index 8be019496d02..897db6b44830 100644 --- a/app/helpers/wiki_helper.rb +++ b/app/helpers/wiki_helper.rb @@ -58,10 +58,6 @@ def breadcrumb_for_page(page, action = nil) breadcrumb_paths(*paths) end - def nl2br(content) - content.gsub(/(?:\n\r?|\r\n?)/, "
").html_safe - end - private def wiki_page_options_for_select_of_level(pages, 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 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/app/models/work_package.rb b/app/models/work_package.rb index 859a093eb4d6..f7aef89f0ea3 100644 --- a/app/models/work_package.rb +++ b/app/models/work_package.rb @@ -332,12 +332,12 @@ def done_ratio=(value) write_attribute :done_ratio, convert_value_to_percentage(value) end - def derived_progress_hints=(hints) - @derived_progress_hints = hints + def set_derived_progress_hint(field_name, hint, **params) + derived_progress_hints[field_name] = ProgressHint.new("#{field_name}.#{hint}", params) end - def derived_progress_hints - @derived_progress_hints ||= {} + def derived_progress_hint(field_name) + derived_progress_hints[field_name] end def duration_in_hours @@ -553,6 +553,10 @@ def <=>(other) private + def derived_progress_hints + @derived_progress_hints ||= {} + end + def add_time_entry_for(user, attributes) return if time_entry_blank?(attributes) diff --git a/app/models/work_package/exports/csv.rb b/app/models/work_package/exports/csv.rb index 052dd3f82925..a16a5309f1e8 100644 --- a/app/models/work_package/exports/csv.rb +++ b/app/models/work_package/exports/csv.rb @@ -39,11 +39,19 @@ def title end def csv_headers + return super unless with_descriptions + super + [WorkPackage.human_attribute_name(:description)] end + def with_descriptions + ActiveModel::Type::Boolean.new.cast(options[:show_descriptions]) + end + # fetch all row values def csv_row(work_package) + return super unless with_descriptions + super.tap do |row| if row.any? row << if work_package.description diff --git a/app/models/work_package/pdf_export/markdown.rb b/app/models/work_package/pdf_export/markdown.rb index bfcf94e04010..a875f800bf89 100644 --- a/app/models/work_package/pdf_export/markdown.rb +++ b/app/models/work_package/pdf_export/markdown.rb @@ -105,12 +105,22 @@ def write_markdown!(work_package, markdown) private + def attachment_image_local_file(attachment) + attachment.file.local_file + rescue StandardError => e + Rails.logger.error "Failed to access attachment #{attachment.id} file: #{e}" + nil # return nil as if the id was wrong and the attachment obj has not been found + end + def attachment_image_filepath(work_package, src) # images are embedded into markup with the api-path as img.src attachment = attachment_by_api_content_src(work_package, src) - return nil if attachment.nil? || attachment.file.local_file.nil? || !pdf_embeddable?(attachment.content_type) + return nil if attachment.nil? || !pdf_embeddable?(attachment.content_type) + + local_file = attachment_image_local_file(attachment) + return nil if local_file.nil? - resize_image(attachment.file.local_file.path) + resize_image(local_file.path) end def attachment_by_api_content_src(work_package, src) diff --git a/app/models/work_package/progress_hint.rb b/app/models/work_package/progress_hint.rb new file mode 100644 index 000000000000..9fa24566b3fc --- /dev/null +++ b/app/models/work_package/progress_hint.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +# Hint to be displayed in the progress popover under a progress value. +# +# `key` is like `field_name`.`hint` and is used to build up the translation +# key. `params` is the translation parameters as some translation are +# parameterized. +class WorkPackage + ProgressHint = Data.define(:key, :params) do + def initialize(key:, params: {}) + super + end + + def message + I18n.t("work_package.progress.derivation_hints.#{key}", **to_hours(params)) + end + + def reason + key.split(".", 2).last + end + + def to_hours(params) + params.transform_values { |value| DurationConverter.output(value.abs) } + end + end +end 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/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..3293be1010cf 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 @@ -149,8 +157,8 @@ def percent_complete_not_provided_by_user? private - def set_hint(field, hint) - work_package.derived_progress_hints[field] = hint + def set_hint(field, hint, **params) + work_package.set_derived_progress_hint(field, hint, **params) end def round_progress_values 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..fe27c92603d5 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 @@ -100,9 +100,9 @@ def update_remaining_work elsif work_changed? && work_set? && remaining_work_set? && percent_complete_not_provided_by_user? delta = work - work_was if delta.positive? - set_hint(:remaining_hours, :increased_like_work) + set_hint(:remaining_hours, :increased_by_delta_like_work, delta:) elsif delta.negative? - set_hint(:remaining_hours, :decreased_like_work) + set_hint(:remaining_hours, :decreased_by_delta_like_work, delta:) end self.remaining_work = (remaining_work + delta).clamp(0.0, work) elsif work_empty? @@ -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/app/views/account/_auth_providers.html.erb b/app/views/account/_auth_providers.html.erb index a828b896617b..f399507f0332 100644 --- a/app/views/account/_auth_providers.html.erb +++ b/app/views/account/_auth_providers.html.erb @@ -26,7 +26,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. See COPYRIGHT and LICENSE files for more details. ++#%> - <% # Remove this ugly hack when creating an authentication plugin. # @@ -44,9 +43,11 @@ wclass = local_assigns[:wide] ? 'wide' : '' <% if auth_provider_html.strip != '' %>
<% unless no_pwd %> -

+ + +

<% end %>
<%= auth_provider_html %> diff --git a/app/views/account/_register.html.erb b/app/views/account/_register.html.erb index d3e7176812e3..f76fc104dfa5 100644 --- a/app/views/account/_register.html.erb +++ b/app/views/account/_register.html.erb @@ -26,13 +26,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. See COPYRIGHT and LICENSE files for more details. ++#%> - - <%= render partial: 'account/footer' %> <% end %>
diff --git a/app/components/settings/project_custom_fields/project_custom_field_mapping/table_component.html.erb b/app/views/admin/custom_fields/custom_field_projects/index.html.erb similarity index 78% rename from app/components/settings/project_custom_fields/project_custom_field_mapping/table_component.html.erb rename to app/views/admin/custom_fields/custom_field_projects/index.html.erb index 3488dfd23538..d5f9e0d0ff7b 100644 --- a/app/components/settings/project_custom_fields/project_custom_field_mapping/table_component.html.erb +++ b/app/views/admin/custom_fields/custom_field_projects/index.html.erb @@ -27,6 +27,9 @@ See COPYRIGHT and LICENSE files for more details. ++#%> -<%= component_wrapper(tag: "div", data: { turbo: true }) do %> - <%= render_parent %> -<% end %> +<% html_title t(:label_administration), "#{CustomField.model_name.human} #{h @custom_field.name}", t(:label_project_plural) %> + +<%= + render(Admin::CustomFields::EditFormHeaderComponent.new(custom_field: @custom_field, + selected: :custom_field_projects)) +%> diff --git a/app/views/custom_fields/edit.html.erb b/app/views/custom_fields/edit.html.erb index ccebc45111d3..ef9cb71b6f17 100644 --- a/app/views/custom_fields/edit.html.erb +++ b/app/views/custom_fields/edit.html.erb @@ -28,15 +28,20 @@ See COPYRIGHT and LICENSE files for more details. ++#%> <% html_title t(:label_administration), "#{t(:label_edit)} #{CustomField.model_name.human} #{h @custom_field.name}" %> -<%= - render(Primer::OpenProject::PageHeader.new(test_selector: "custom-fields--page-header")) do |header| - header.with_title { @custom_field.name } - header.with_breadcrumbs([{ href: admin_index_path, text: t(:label_administration) }, - { href: custom_fields_path, text: t(:label_custom_field_plural) }, - { href: custom_fields_path(tab: @custom_field.type), text: I18n.t(@custom_field.type_name) }, - @custom_field.name]) - end -%> + +<% if OpenProject::FeatureDecisions.enable_custom_field_for_multiple_projects_active? %> + <%= render(Admin::CustomFields::EditFormHeaderComponent.new(custom_field: @custom_field, selected: :edit)) %> +<% else %> + <%= + render(Primer::OpenProject::PageHeader.new(test_selector: "custom-fields--page-header")) do |header| + header.with_title { @custom_field.name } + header.with_breadcrumbs([{ href: admin_index_path, text: t(:label_administration) }, + { href: custom_fields_path, text: t(:label_custom_field_plural) }, + { href: custom_fields_path(tab: @custom_field.type), text: I18n.t(@custom_field.type_name) }, + @custom_field.name]) + end + %> +<% end %> <%= error_messages_for 'custom_field' %> 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 %>
<%= f.text_field :mail, required: true, container_class: '-middle', disabled: login_via_ldap %> - <% if login_via_ldap %> + <% if login_via_provider %> + <%= t('user.text_change_disabled_for_provider_login') %> + <% elsif login_via_ldap %> <%= t('user.text_change_disabled_for_ldap_login') %> <% end %>
diff --git a/app/views/wiki/diff.html.erb b/app/views/wiki/diff.html.erb index 934f6af2725d..a15ab391feda 100644 --- a/app/views/wiki/diff.html.erb +++ b/app/views/wiki/diff.html.erb @@ -44,5 +44,5 @@ See COPYRIGHT and LICENSE files for more details. (<%= @diff.content_to.user ? link_to_user(@diff.content_to.user) : t(:label_user_anonymous) %>, <%= format_time(@diff.content_to.created_at) %>)

- <%= nl2br @html_diff %> + <%= @html_diff.html_safe %>
diff --git a/app/workers/rake_job.rb b/app/workers/rake_job.rb index ef2414614305..1c7525ae98bd 100644 --- a/app/workers/rake_job.rb +++ b/app/workers/rake_job.rb @@ -28,7 +28,7 @@ require "rake" ## -# Invoke a rake task while safely loading the tasks only once +# Invoke a rake task while loading the tasks on demand # to ensure they are only loaded once. module RakeJob attr_reader :task_name, :args @@ -44,29 +44,26 @@ def perform(task_name, *args) protected def invoke - load_tasks! - task.invoke *args - ensure - task&.reenable + if (task = load_task) + task.reenable + task.invoke *args + else + OpenProject.logger.error { "Rake task #{task_name} not found for background job." } + end end ## - # Load tasks if there are none. This should only be run once in an environment - def load_tasks! - Rails.application.load_rake_tasks unless tasks_loaded? - end + # Load tasks if we don't find our task + def load_task + Rails.application.load_rake_tasks unless task_loaded? - ## - # Reference to the task name. - # Will raise NameError or NoMethodError depending on what of rake is (not) loaded - def task - Rake::Task[task_name] + task_loaded? && Rake::Task[task_name] end ## # Returns whether any task is loaded # Will raise NameError or NoMethodError depending on what of rake is (not) loaded - def tasks_loaded? - !Rake::Task.tasks.empty? + def task_loaded? + Rake::Task.task_defined?(task_name) end end diff --git a/config/initializers/feature_decisions.rb b/config/initializers/feature_decisions.rb index 373a37fbb91d..dea98a89d888 100644 --- a/config/initializers/feature_decisions.rb +++ b/config/initializers/feature_decisions.rb @@ -46,3 +46,7 @@ OpenProject::FeatureDecisions.add :meeting_updated_notification, description: "Allow flash messages to notify users about concurrent meeting edits. " \ "See work package #54744 for more details." + +OpenProject::FeatureDecisions.add :enable_custom_field_for_multiple_projects, + description: "Allow a custom field to be enabled for multiple projects at once. " \ + "See work package #56909 for more details." diff --git a/config/initializers/permissions.rb b/config/initializers/permissions.rb index 3cbf2786414c..d0ea7360287d 100644 --- a/config/initializers/permissions.rb +++ b/config/initializers/permissions.rb @@ -49,7 +49,7 @@ }, permissible_on: :global, require: :loggedin, - enabled: -> { OpenProject::Configuration.backup_enabled? } + visible: -> { OpenProject::Configuration.backup_enabled? } map.permission :create_user, { diff --git a/config/locales/crowdin/af.yml b/config/locales/crowdin/af.yml index 7bce04a742ea..4fa1b38c7b52 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: @@ -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: @@ -1100,7 +1102,7 @@ af: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "kleinletter (bv. 'a')" uppercase: "grootletter (bv. 'A')" numeric: "numeries (bv. ' 1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..3addd152b6d2 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: @@ -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: @@ -1128,7 +1130,7 @@ ar: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "يجب أن تحتوي على أحرف الفئات التالية (على الأقل %{min_count} %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "أحرف صغيرة (مثل 'a')" uppercase: "أحرف كبيرة (على سبيل المثال، 'A')" numeric: "رقمية (على سبيل المثال، '1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..43ea18c522c6 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: @@ -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: @@ -1100,7 +1102,7 @@ az: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "lowercase (e.g. 'a')" uppercase: "uppercase (e.g. 'A')" numeric: "numeric (e.g. '1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..08ba35878851 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: @@ -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: @@ -1114,7 +1116,7 @@ be: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "lowercase (e.g. 'a')" uppercase: "uppercase (e.g. 'A')" numeric: "numeric (e.g. '1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..1e6dc167c245 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: @@ -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: @@ -1100,7 +1102,7 @@ bg: confirmation: "Потвърждението на паролата не съвпада с паролата." format: "%{message}" password: - weak: "Трябва да съдържа знаци от следните класове (най-малко %{min_count} на %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "малки букви (например \"а\")" uppercase: "главни (например \"А\")" numeric: "цифрова (например ' 1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..1a17cde39697 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: @@ -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: @@ -1096,7 +1098,7 @@ ca: confirmation: "La confirmació de la contrasenya no coincideix." format: "%{message}" password: - weak: "Ha de contenir caràcters de les següents classes (com a mínim %{min_count} de %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "minúscules (ex. \"a\")" uppercase: "majúscules (p. ex. ' A')" numeric: "numèric (p. ex. \"1\")" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..61a2347722a6 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: @@ -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: @@ -1100,7 +1102,7 @@ ckb-IR: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "lowercase (e.g. 'a')" uppercase: "uppercase (e.g. 'A')" numeric: "numeric (e.g. '1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..bb8208792d64 100644 --- a/config/locales/crowdin/cs.yml +++ b/config/locales/crowdin/cs.yml @@ -265,15 +265,15 @@ cs: no_results_title_text: V současné době nejsou žádné projekty no_results_content_text: Vytvořit nový projekt search: - label: Project name filter - placeholder: Search by project name + label: Filtr názvu projektu + placeholder: Hledat podle názvu projektu lists: active: "Aktivní projekty" my: "Moje projekty" 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: @@ -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: @@ -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: @@ -638,7 +638,7 @@ cs: possible_values: "Možné hodnoty" regexp: "Regulární výraz" searchable: "Vyhledávatelné" - admin_only: "Admin-only" + admin_only: "Pouze pro správce" custom_value: value: "Hodnota" doorkeeper/application: @@ -708,7 +708,7 @@ cs: versions: "Verze" work_packages: "Pracovní balíčky" project_custom_field: - is_required: "Required for all projects" + is_required: "Vyžadováno pro všechny projekty" custom_field_section: Sekce query: column_names: "Sloupce" @@ -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" @@ -1021,7 +1021,7 @@ cs: status: attributes: default_done_ratio: - inclusion: "must be between 0 and 100." + inclusion: "musí být mezi 0 a 100." readonly_default_exlusive: "nelze aktivovat pro stavy, které jsou označeny jako výchozí." time_entry: attributes: @@ -1054,11 +1054,11 @@ 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." - inclusion: "must be between 0 and 100." + does_not_match_work_and_remaining_work: "does not match Work and Remaining work" + cannot_be_set_when_work_is_zero: "nelze nastavit, když je práce 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: "musí být mezi 0 a 100." due_date: not_start_date: "není v počátečním datu, i když je to nutné pro milníky." cannot_be_null: "nelze nastavit na null, protože datum zahájení a trvání je známo " @@ -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: @@ -1114,7 +1116,7 @@ cs: confirmation: "Hesla se neshodují!" format: "%{message}" password: - weak: "Musí obsahovat znaky z následujících tříd (alespoň %{min_count} z %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "malá písmena (například 'a')" uppercase: "velká písmena (například ' A')" numeric: "číselné (např. 1)" @@ -1416,7 +1418,7 @@ cs: button_view_shared_work_packages: "Zobrazit všechny sdílené pracovní balíčky" button_manage_roles: "Správa rolí" button_remove_member: "Odebrat člena" - button_remove_member_and_shares: "Remove member and shares" + button_remove_member_and_shares: "Odstranění člena a sdílení" button_revoke_work_package_shares: "Zrušit sdílení pracovních balíčků" button_revoke_access: "Odebrat přístup" button_revoke_all: "Zrušit vše" @@ -1675,7 +1677,7 @@ cs: error_pdf_failed_to_export: "PDF export nelze uložit: %{error}" error_token_authenticity: "Nelze ověřit token Cross-Site Request Forgy. Pokusili jste se odeslat data na více prohlížečích nebo kartách? Prosím zavřete všechny panely a zkuste to znovu." error_work_package_not_found_in_project: "Pracovný balíček nebyl nalezen, nebo nepatří k tomuto projektu" - error_work_package_id_not_found: "The work package was not found." + error_work_package_id_not_found: "Pracovní balíček nebyl nalezen." error_must_be_project_member: "musí být členem projektu" error_migrations_are_pending: "Vaše instalace OpenProject čeká na migraci databáze. Pravděpodobně jste při poslední aktualizaci zmeškali migrace. Pro správnou aktualizaci vaší instalace prosím zkontrolujte průvodce aktualizací." error_migrations_visit_upgrade_guides: "Navštivte prosím naši dokumentaci průvodce aktualizací" @@ -1721,7 +1723,7 @@ cs: title: "Export" submit: "Export" format: - label: "File format" + label: "Formát souboru" options: csv: label: "CSV" @@ -1730,42 +1732,42 @@ cs: xls: label: "XLS" columns: - input_label_report: "Add columns to attribute table" + input_label_report: "Přidat sloupce do tabulky atributů" 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." 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: - narrow: "Narrow" - medium: "Medium" - wide: "Wide" - very_wide: "Very wide" + narrow: "Úzký" + medium: "Střední" + wide: "Široký" + very_wide: "Velmi široký" paper_size: - label: "Paper size" + label: "Velikost papíru" caption: "Depending on the chart size more than one page might be exported." long_text_fields: input_caption: "By default all long text fields are selected." @@ -1774,10 +1776,10 @@ cs: drag_area_label: "Manage long text fields" xls: include_relations: - label: "Include relations" + label: "Zahrnout vztahy" caption: "This option will create a duplicate of each work package for every relation this has with another work package." include_descriptions: - label: "Include descriptions" + label: "Zahrnout popisy" caption: "This option will add a description column in raw format." your_work_packages_export: "Work packages are being exported" succeeded: "Export completed" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..7840a87e9f2a 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: @@ -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: @@ -1098,7 +1100,7 @@ da: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Skal indeholde tegn fra følgende klasser (minimum %{min_count} af %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "små bogstaver (f.eks. \"a\")" uppercase: "store bogstaver (f.eks. \"A\")" numeric: "tal (fx \"1\")" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..a83659171116 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: @@ -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: @@ -1094,7 +1096,7 @@ de: confirmation: "Passwort und Bestätigung stimmt nicht überein." format: "%{message}" password: - weak: "Muss Zeichen aus folgenden Klassen beinhalten (mindestens %{min_count} von %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "Kleinbuchstaben (z.B. 'a')" uppercase: "Großbuchstaben (z.B. 'A')" numeric: "Ziffern (z.B. '1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..dc59e3e39e01 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: @@ -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: @@ -1096,7 +1098,7 @@ el: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Πρέπει να περιέχει χαρακτήρες από τις ακόλουθες κλάσεις (τουλάχιστον %{min_count} από %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "πεζά γράμματα (π.χ. 'α')" uppercase: "κεφαλαία γράμματα (π.χ. 'Α')" numeric: "αριθμητικό (π.χ. '1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..3882769d2ec3 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: @@ -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: @@ -1100,7 +1102,7 @@ eo: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "minuskle (Ekz. 'a')" uppercase: "majuskle (Ekz. 'A')" numeric: "nombra (ekz. '1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..c4d7325e373a 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: @@ -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: @@ -1097,7 +1099,7 @@ es: confirmation: "La confirmación de contraseña no coincide con la contraseña." format: "%{message}" password: - weak: "Debe contener caracteres de las siguientes tipos (como mínimo %{min_count} de %{all_count}):%{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "en minúsculas (por ejemplo 'a')" uppercase: "en mayúsculas (por ejemplo ' A')" numeric: "numérico (por ejemplo, ' 1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..3482bd6ae703 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: @@ -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: @@ -1100,7 +1102,7 @@ et: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "väiketäht (näiteks \"a\")" uppercase: "suurtäht (näiteks 'A')" numeric: "arvuline (nt 1, 2, 3)" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..2e54ec4710ba 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: @@ -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: @@ -1100,7 +1102,7 @@ eu: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "lowercase (e.g. 'a')" uppercase: "uppercase (e.g. 'A')" numeric: "numeric (e.g. '1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..991a7f7805b4 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: @@ -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: @@ -1100,7 +1102,7 @@ fa: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "بايد كاراكترهايي از اين گروهها داشته باشد: حداقل %{min_count} كاراكتر %{all_count}: %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "حروف كوچك" uppercase: "حروف بزرگ" numeric: "عدد" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..06c85e417303 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: @@ -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: @@ -1100,7 +1102,7 @@ fi: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "On sisällettävä merkkejä seuraavista luokista (ainakin %{min_count} %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "pieniä kirjaimia (esim. \"a\")" uppercase: "isoja kirjaimia (esim. A)" numeric: "numeerinen (esim. 1)" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..6d22a2cee4c0 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: @@ -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: @@ -1100,7 +1102,7 @@ fil: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Dapat naglalaman ng mga karakter sa mga sumusunod na klase (kahit na %{min_count} sa %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "lowercase (e.g. 'a')" uppercase: "uppercase (e.g 'A')" numeric: "numeric (e.g.'1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..657b63c5690e 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: "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: "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,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: "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: "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: "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: >- + 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: >- + 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: @@ -1099,7 +1101,7 @@ fr: confirmation: "La confirmation du mot de passe ne correspond pas au mot de passe." format: "%{message}" password: - weak: "Doit contenir des caractères des classes suivantes (au moins %{min_count} sur %{all_count}) : %{rules}." + weak: "Doit contenir des caractères des classes suivantes (au moins %{min_count} sur %{all_count}) : %{rules}" lowercase: "minuscules (par exemple, « a »)" uppercase: "majuscule (e.g. « A »)" numeric: "numérique (e.g. « 1 »)" @@ -1647,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" @@ -1659,18 +1661,18 @@ fr: 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: "Ajouter des colonnes à la table d'attributs" + input_caption_report: "Par défaut, tous les attributs ajoutés en tant que colonnes dans la liste des lots de travaux sont sélectionnés. Les champs de type texte long ne sont pas disponibles dans la table des attributs, mais peuvent être affichés en dessous." + input_caption_table: "Par défaut, tous les attributs ajoutés en tant que colonnes dans la liste des lots de travaux sont sélectionnés. Les champs de type texte long ne sont pas disponibles dans les exports basés sur la table." pdf: export_type: - label: "PDF export type" + label: "Type d'export PDF" options: table: label: "Table" - caption: "Export the work packages list in a table with the desired columns." + caption: "Exporter la liste des lots de travaux dans une table avec les colonnes souhaitées." report: - label: "Report" + label: "Rapport" caption: "Export the work package on a detailed report of all work packages in the list." gantt: label: "Gantt chart" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..c12b497030ab 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: @@ -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: @@ -1114,7 +1116,7 @@ he: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "אותיות קטנות (למשל 'a')" uppercase: "אותיות רישיות (למשל ' A')" numeric: "מספריים (למשל ' 1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..2aea27ce64c9 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: @@ -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: @@ -1098,7 +1100,7 @@ hi: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "लोअरकेस (उदा. ' a ')" uppercase: "अपरकेस (उदा. ' A ')" numeric: "सांख्यिक (उदा. ' 1 ')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..4a31e916ef7c 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: @@ -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: @@ -1107,7 +1109,7 @@ hr: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Mora sadržavati znakove sljedećih klasa (najamanje %{min_count} od %{all_count}: %{rules})." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "mala slova (npr. 'a')" uppercase: "velika slova (npr. ' A')" numeric: "numerički (npr. ' 1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..833d423d3a4f 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: @@ -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: @@ -1097,7 +1099,7 @@ hu: confirmation: "A két jelszó nem egyezik!" format: "%{message}\n" password: - weak: "Az alábbi karakter típusokból tartalmaznia kell karaktert (legalább %{min_count} a %{all_count} típusból): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "Kisbetű (pl. 'a')" uppercase: "Nagybetű (pl. 'A')" numeric: "Szám (pl. '1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..8b9cd6fd903b 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: @@ -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: @@ -1086,7 +1088,7 @@ id: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "huruf kecil (spt. 'a')" uppercase: "huruf besar (spt. 'A')" numeric: "numerik (spt. ' 1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..29ab60b80c1f 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: @@ -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: @@ -1097,7 +1099,7 @@ it: confirmation: "Le password non corrispondono." format: "%{message}" password: - weak: "Deve contenere caratteri delle seguenti classi (almeno %{min_count} di %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "minuscolo (es. 'a')" uppercase: "maiuscolo (es. 'A')" numeric: "numerico (es. '1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..15bb044cd0d3 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: @@ -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: @@ -1089,7 +1091,7 @@ ja: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "次の文字の種類が含まれるようにしてください (%{all_count} つのうちに %{min_count} つ以上):%{rules}。" + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "アルファベット小文字 (例: 'a')" uppercase: "アルファベット大文字 (例: ' A')" numeric: "数値 (例: '1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..b0558273e01b 100644 --- a/config/locales/crowdin/js-af.yml +++ b/config/locales/crowdin/js-af.yml @@ -74,7 +74,7 @@ af: button_copy: "Kopieer" button_copy_to_clipboard: "Copy to clipboard" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Pasgemaakte velde" button_delete: "Skrap" button_delete_watcher: "Delete watcher" @@ -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..cae75bd68323 100644 --- a/config/locales/crowdin/js-ar.yml +++ b/config/locales/crowdin/js-ar.yml @@ -74,7 +74,7 @@ ar: button_copy: "انسخ" button_copy_to_clipboard: "نسخ إلى الحافظة" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "الحقول المخصصة" button_delete: "احذف" button_delete_watcher: "احذف المراقب" @@ -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..1f2507b3d90e 100644 --- a/config/locales/crowdin/js-az.yml +++ b/config/locales/crowdin/js-az.yml @@ -74,7 +74,7 @@ az: button_copy: "Kopyala" button_copy_to_clipboard: "Copy to clipboard" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Özəl sahələr" button_delete: "Sil" button_delete_watcher: "İzləyicini sil" @@ -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..7e9c7cf71cb0 100644 --- a/config/locales/crowdin/js-be.yml +++ b/config/locales/crowdin/js-be.yml @@ -74,7 +74,7 @@ be: button_copy: "Скапіраваць" button_copy_to_clipboard: "Copy to clipboard" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Карыстальніцкія палі" button_delete: "Выдаліць" button_delete_watcher: "Delete watcher" @@ -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..01c6704024be 100644 --- a/config/locales/crowdin/js-bg.yml +++ b/config/locales/crowdin/js-bg.yml @@ -74,7 +74,7 @@ bg: button_copy: "Копиране" button_copy_to_clipboard: "Копирай в буфер" button_copy_link_to_clipboard: "Копиране на връзката в клипборда" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "допълнителни полета" button_delete: "Изтрий" button_delete_watcher: "Премахни наблюдаващ" @@ -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..b87bc26eaa28 100644 --- a/config/locales/crowdin/js-ca.yml +++ b/config/locales/crowdin/js-ca.yml @@ -74,7 +74,7 @@ ca: button_copy: "Copiar" button_copy_to_clipboard: "Copiar al porta-retalls" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Camps personalitzats" button_delete: "Esborrar" button_delete_watcher: "Eliminar l'observador" @@ -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..3aa08e25105a 100644 --- a/config/locales/crowdin/js-ckb-IR.yml +++ b/config/locales/crowdin/js-ckb-IR.yml @@ -74,7 +74,7 @@ ckb-IR: button_copy: "Copy" button_copy_to_clipboard: "Copy to clipboard" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Custom fields" button_delete: "Delete" button_delete_watcher: "Delete watcher" @@ -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..3434e06ccb00 100644 --- a/config/locales/crowdin/js-cs.yml +++ b/config/locales/crowdin/js-cs.yml @@ -74,7 +74,7 @@ cs: button_copy: "Kopírovat" button_copy_to_clipboard: "Kopírovat do schránky" button_copy_link_to_clipboard: "Kopírovat odkaz do schránky" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Vlastní pole" button_delete: "Odstranit" button_delete_watcher: "Smazat sledujícího uživatele" @@ -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..a415c62c90bc 100644 --- a/config/locales/crowdin/js-da.yml +++ b/config/locales/crowdin/js-da.yml @@ -74,7 +74,7 @@ da: button_copy: "Kopier" button_copy_to_clipboard: "Kopiér til Udklipsholder" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Selvvalgte felter" button_delete: "Slet" button_delete_watcher: "Slet tilsynsførende" @@ -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..e37c3e62cfd0 100644 --- a/config/locales/crowdin/js-de.yml +++ b/config/locales/crowdin/js-de.yml @@ -74,7 +74,7 @@ de: button_copy: "Kopieren" button_copy_to_clipboard: "In Zwischenablage kopieren" button_copy_link_to_clipboard: "Link in Zwischenablage kopieren" - button_copy_to_other_project: "In ein anderes Projekt duplizieren" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Benutzerdefinierte Felder" button_delete: "Löschen" button_delete_watcher: "Beobachter löschen" @@ -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..d45ba9c38367 100644 --- a/config/locales/crowdin/js-el.yml +++ b/config/locales/crowdin/js-el.yml @@ -74,7 +74,7 @@ el: button_copy: "Αντιγραφή" button_copy_to_clipboard: "Αντιγραφή στο πρόχειρο" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Προσαρμοσμένα πεδία" button_delete: "Διαγραφή" button_delete_watcher: "Διαγραφή παρατηρητή" @@ -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..0f82db3db1ca 100644 --- a/config/locales/crowdin/js-eo.yml +++ b/config/locales/crowdin/js-eo.yml @@ -74,7 +74,7 @@ eo: button_copy: "Kopii" button_copy_to_clipboard: "Kopii al la tondujo" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Propraj kampoj" button_delete: "Forigi" button_delete_watcher: "Forigi observantojn" @@ -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..9d316e5e292f 100644 --- a/config/locales/crowdin/js-es.yml +++ b/config/locales/crowdin/js-es.yml @@ -74,7 +74,7 @@ es: button_copy: "Copiar" button_copy_to_clipboard: "Copiar en el portapapeles" button_copy_link_to_clipboard: "Copiar enlace al portapapeles" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Campos personalizados" button_delete: "Eliminar" button_delete_watcher: "Eliminar observador" @@ -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..d4be03244419 100644 --- a/config/locales/crowdin/js-et.yml +++ b/config/locales/crowdin/js-et.yml @@ -74,7 +74,7 @@ et: button_copy: "Kopeeri" button_copy_to_clipboard: "Copy to clipboard" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Lisaväljad" button_delete: "Kustuta" button_delete_watcher: "Kustuta jäligja" @@ -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..ba9ffff6d86e 100644 --- a/config/locales/crowdin/js-eu.yml +++ b/config/locales/crowdin/js-eu.yml @@ -74,7 +74,7 @@ eu: button_copy: "Copy" button_copy_to_clipboard: "Copy to clipboard" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Custom fields" button_delete: "Delete" button_delete_watcher: "Delete watcher" @@ -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..0e6bb27f792d 100644 --- a/config/locales/crowdin/js-fa.yml +++ b/config/locales/crowdin/js-fa.yml @@ -74,7 +74,7 @@ fa: button_copy: "کپی" button_copy_to_clipboard: "Copy to clipboard" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Custom fields" button_delete: "حذف" button_delete_watcher: "حذف ناظر" @@ -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..909937d58226 100644 --- a/config/locales/crowdin/js-fi.yml +++ b/config/locales/crowdin/js-fi.yml @@ -74,7 +74,7 @@ fi: button_copy: "Kopioi" button_copy_to_clipboard: "Kopioi leikepöydälle" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Mukautetut kentät" button_delete: "Poista" button_delete_watcher: "Poista seuraaja" @@ -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..6cfad7d0f0be 100644 --- a/config/locales/crowdin/js-fil.yml +++ b/config/locales/crowdin/js-fil.yml @@ -74,7 +74,7 @@ fil: button_copy: "Kopyahin" button_copy_to_clipboard: "Kopyahin sa clipboard" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Mga pasadyang patlang" button_delete: "Burahin" button_delete_watcher: "Burahin ang manunuod" @@ -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..0f31195e92dd 100644 --- a/config/locales/crowdin/js-fr.yml +++ b/config/locales/crowdin/js-fr.yml @@ -74,7 +74,7 @@ fr: button_copy: "Copier" button_copy_to_clipboard: "Copier dans le presse-papier" button_copy_link_to_clipboard: "Copier le lien dans le presse-papiers" - button_copy_to_other_project: "Dupliquer dans un autre projet" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Champs personnalisés" button_delete: "Supprimer" button_delete_watcher: "Supprimer observateur" @@ -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: "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}" @@ -186,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" @@ -228,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é" @@ -248,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" @@ -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_html: >- + warning_progress_calculation_mode_change_from_status_to_field_pre_14_4_without_percent_complete_edition_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é. + 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 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: @@ -291,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." @@ -342,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." @@ -375,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" @@ -393,12 +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_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" @@ -407,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" @@ -514,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}" @@ -539,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" @@ -1182,6 +1187,9 @@ fr: one: "1 jour" other: "%{count} jours" zero: "0 jour" + word: + one: "1 word" + 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-he.yml b/config/locales/crowdin/js-he.yml index 6d1dc6089e38..3c1b454361ab 100644 --- a/config/locales/crowdin/js-he.yml +++ b/config/locales/crowdin/js-he.yml @@ -74,7 +74,7 @@ he: button_copy: "העתק" button_copy_to_clipboard: "Copy to clipboard" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "שדות מותאמים אישית" button_delete: "מחק" button_delete_watcher: "הסרת צופה" @@ -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..792635d48309 100644 --- a/config/locales/crowdin/js-hi.yml +++ b/config/locales/crowdin/js-hi.yml @@ -74,7 +74,7 @@ hi: button_copy: "प्रतिलिपि बनाएँ" button_copy_to_clipboard: "Copy to clipboard" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Custom fields" button_delete: "मिटाएँ" button_delete_watcher: "द्रष्टा हटाएँ" @@ -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..ae68f726e071 100644 --- a/config/locales/crowdin/js-hr.yml +++ b/config/locales/crowdin/js-hr.yml @@ -74,7 +74,7 @@ hr: button_copy: "Kopiraj" button_copy_to_clipboard: "Kopiraj u međuspremnik" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Prilagođena polja" button_delete: "Obriši" button_delete_watcher: "Izbrišite nadglednika" @@ -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..11b314eb26be 100644 --- a/config/locales/crowdin/js-hu.yml +++ b/config/locales/crowdin/js-hu.yml @@ -74,7 +74,7 @@ hu: button_copy: "Másol" button_copy_to_clipboard: "Másolás a vágólapra" button_copy_link_to_clipboard: "Hivatkozás másolása a vágólapra" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Választható mezők" button_delete: "Törlés" button_delete_watcher: "Megfigyelő törlése" @@ -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..04591e52ca90 100644 --- a/config/locales/crowdin/js-id.yml +++ b/config/locales/crowdin/js-id.yml @@ -74,7 +74,7 @@ id: button_copy: "Salin" button_copy_to_clipboard: "Copy to clipboard" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Isian kustom" button_delete: "Hapus" button_delete_watcher: "Hapus pemantau" @@ -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..e253e6adc554 100644 --- a/config/locales/crowdin/js-it.yml +++ b/config/locales/crowdin/js-it.yml @@ -74,7 +74,7 @@ it: button_copy: "Copia" button_copy_to_clipboard: "Copia negli appunti" button_copy_link_to_clipboard: "Copia link negli appunti" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Campo personalizzato" button_delete: "Cancella" button_delete_watcher: "Elimina osservatore" @@ -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..dc9197a39faa 100644 --- a/config/locales/crowdin/js-ja.yml +++ b/config/locales/crowdin/js-ja.yml @@ -75,7 +75,7 @@ ja: button_copy: "コピー" button_copy_to_clipboard: "クリップボードにコピー" button_copy_link_to_clipboard: "クリップボードにリンクをコピー" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "カスタムフィールド" button_delete: "削除" button_delete_watcher: "ウォッチャーを削除" @@ -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..ea8d9cbca838 100644 --- a/config/locales/crowdin/js-ka.yml +++ b/config/locales/crowdin/js-ka.yml @@ -74,7 +74,7 @@ ka: button_copy: "კოპირება" button_copy_to_clipboard: "Copy to clipboard" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "მორგებადი ველები" button_delete: "წაშლა" button_delete_watcher: "Delete watcher" @@ -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..4e846d1e4603 100644 --- a/config/locales/crowdin/js-kk.yml +++ b/config/locales/crowdin/js-kk.yml @@ -74,7 +74,7 @@ kk: button_copy: "Copy" button_copy_to_clipboard: "Copy to clipboard" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Custom fields" button_delete: "Delete" button_delete_watcher: "Delete watcher" @@ -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..7dda4c7b45bf 100644 --- a/config/locales/crowdin/js-ko.yml +++ b/config/locales/crowdin/js-ko.yml @@ -74,7 +74,7 @@ ko: button_copy: "복사" button_copy_to_clipboard: "클립보드 복사" button_copy_link_to_clipboard: "클립보드에 링크 복사" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "사용자 정의 필드" button_delete: "삭제" button_delete_watcher: "주시자 삭제" @@ -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..79caaff89f8e 100644 --- a/config/locales/crowdin/js-lt.yml +++ b/config/locales/crowdin/js-lt.yml @@ -74,7 +74,7 @@ lt: button_copy: "Kopijuoti" button_copy_to_clipboard: "Kopijuoti į iškarpinę" button_copy_link_to_clipboard: "Kopijuoti nuorodą į iškarpinę" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Pritaikyti laukai" button_delete: "Trinti" button_delete_watcher: "Trinti stebėtoją" @@ -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..2bf37855ecc0 100644 --- a/config/locales/crowdin/js-lv.yml +++ b/config/locales/crowdin/js-lv.yml @@ -74,7 +74,7 @@ lv: button_copy: "Copy" button_copy_to_clipboard: "Kopēt uz starpliktuvi" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Pielāgotie lauki" button_delete: "Dzēst" button_delete_watcher: "Dzēst vērotāju" @@ -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..c5b8bb4e39f0 100644 --- a/config/locales/crowdin/js-mn.yml +++ b/config/locales/crowdin/js-mn.yml @@ -74,7 +74,7 @@ mn: button_copy: "Copy" button_copy_to_clipboard: "Copy to clipboard" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Custom fields" button_delete: "Delete" button_delete_watcher: "Delete watcher" @@ -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..4d87ce832aab 100644 --- a/config/locales/crowdin/js-ms.yml +++ b/config/locales/crowdin/js-ms.yml @@ -74,7 +74,7 @@ ms: button_copy: "Salin" button_copy_to_clipboard: "Salin ke papan klip" button_copy_link_to_clipboard: "Salin pautan ke papan klip" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Ruang tersuai" button_delete: "Padam" button_delete_watcher: "Padam pemerhati" @@ -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..5251cec69199 100644 --- a/config/locales/crowdin/js-ne.yml +++ b/config/locales/crowdin/js-ne.yml @@ -74,7 +74,7 @@ ne: button_copy: "Copy" button_copy_to_clipboard: "Copy to clipboard" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Custom fields" button_delete: "Delete" button_delete_watcher: "वाचक हटाउनुहोस् " @@ -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..9eb3e7ba46d3 100644 --- a/config/locales/crowdin/js-nl.yml +++ b/config/locales/crowdin/js-nl.yml @@ -74,7 +74,7 @@ nl: button_copy: "Kopieer" button_copy_to_clipboard: "Kopiëren naar het klembord" button_copy_link_to_clipboard: "Link naar klembord kopiëren" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Aangepaste velden" button_delete: "Verwijderen" button_delete_watcher: "Kijkers verwijderen" @@ -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..32d1e9a59f4f 100644 --- a/config/locales/crowdin/js-no.yml +++ b/config/locales/crowdin/js-no.yml @@ -74,7 +74,7 @@ button_copy: "Kopier" button_copy_to_clipboard: "Kopier til utklippstavlen" button_copy_link_to_clipboard: "Kopier lenke til utklippstavlen" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Egendefinerte felter" button_delete: "Slett" button_delete_watcher: "Slett overvåker" @@ -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..804005656c99 100644 --- a/config/locales/crowdin/js-pl.yml +++ b/config/locales/crowdin/js-pl.yml @@ -74,7 +74,7 @@ pl: button_copy: "Kopiuj" button_copy_to_clipboard: "Skopiuj do schowka" button_copy_link_to_clipboard: "Kopiuj link do schowka" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Pola niestandardowe" button_delete: "Usuń" button_delete_watcher: "Usuń obserwatora" @@ -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..4b12d4b3e73c 100644 --- a/config/locales/crowdin/js-pt-BR.yml +++ b/config/locales/crowdin/js-pt-BR.yml @@ -74,7 +74,7 @@ pt-BR: button_copy: "Copiar" button_copy_to_clipboard: "Copiar para a área de transferência" button_copy_link_to_clipboard: "Copiar link para área de transferência" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Campos personalizados" button_delete: "Excluir" button_delete_watcher: "Excluir observador" @@ -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: @@ -356,7 +360,7 @@ pt-BR: "14_4": standard: new_features_html: > - The release contains various new features and improvements, such as:
+ A versão contém vários novos recursos e aprimoramentos, como:
ical_sharing_modal: title: "Assinar calendário" inital_setup_error_message: "Ocorreu um erro ao buscar dados." @@ -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..49ef53bc70e2 100644 --- a/config/locales/crowdin/js-pt-PT.yml +++ b/config/locales/crowdin/js-pt-PT.yml @@ -74,7 +74,7 @@ pt-PT: button_copy: "Copiar" button_copy_to_clipboard: "Copiar para a Área de transferência" button_copy_link_to_clipboard: "Copiar link para a área de transferência" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Campos personalizados" button_delete: "Eliminar" button_delete_watcher: "Eliminar observador" @@ -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..5c6904dbd5f4 100644 --- a/config/locales/crowdin/js-ro.yml +++ b/config/locales/crowdin/js-ro.yml @@ -41,8 +41,8 @@ ro: autocomplete_select: placeholder: multi: 'Adaugă ”%{name}”' - single: 'Selectaţi "%{name}"' - remove: "Elminaţi \"%{name}\"" + single: 'Selectează "%{name}"' + remove: "Elimină ”%{name}”" active: "Activ %{label} %{name}" backup: attachments_disabled: Atașamentele nu pot fi incluse deoarece depășesc dimensiunea maximă permisă. Puteți schimba acest lucru prin configurare (necesită o repornire a serverului). @@ -55,33 +55,33 @@ ro: title: Backup OpenProject options: Opțiuni include_attachments: Include atașamente - download_backup: Descarcă un backup + download_backup: Descarcă backup request_backup: Solicită backup close_popup_title: "Închidere pop-up" close_filter_title: "Închide filtrul" close_form_title: "Închide formularul" - button_add_watcher: "Adăugare observator" - button_add: "Adăugare" + button_add_watcher: "Adaugă observator" + button_add: "Adaugă" button_back: "Înapoi" button_back_to_list_view: "Înapoi la listă" - button_cancel: "Anulare" + button_cancel: "Anulează" button_close: "Închide" button_change_project: "Move to another project" button_check_all: "Selectează tot" button_configure-form: "Configurați formularul" button_confirm: "Confirmă" - button_continue: "Continuaţi" + button_continue: "Continuă" button_copy: "Copiază" button_copy_to_clipboard: "Copiză în clipboard" button_copy_link_to_clipboard: "Copiază link-ul în clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Câmpuri personalizate" button_delete: "Șterge" button_delete_watcher: "Șterge observator" button_details_view: "Vizualizare detaliată" - button_duplicate: "Duplicare" - button_edit: "Editare" - button_filter: "Filtrare" + button_duplicate: "Dublează" + button_edit: "Editează" + button_filter: "Filtrează" button_collapse_all: "Restrângere totală" button_expand_all: "Extindere totală" button_advanced_filter: "Filtru avansat" @@ -134,10 +134,12 @@ ro: errors: could_not_load: "Datele pentru afișarea graficului nu au putut fi încărcate. Este posibil să nu aveți permisiunile necesare." description_available_columns: "Coloane disponibile" - description_current_position: "Sunteți aici: " + description_current_position: "Ești aici: " 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}" @@ -225,7 +227,7 @@ ro: email_not_received: "Nu ați primit un e-mail? Puteți retrimite e-mailul cu ajutorul linkului din dreapta." try_another_email: "Sau încercați cu o altă adresă de e-mail." next_steps: "Etapele următoare" - resend_link: "Retrimitere" + resend_link: "Retrimite" resend_success: "E-mailul a fost retrimis. Vă rugăm să vă verificați e-mailurile și să faceți clic pe link-ul de confirmare furnizat." resend_warning: "Nu s-a putut retrimite e-mailul." session_timeout: "Sesiunea dvs. a expirat. Vă rugăm să încercați să reîncărcați pagina sau să retrimiteți e-mailul." @@ -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" @@ -1284,7 +1293,7 @@ ro: selected_filter: all: "Toate Proiectele" selected: "Numai selecția" - search_placeholder: "Căutare proiect..." + search_placeholder: "Caută proiect..." include_subprojects: "Includeți toate subproiectele" tooltip: include_all_selected: "Proiectul este deja inclus, deoarece opțiunea Includeți toate subproiectele este activată." diff --git a/config/locales/crowdin/js-ru.yml b/config/locales/crowdin/js-ru.yml index 8aa9574d25b7..be5cb843143c 100644 --- a/config/locales/crowdin/js-ru.yml +++ b/config/locales/crowdin/js-ru.yml @@ -66,7 +66,7 @@ ru: button_back_to_list_view: "Вернуться к просмотру списка" button_cancel: "Отмена" button_close: "Закрыть" - button_change_project: "Move to another project" + button_change_project: "Переместить в другой проект" button_check_all: "Отметить все" button_configure-form: "Настроить форму" button_confirm: "Подтвердить" @@ -74,7 +74,7 @@ ru: button_copy: "Копировать" button_copy_to_clipboard: "Копировать в буфер обмена" button_copy_link_to_clipboard: "Копировать ссылку в буфер обмена" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Дублировать в другой проект" button_custom-fields: "Настраиваемые поля" button_delete: "Удалить" button_delete_watcher: "Удалить наблюдателя" @@ -138,6 +138,8 @@ ru: description_select_work_package: "Выберите пакет работ #%{id}" description_subwork_package: "Дочерний пакет работ #%{id}" editor: + revisions: "Показать локальные изменения" + no_revisions: "Локальные изменения не найдены" 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: >- + При изменении расчета прогресса с режима "На основе статуса" на режим "На основе трудозатрат" поле % Завершения станет нередактируемым, его значение будет получено из значений Работа и Оставшаяся работа. Существующие значения для % Завершения сохраняются. Если значения для Работа и Оставшаяся работа отсутствуют, они потребуются для изменения % Завершения. warning_progress_calculation_mode_change_from_status_to_field_html: >- - При изменении расчета прогресса с режима на основе статуса на режим на основе трудозатрат поле % Завершения станет нередактируемым, его значение будет получено из значений Работа и Оставшаяся работа. Существующие значения для % Завершения сохраняются. Если значения для Работа и Оставшаяся работа отсутствуют, они потребуются для изменения % Завершения. + При изменении расчета прогресса с режима "На основе статуса" на режим "На основе трудозатрат" поле % Завершения станет редактируемым. Если Вы дополнительно введете значения для Работы или Оставшейся работы, они также будут связаны с % Завершения. Изменение значения Оставшейся работы может привести к обновлению % Завершения. warning_progress_calculation_mode_change_from_field_to_status_html: >- При изменении расчета прогресса с режима на основе трудозатрат на режим на основе статуса все существующие значения % Завершения будут потеряны и заменены значениями, связанными с каждым статусом. Существующие значения параметра Оставшаяся работа также могут быть пересчитаны с учетом этого изменения. Это действие необратимо. custom_actions: @@ -356,7 +360,7 @@ ru: "14_4": standard: new_features_html: > - The release contains various new features and improvements, such as:
+ Выпуск содержит различные новые функции и улучшения, такие как:
ical_sharing_modal: title: "Подписаться на календарь" inital_setup_error_message: "Произошла ошибка при получении данных." @@ -397,6 +401,7 @@ ru: label_create: "Создать" label_create_work_package: "Создать новый пакет работ" label_created_by: "Автор" + label_current: "текущий" label_date: "Дата" label_date_with_format: "Введите %{date_attribute}, используя следующий формат: %{format}" label_deactivate: "Деактивировать" @@ -637,13 +642,13 @@ ru: with_current_filter: "На данный момент в этом представлении нет уведомлений" mark_all_read: "Отметить всё как прочитанное" mark_as_read: "Отметить как прочитанное" - text_update_date_by: "%{date} by" + text_update_date_by: "по %{date}" total_count_warning: "Показаны %{newest_count} самые последние уведомления. Ещё %{more_count} не отображаются." empty_state: no_notification: "Похоже, вы все сделали." no_notification_with_current_project_filter: "Похоже, в выбранном проекте вы все сделали." no_notification_with_current_filter: "Похоже, в отфильтрованном вы все сделали %{filter}." - no_notification_for_filter: "Looks like you are all caught up for this filter." + no_notification_for_filter: "Похоже, что для этого фильтра у Вас уже все готово." no_selection: "Нажмите на уведомление, чтобы просмотреть все детали." new_notifications: message: "Есть новые уведомления." @@ -1187,6 +1192,11 @@ ru: one: "1 день" other: "%{count} дней" zero: "0 дней" + word: + one: "1 word" + few: "%{count} words" + many: "%{count} words" + other: "%{count} слов" zen_mode: button_activate: "Включить полноэкранный режим" button_deactivate: "Отключить полноэкранный режим" diff --git a/config/locales/crowdin/js-rw.yml b/config/locales/crowdin/js-rw.yml index 35de85c5fe16..99269bca75a3 100644 --- a/config/locales/crowdin/js-rw.yml +++ b/config/locales/crowdin/js-rw.yml @@ -74,7 +74,7 @@ rw: button_copy: "Copy" button_copy_to_clipboard: "Copy to clipboard" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Custom fields" button_delete: "Delete" button_delete_watcher: "Delete watcher" @@ -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..04db558bbe95 100644 --- a/config/locales/crowdin/js-si.yml +++ b/config/locales/crowdin/js-si.yml @@ -74,7 +74,7 @@ si: button_copy: "පිටපත් කරන්න" button_copy_to_clipboard: "පසුරු පුවරුවට පිටපත් කරන්න" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "අභිරුචි ක්ෂේත්ර" button_delete: "මකන්න" button_delete_watcher: "මුරකරු මකන්න" @@ -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..7a6d39e28090 100644 --- a/config/locales/crowdin/js-sk.yml +++ b/config/locales/crowdin/js-sk.yml @@ -74,7 +74,7 @@ sk: button_copy: "Kopírovať" button_copy_to_clipboard: "Kopírovať do schránky" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Vlastné polia" button_delete: "Odstrániť" button_delete_watcher: "Odstrániť pozorovateľa" @@ -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..d76642c9125f 100644 --- a/config/locales/crowdin/js-sl.yml +++ b/config/locales/crowdin/js-sl.yml @@ -74,7 +74,7 @@ sl: button_copy: "Kopiraj" button_copy_to_clipboard: "Kopiraj v odložišče" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Polja po meri" button_delete: "Izbriši" button_delete_watcher: "Izbriši opazovalca" @@ -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..4f358124f14c 100644 --- a/config/locales/crowdin/js-sr.yml +++ b/config/locales/crowdin/js-sr.yml @@ -74,7 +74,7 @@ sr: button_copy: "Copy" button_copy_to_clipboard: "Copy to clipboard" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Custom fields" button_delete: "Delete" button_delete_watcher: "Delete watcher" @@ -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..d51716b49d90 100644 --- a/config/locales/crowdin/js-sv.yml +++ b/config/locales/crowdin/js-sv.yml @@ -74,7 +74,7 @@ sv: button_copy: "Kopiera" button_copy_to_clipboard: "Kopiera till Urklipp" button_copy_link_to_clipboard: "Kopiera länk till urklipp" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Anpassade fält" button_delete: "Radera" button_delete_watcher: "Ta bort bevakare" @@ -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 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-th.yml b/config/locales/crowdin/js-th.yml index 6f3ac79579e7..bf1616fbb378 100644 --- a/config/locales/crowdin/js-th.yml +++ b/config/locales/crowdin/js-th.yml @@ -74,7 +74,7 @@ th: button_copy: "คัดลอก" button_copy_to_clipboard: "คัดลอกไปยังคลิปบอร์ด" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "ฟิลด์ที่กำหนดเอง" button_delete: "ลบ" button_delete_watcher: "ลบผู้ดูข้อมูล" @@ -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..d0a4b4f7e3f4 100644 --- a/config/locales/crowdin/js-tr.yml +++ b/config/locales/crowdin/js-tr.yml @@ -74,7 +74,7 @@ tr: button_copy: "Kopyalamak" button_copy_to_clipboard: "Panoya kopyala" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Özel Alanlar" button_delete: "silmek" button_delete_watcher: "Takipçi sil" @@ -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..db00e521952c 100644 --- a/config/locales/crowdin/js-uk.yml +++ b/config/locales/crowdin/js-uk.yml @@ -74,7 +74,7 @@ uk: button_copy: "Копіювати" button_copy_to_clipboard: "Копіювати в буфер обміну" button_copy_link_to_clipboard: "Копіювати посилання в буфер обміну" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Індивідуальні поля" button_delete: "Видалити" button_delete_watcher: "Видалити спостерігача" @@ -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..255f24f9706e 100644 --- a/config/locales/crowdin/js-uz.yml +++ b/config/locales/crowdin/js-uz.yml @@ -74,7 +74,7 @@ uz: button_copy: "Copy" button_copy_to_clipboard: "Copy to clipboard" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Custom fields" button_delete: "Delete" button_delete_watcher: "Delete watcher" @@ -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..2b9d6ae514c9 100644 --- a/config/locales/crowdin/js-vi.yml +++ b/config/locales/crowdin/js-vi.yml @@ -74,7 +74,7 @@ vi: button_copy: "Sao chép" button_copy_to_clipboard: "Sao chép vào clipboard" button_copy_link_to_clipboard: "Sao chép liên kết vào clipboard" - button_copy_to_other_project: "Nhân đôi sang dự án khác" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Trường tùy chỉnh" button_delete: "Xóa" button_delete_watcher: "Xóa người theo dõi" @@ -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ệcCô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ệcCô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..ec92c25eb122 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: "显示本地修改" + no_revisions: "未找到本地修改" 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: >- + 将进度计算模式从基于状态改为基于工时,将使完成 %变为不可编辑字段,其值来自工时剩余工时完成 %现有值将保留。如果没有 工时剩余工时的值,则需要这些值才能更改 完成 %。 warning_progress_calculation_mode_change_from_status_to_field_html: >- - 将进度计算模式从基于状态改为基于工作,将使完成百分比成为不可编辑字段,其值来自工作剩余工时完成百分比的现有值将保留。如果没有 "工时"和 "剩余工作"的值,则需要这些值才能更改 "完成百分比"。 + 将进度计算模式从基于状态改为基于工时,将使完成 %字段可自由编辑。如果您选择输入工时剩余工时的值,它们也将与完成 %相关联。更改剩余工时就可以更新完成 %。 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: "当前" 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} 个单词" 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..4f302ecaa74e 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: "顯示本機修改" + no_revisions: "本機未修改" 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: >- + 將進度計算模式從基於狀態更改為基於工作將使完成百分比成為不可編輯,其值源自工時剩餘工時% Complete 的現有值將會保留。如果工時剩餘工時的值不存在,則需要更改它們'才能修改完成百分比。 warning_progress_calculation_mode_change_from_status_to_field_html: >- - 將進度計算模式從基於狀態改為基於工作,將使完成百分比成為不可編輯字段,其值來自工作剩餘工時完成百分比的現有值將保留。如果沒有 "工時"和 "剩餘工作"的值,則需要這些值才能更改 "完成百分比"。 + 將進度計算模式從基於狀態變更為基於工作將使完成百分比欄位可自由編輯。如果您選擇輸入工時剩餘工時,它們也會連結到完成百分比。更改剩餘工作可以更新完成百分比。 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: "目前" 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} 字節" zen_mode: button_activate: "啟動 zen 模式" button_deactivate: "停用 zen 模式" diff --git a/config/locales/crowdin/ka.yml b/config/locales/crowdin/ka.yml index 6edc7660464b..3e76e5a6eab8 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: @@ -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: @@ -1100,7 +1102,7 @@ ka: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "lowercase (e.g. 'a')" uppercase: "uppercase (e.g. 'A')" numeric: "numeric (e.g. '1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..fe5706435b9f 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: @@ -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: @@ -1100,7 +1102,7 @@ kk: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "lowercase (e.g. 'a')" uppercase: "uppercase (e.g. 'A')" numeric: "numeric (e.g. '1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..2c05c01dd362 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: @@ -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: @@ -1092,7 +1094,7 @@ ko: confirmation: "비밀번호와 비밀번호 확인이 일치하지 않습니다." format: "%{message}" password: - weak: "다음과 같은 문자를 포함 해야 합니다 (최소 %{all_count} 중 %{min_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "소문자(예: 'a')" uppercase: "대문자(예: 'A')" numeric: "숫자 (예: ' 1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..40aff44b3cd6 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: @@ -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: @@ -1111,7 +1113,7 @@ lt: confirmation: "Slaptažodžio patvirtinimas nesutampa su įvestu slaptažodžiu." format: "%{message}" password: - weak: "Turi turėti simbolius iš šitų klasių (mažiausiai %{min_count} iš %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "mažosios raidės (pvz., „a“)" uppercase: "didžiosios raidės (pvz., „A“)" numeric: "skaitinė reikšmė (pvz., „1“)" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..f6deac3f6773 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: @@ -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: @@ -1107,7 +1109,7 @@ lv: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Jāsatur rakstzīmes no šādām klasēm (vismaz %{min_count} no %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "mazaie burti (piemēram 'a')" uppercase: "lielaie burti (piemēram, ' A')" numeric: "cipari (piemēram, \"1\")" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..421246e3c059 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: @@ -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: @@ -1100,7 +1102,7 @@ mn: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "lowercase (e.g. 'a')" uppercase: "uppercase (e.g. 'A')" numeric: "numeric (e.g. '1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..c3f4ff512e82 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: @@ -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: @@ -1091,7 +1093,7 @@ ms: confirmation: "Pengesahan kata laluan tidak sepadan dengan kata laluan." format: "%{message}" password: - weak: "Perlu mengandungi karakter-karakter kelas berikut (sekurang-kurangnya %{min_count} dari %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "huruf kecil (cth. 'a')" uppercase: "huruf besar (cth. 'A')" numeric: "angka (cth. '1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..dd6177c959c2 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: @@ -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: @@ -1100,7 +1102,7 @@ ne: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "lowercase (e.g. 'a')" uppercase: "uppercase (e.g. 'A')" numeric: "numeric (e.g. '1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..ae5885db929f 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: @@ -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: @@ -1097,7 +1099,7 @@ nl: confirmation: "Wachtwoordbevestiging komt niet overeen met wachtwoord." format: "%{message}" password: - weak: "Moet karakters bevatten van de volgende klassen (ten minste %{min_count} van %{all_count}):%{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "kleine letters (bijvoorbeeld 'a')" uppercase: "hoofdletters (bijvoorbeeld ' A')" numeric: "numerieke (bijvoorbeeld ' 1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..554a07cfc0de 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: @@ -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: @@ -1099,7 +1101,7 @@ confirmation: "Passordbekreftelsen samsvarer ikke med passordet." format: "%{message}" password: - weak: "Må inneholde tegn fra de følgende klassene (minst %{min_count} av %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "små bokstaver (f.eks. \"a\")" uppercase: "store bokstaver (f.eks. \"A\")" numeric: "numerisk (f.eks. \"1\")" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..72a7b64d0fd3 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: @@ -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: @@ -1111,7 +1113,7 @@ pl: confirmation: "Powtórzone hasło różni się od wprowadzonego hasła!" format: "%{message}" password: - weak: "Musi zawierać znaki z następujących klas (co najmniej %{min_count} z %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "małe litery (np. 'a')" uppercase: "wielkie litery (np. 'A')" numeric: "liczbowe (np. 1)" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..d9abb7400488 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" @@ -1039,9 +1039,9 @@ pt-BR: 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." + 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,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: "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: "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: "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: >- + deve ser 0h quando o trabalho é definido e % concluído é de 100%. + must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >- + 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: @@ -1098,7 +1100,7 @@ pt-BR: confirmation: "A confirmação da senha não corresponde à senha!" format: "%{message}" password: - weak: "Deve conter caracteres das seguintes classes (pelo menos %{min_count} de %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "minúscula (ex.: 'a')" uppercase: "maiúscula (ex.: 'A')" numeric: "número (ex.: '1')" @@ -1163,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" @@ -1646,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" @@ -1658,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" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..b8b26d6ae400 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: @@ -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: @@ -1098,7 +1100,7 @@ pt-PT: confirmation: "A confirmação da palavra-passe não coincide com a palavra-passe." format: "%{message}" password: - weak: "Deve conter carateres das seguintes classes (pelo menos %{min_count} de %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "minúsculas (exemplo, 'a')" uppercase: "maiúsculas (exemplo, 'A')" numeric: "numérico (exemplo, '1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..89e0a269a1d7 100644 --- a/config/locales/crowdin/ro.yml +++ b/config/locales/crowdin/ro.yml @@ -155,7 +155,7 @@ ro: Următoarele câmpuri sunt legate de modul în care sunt creați utilizatorii în OpenProject din intrările LDAP și ce atribute LDAP sunt utilizate pentru a defini atributele unui utilizator OpenProject (cartografiere de atribute). tls_mode: - plain: "niciunul" + plain: "niciuna" simple_tls: "LDAPS" start_tls: "STARTTLS" plain_description: "Deschide o conexiune necriptată la serverul LDAP. Nu se recomandă pentru producție." @@ -174,7 +174,7 @@ ro: colors: index: no_results_title_text: În acest moment nu există culori. - no_results_content_text: Creare culoare nouă + no_results_content_text: Creează o culoare nouă label_new_color: "Culoare nouă" new: label_new_color: "New Color" @@ -263,7 +263,7 @@ ro: index: open_as_gantt: "Deschideți ca vizualizare Gantt" no_results_title_text: În acest moment nu există proiecte - no_results_content_text: Creare proiect nou + no_results_content_text: Creează proiect nou search: label: Project name filter placeholder: Search by project name @@ -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: @@ -656,9 +656,9 @@ ro: notes: "Mențiuni" ldap_auth_source: account: "Cont" - attr_firstname: "Câmp prenume" + attr_firstname: "Atribut prenume" attr_lastname: "Câmp nume" - attr_login: "Atributul nume de utilizator" + attr_login: "Atribut nume de utilizator" attr_mail: "Atribut e-mail" base_dn: "Nume domeniu de bază" host: "Server gazdă" @@ -690,7 +690,7 @@ ro: not_started: "Neînceput" on_track: "În lucru" at_risk: "În pericol" - off_track: "Deraiat" + off_track: "Întârziat" finished: "Finalizat" discontinued: "Anulat" templated: "Proiect șablon" @@ -791,7 +791,7 @@ ro: remaining_hours: "Muncă rămasă" remaining_time: "Muncă rămasă" shared_with_users: "Partajate cu" - schedule_manually: "Programarea manuală" + schedule_manually: "Programare manuală" spent_hours: "Timp consumat" spent_time: "Timp consumat" subproject: "Subproiect" @@ -956,13 +956,13 @@ ro: public: error_unauthorized: "- Utilizatorul nu are permisiunea de a crea vizualizări publice." group_by: - invalid: "Nu se poate grupa prin: %{value}" + invalid: "Nu pot grupa după: %{value}" format: "%{message}" column_names: invalid: "Coloană de interogare invalidă: %{value}" format: "%{message}" sort_criteria: - invalid: "Nu se poate sorta după coloană: %{value}" + invalid: "Nu pot sorta coloana după: %{value}" format: "%{message}" timestamps: invalid: "Timestamps contain invalid values: %{values}" @@ -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: @@ -1107,7 +1109,7 @@ ro: confirmation: "Confirmarea parolei nu se potrivește cu parola." format: "%{message}" password: - weak: "Trebuie să conțină caractere din următoarele clase (cel puțin %{min_count} din %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "litere mici (ex. 'a')" uppercase: "litere mari (ex. 'A')" numeric: "cifre (ex. ' 1')" @@ -1203,9 +1205,9 @@ ro: created_by_on_time_entry: "time logged by %{user} on %{datetime}" created_on: "creat în %{datetime}" created_on_time_entry: "time logged on %{datetime}" - updated_by_on: "actualizat de %{user} la %{datetime}" + updated_by_on: "actualizat de %{user} în %{datetime}" updated_by_on_time_entry: "logged time updated by %{user} on %{datetime}" - updated_on: "actualizat la %{datetime}" + updated_on: "actualizat în %{datetime}" updated_on_time_entry: "logged time updated on %{datetime}" deleted_on: "deleted on %{datetime}" deleted_by_on: "deleted by %{user} on %{datetime}" @@ -1470,7 +1472,7 @@ ro: #Use the strftime parameters for formats. #When no format has been given, it uses default. #You can provide other formats here if you like! - default: "%d-%m-%Y" + default: "%d. %m. %Y" long: "%d %B %Y" short: "%d %b" #Don't forget the nil at the beginning; there's no such thing as a 0th month @@ -1480,7 +1482,7 @@ ro: - "Februarie" - "Martie" - "Aprilie" - - "mai" + - "Mai" - "Iunie" - "Iulie" - "August" @@ -1669,7 +1671,7 @@ ro: changeset: "Set de schimbări editat" message: Mesaj editat news: Noutăţi - project_attributes: "Atributele proiectului editate" + project_attributes: "Atribute proiect editate" project: "Proiect editat" projects: "Proiect editat" reply: Răspuns @@ -1802,7 +1804,7 @@ ro: postgres_migration: "Migrarea instalației dvs. către PostgreSQL" user_guides: "Ghiduri utilizator" faq: "Întrebări Frecvente" - impressum: "Notificare legala" + impressum: "Notificare legală" glossary: "Glosar" shortcuts: "Scurtături" blog: "Blog-ul OpenProject" @@ -2265,7 +2267,7 @@ ro: label_news_latest: "Ultimele noutăți" label_news_new: "Adăugare noutăți" label_news_edit: "Editare noutăți" - label_news_plural: "Noutăţi" + label_news_plural: "Noutăți" label_news_view_all: "Afișează toate știrile" label_next: "Înainte" label_next_week: "Săptămâna viitoare" @@ -2276,7 +2278,7 @@ ro: label_no_parent_page: "Pagină părinte:" label_nothing_display: "Nimic de afișat" label_nobody: "nimeni" - label_not_found: "%s nu a fost găsit" + label_not_found: "nu a fost găsit" label_none: "niciunul" label_none_parentheses: "(nimic)" label_not_contains: "nu conține" @@ -2501,7 +2503,7 @@ ro: label_wiki_show_menu_item: "Afișare ca meniu în navigarea proiectului" label_wiki_show_new_page_link: "Afișare submeniu 'Creare pagină copil'" label_wiki_show_submenu_item: "Afișare ca submeniu pentru " - label_wiki_start: "Pagină de start" + label_wiki_start: "Pagina de start" label_work: "Muncă" label_work_package: "Pachet de lucru" label_work_package_attachments: "Anexe la pachetul de lucru" @@ -3048,7 +3050,7 @@ ro: not_available: "Consumul de spațiu de stocare nu este disponibil pentru acest repo." update_timeout: "Păstraţi informaţia referitoare la spaţiul de stocare necesar pentru un repo timp de N minute. \nDeoarece măsurarea spațiului necesar pentru un repo poate fi costisitoare, creșteți această valoare pentru a reduce impactul în performanță." oauth_application_details: "Valoarea secretă a clientului nu va mai fi accesibilă după ce închideți această fereastră. Vă rugăm să copiați aceste valori în setările Nextcloud OpenProject Integration:" - oauth_application_details_link_text: "Mergeți la pagina de setări" + oauth_application_details_link_text: "Mergi la pagina setări" setup_documentation_details: "Dacă aveți nevoie de ajutor pentru configurarea unui nou depozit de fișiere, consultați documentația: " setup_documentation_details_link_text: "Configurarea fișierelor de stocare" show_warning_details: "Pentru a utiliza acest spațiu de stocare a fișierelor, nu uitați să activați modulul și spațiul de stocare specific în setările de proiect ale fiecărui proiect dorit." @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in Work." + same_as_work: "Set to same value as Work." permissions: comment: "Comentariu" comment_description: "Can view and comment this work package." @@ -3761,7 +3782,7 @@ ro: api_v3_text: "Aplicația va primi acces complet de citire și scriere la OpenProject API v3 pentru a efectua acțiuni în numele dumneavoastră." grants: created_date: "Aprobat" - scopes: "Drepturi" + scopes: "Permisiuni" successful_application_revocation: "Revocarea cererii %{application_name} a avut succes." none_given: "Nu a fost acordat acces la contul dvs. de utilizator niciunei aplicații OAuth." x_active_tokens: diff --git a/config/locales/crowdin/ru.yml b/config/locales/crowdin/ru.yml index 18588a7a4b69..516b18e88fe9 100644 --- a/config/locales/crowdin/ru.yml +++ b/config/locales/crowdin/ru.yml @@ -264,8 +264,8 @@ ru: no_results_title_text: На данный момент проектов нет no_results_content_text: Создать новый проект search: - label: Project name filter - placeholder: Search by project name + label: Фильтр по названию проекта + placeholder: Поиск по названию проекта lists: active: "Активные проекты" my: "Мои проекты" @@ -299,7 +299,7 @@ ru: actions: label_enable_single: "Активно в этом проекте, нажмите для отключения" label_disable_single: "Неактивно в этом проекте, нажмите для включения" - deactivate_for_project: "Деактивировать для этого проекта" + remove_from_project: "Удалить из проекта" label_enable_all: "Включить всё" label_disable_all: "Выключить всё" is_required_blank_slate: @@ -403,8 +403,8 @@ ru: 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: Токен %{type} создан + warning: Обратите внимание, что это единственный раз, когда Вы увидите этот токен, поэтому обязательно скопируйте его сейчас. errors: token_name_blank: "Пожалуйста, укажите имя токена API" token_name_in_use: "Это имя токена API уже используется, пожалуйста, выберите другое" @@ -495,7 +495,7 @@ ru: is_readonly: "Только для чтения" excluded_from_totals: "Исключен из итогов" themes: - dark: "Dark (Beta)" + dark: "Темный (бета)" light: "Светлая" light_high_contrast: "Светлый высокий контраст" types: @@ -546,9 +546,9 @@ ru: no_common_statuses_exists: "Статус не доступен для всех выбранных пакетов работ. Их статус изменен быть не может." unsupported_for_multiple_projects: "Массовое перемещение/копирование не поддерживается при работе с пакетами из нескольких проектов" current_type_not_available_in_target_project: > - The current type of the work package is not enabled in the target project. Please enable the type in the target project if you'd like it to remain unchanged. Otherwise, select an available type in the target project from the list. + Текущий тип пакета работ не включен в целевой проект. Пожалуйста, включите этот тип в целевом проекте, если хотите, чтобы он остался без изменений. В противном случае выберите из списка доступный тип в целевом проекте. bulk_current_type_not_available_in_target_project: > - The current types of the work packages aren't enabled in the target project. Please enable the types in the target project if you'd like them to remain unchanged. Otherwise, select an available type in the target project from the list. + Текущие типы пакетов работ не включены в целевой проект. Включите типы в целевом проекте, если хотите, чтобы они остались неизменными. В противном случае выберите из списка доступный тип в целевом проекте. sharing: missing_workflow_warning: title: "Отсутствует рабочий процесс для совместного использования пакета работ" @@ -637,7 +637,7 @@ ru: possible_values: "Возможные значения" regexp: "Регулярное выражение" searchable: "Доступно для поиска" - admin_only: "Admin-only" + admin_only: "Только администратор" custom_value: value: "Значение" doorkeeper/application: @@ -707,7 +707,7 @@ ru: versions: "Этапы" work_packages: "Задачи" project_custom_field: - is_required: "Required for all projects" + is_required: "Требуется для всех проектов" custom_field_section: Раздел query: column_names: "Столбцы" @@ -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: "не соответствует Работа и Остаток работы" + 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: "не совпадает с датой начала, хотя это требуется для вех." @@ -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: "не может быть меньше, чем Остаток работы." + 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: "Required when Work and % Complete are set." - format: "%{message}" + 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: >- + должно быть равно 0h, если установлено 100% для Работа и % Завершения. + must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >- + должен быть пустым, если Работа пусто, а % Завершения равен 100%. readonly_status: "Пакет работ находится в статусе доступном только для чтения, поэтому его атрибуты не могут быть изменены." type: attributes: @@ -1113,7 +1115,7 @@ ru: confirmation: "Подтверждение пароля не совпадает с паролем." format: "%{message}" password: - weak: "Должны содержаться символы следующих классов (как минимум %{min_count} из %{all_count}): %{rules}." + weak: "Должен содержать символы следующих классов (как минимум %{min_count}\nиз %{all_count}): %{rules}" lowercase: "нижний регистр (например «а»)" uppercase: "прописные буквы (например, \"A\")" numeric: "цифры (например \"1\")" @@ -1191,7 +1193,7 @@ ru: one: Access token few: Access tokens many: Access tokens - other: Access tokens + other: Токены доступа type: "Тип" user: "Пользователь" version: "Этапы" @@ -1674,7 +1676,7 @@ ru: error_pdf_failed_to_export: "Не удалось сохранить экспорт в PDF: %{error}" error_token_authenticity: "Не удалось проверить CSRF-токен. Возможно, вы попытались отправить данные сразу из нескольких браузеров или вкладок. Закройте все вкладки и попробуйте снова." error_work_package_not_found_in_project: "Пакет работ не найден или не принадлежит к этому проекту" - error_work_package_id_not_found: "The work package was not found." + error_work_package_id_not_found: "Пакет работ не найден." error_must_be_project_member: "должен быть участник проекта" error_migrations_are_pending: "Ваша версия OpenProject находится в ожидании миграции базы данных. Вероятно, вы пропустили запуск миграции при во время последнего обновления. Пожалуйста, ознакомьтесь с руководством по обновлению, чтобы правильно настроить вашу новую установку." error_migrations_visit_upgrade_guides: "Пожалуйста, ознакомьтесь с разделом документации, содержащим наше руководство по обновлению" @@ -1717,10 +1719,10 @@ ru: subproject: "Подпроект: %{name}" export: dialog: - title: "Export" - submit: "Export" + title: "Экспорт" + submit: "Экспорт" format: - label: "File format" + label: "Формат файла" options: csv: label: "CSV" @@ -1729,58 +1731,58 @@ ru: 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" @@ -2010,7 +2012,7 @@ ru: label_ldap_auth_source_plural: "Соединения LDAP" label_attribute_expand_text: "Полный текст для '%{attribute}'" label_authentication: "Аутентификация" - label_authentication_settings: "Authentication settings" + label_authentication_settings: "Параметры аутентификации" label_available_global_roles: "Доступные глобальные роли" label_available_project_attributes: "Доступные атрибуты проекта" label_available_project_forums: "Доступные форумы" @@ -2305,8 +2307,8 @@ ru: label_next_week: "На следующей неделе" label_no_change_option: "(Без изменений)" label_no_data: "Нет данных для отображения" - label_no_due_date: "no finish date" - label_no_start_date: "no start date" + label_no_due_date: "нет даты окончания" + label_no_start_date: "нет даты начала" label_no_parent_page: "Без родительской страницы" label_nothing_display: "Нет данных для отображения" label_nobody: "никто" @@ -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: > + В режиме На основе трудозатрат, % Завершения рассчитывается на основе того, сколько работы выполнено по отношению к общему объему работ. В режиме На основе статуса, каждый статус имеет связанное с ним значение % Завершения. Изменение статуса изменит % Завершения. setting_work_package_done_ratio_explanation_html: > - В режиме На основе трудозатрат, процент завершения рассчитывается на основе того, сколько работы выполнено по отношению к общему объему работ. В режиме На основе статуса, каждый статус имеет связанное с ним значение процента завершения. Изменение статуса изменит процент завершения. + В режиме На основе трудозатрат для параметра % Завершения можно свободно установить любое значение. Если вы дополнительно введете значение «Работа», «Оставшаяся работа» будет получена автоматически. В режиме На основе статуса с каждым статусом связано значение % Завершения. Изменение статуса приведет к изменению % Завершения. 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: "Каждое поле автоматически рассчитывается от двух других, когда это возможно." + 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_work_is_0h: "Очищено, потому что Работа равна 0h." + derived: "Получено из Работы и Оставшейся работы." + estimated_hours: + cleared_because_remaining_work_is_empty: "Очищено, потому что оставшаяся работа пуста." + derived: "Получено из Оставшейся работы и % Завершения." + same_as_remaining_work: "Установите то же значение, что и Оставшаяся работа." + remaining_hours: + cleared_because_work_is_empty: "Очищено, потому что Работа пуста." + cleared_because_percent_complete_is_empty: "Очищено, потому что % Завершения пуст." + decreased_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Получено из Работы и % Завершения." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in Work." + same_as_work: "Установите то же значение, что и для Работы." permissions: comment: "Комментировать" comment_description: "Может просматривать и комментировать этот пакет работ." diff --git a/config/locales/crowdin/rw.yml b/config/locales/crowdin/rw.yml index b4ecdd08e289..0a18812e6fea 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: @@ -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: @@ -1100,7 +1102,7 @@ rw: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "lowercase (e.g. 'a')" uppercase: "uppercase (e.g. 'A')" numeric: "numeric (e.g. '1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..dd64795c17fb 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: @@ -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: @@ -1100,7 +1102,7 @@ si: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "පහත සඳහන් පංතිවල අක්ෂර අඩංගු විය යුතුය (අවම වශයෙන් %{min_count} හි %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "සිම්පල් නඩුව (උදා: 'a')" uppercase: "ඉහළ (උදා: 'ඒ')" numeric: "සංඛ්යාත්මක (උදා: '1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..82f65fd419a8 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: @@ -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: @@ -1114,7 +1116,7 @@ sk: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Musí obsahovať znaky z nasledujúcich tried (najmenej%{min_count} z %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "malé písmená (napríklad \"a\")" uppercase: "veľké písmená (napríklad \"A\")" numeric: "Čísla (napríklad 1)" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..0c12609621b1 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: @@ -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: @@ -1111,7 +1113,7 @@ sl: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Vsebovati mora znake naslednjih razredov (vsaj %{min_count} od %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "mala črka (npr. \"a\")" uppercase: "velika črka (npr. \"A\")" numeric: "številke (npr. '1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..879496a5cb96 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: @@ -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: @@ -1107,7 +1109,7 @@ sr: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "lowercase (e.g. 'a')" uppercase: "uppercase (e.g. 'A')" numeric: "numeric (e.g. '1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..27a194a73fad 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: @@ -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: @@ -1099,7 +1101,7 @@ sv: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Måste innehålla följande teckentyper (minst %{min_count} av %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "gemener (t.ex. \"a\")" uppercase: "versal (t.ex. \"A\")" numeric: "numeriska (t.ex. ' 1')" @@ -1650,7 +1652,7 @@ sv: title: "Export" submit: "Export" format: - label: "File format" + label: "Filformat" options: csv: label: "CSV" @@ -1682,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: @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..895d58f116ca 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: @@ -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: @@ -1093,7 +1095,7 @@ th: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "ตัวพิมพ์เล็ก (เช่น 'a')" uppercase: "ตัวพิมพ์ใหญ่ (เช่น ' A')" numeric: "ตัวเลข (เช่น ' 1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..58ba23ee3f9d 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: @@ -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: @@ -1099,7 +1101,7 @@ tr: confirmation: "Parola onayı parolayla eşleşmiyor." format: "%{message}" password: - weak: "Aşağıdaki sınıfların karakterlerini içermelidir (en az% {min_count} /% {all_count}):% {rules}. %{min_count} %{all_count} %{rules} " + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "küçük harf (örneğin 'a')" uppercase: "büyük harf (örneğin 'A')" numeric: "rakam (örneğin '1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..951f228d62ab 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: @@ -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: @@ -1108,7 +1110,7 @@ uk: confirmation: "Підтвердження пароля та пароль не збігаються." format: "%{message}" password: - weak: "Має містити символи наступних класів (принаймні %{min_count} з %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "нижній реєстр шрифту (наприклад, 'a')" uppercase: "верхній реєстр шрифту (наприклад, 'А')" numeric: "числовий (наприклад, '1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..d7857c423d63 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: @@ -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: @@ -1100,7 +1102,7 @@ uz: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "lowercase (e.g. 'a')" uppercase: "uppercase (e.g. 'A')" numeric: "numeric (e.g. '1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..2ae9db9adfbe 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" @@ -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: @@ -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: "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,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: "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ệ." - 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: @@ -1095,7 +1097,7 @@ vi: confirmation: "Xác nhận mật khẩu không khớp với mật khẩu." format: "%{message}" password: - weak: "Phải chứa các ký tự thuộc các lớp sau (ít nhất %{min_count} trong số %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "chữ thường (ví dụ như 'a')" uppercase: "chữ hoa (ví dụ như ' A')" numeric: "số (ví dụ như ' 1')" @@ -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_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "Derived from Work and % Complete." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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..2840d40bc0d5 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: "从项目移除" label_enable_all: "全部启用" label_disable_all: "全部禁用" is_required_blank_slate: @@ -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: "工时与剩余工时不匹配" + 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: "不是在开始日期开始,尽管这是必需的里程碑。" @@ -1063,14 +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: "设置 剩余工作 和 已完成% 时必填。" - format: "%{message}" + 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: "设置 工作 和 已完成% 时必填。" - format: "%{message}" + 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: >- + 当“工时”已设置,且“完成%”为 100% 时,必须为 0h 。 + must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >- + 当“工时”为空,且“完成%”为 100% 时,必须为空。 readonly_status: "工作包处于只读状态,因此无法更改其属性。" type: attributes: @@ -1089,7 +1091,7 @@ zh-CN: confirmation: "确认密码与密码不一致。" format: "%{message}" password: - weak: "必须包含以下类字符 (至少 %{min_count} %{all_count}): %{rules}。" + weak: "必须包含以下字符 (至少 %{all_count} 中的 %{min_count} 个):%{rules}。" lowercase: "小写字母 (如 'a')" uppercase: "大写字母 (如 'A')" numeric: "数值 (例如 ' 1')" @@ -1621,16 +1623,16 @@ 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 导出类型" options: table: label: "表格" - caption: "以表格形式导出工作包列表,包含所需的列。" + caption: "将工作包列表导出为包含所需列的表格。" report: label: "报告" caption: "以详细报告的形式导出列表中的所有工作包。" @@ -1638,8 +1640,8 @@ zh-CN: label: "甘特图" caption: "以甘特图视图导出工作包列表。" include_images: - label: "包含图片" - caption: "不包含图像以缩小导出PDF的大小。" + label: "包含图像" + caption: "不包含图像以减小导出PDF的大小。" gantt_zoom_levels: label: "缩放级别" caption: "选择图表中显示日期的缩放级别。" @@ -1666,7 +1668,7 @@ zh-CN: xls: include_relations: label: "包含关系" - caption: "该选项将为每个工作包与另一个工作包的关系创建一个副本。" + caption: "此选项将为每个与其他工作包有关系的工作包创建一个副本。" include_descriptions: label: "包含描述" caption: "该选项将添加原始格式的描述列。" @@ -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: > + 在基于工时模式下,“完成 %”是根据已完成的工时占总工时的比例计算出来的。在基于状态模式下,每个状态都有一个与之相关的“完成 %”。更改状态将改变“完成 %”。 setting_work_package_done_ratio_explanation_html: > - 在基于工时模式下,完成百分比是根据已完成的工时占总工时的比例计算出来的。在基于状态模式下,每个状态都有一个与之相关的完成百分比。更改状态将改变完成百分比。 + 在基于工作的模式下,“完成 %”可以自由设置为任何值。如果选择输入 "工时 "值,则会自动得出 "剩余工时"。在基于状态的模式下,每个状态都有一个与之相关的“完成 %”值。更改状态将改变“完成 %”。 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: "在可能的情况下,每个字段都会根据另外两个字段自动计算。" + 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_work_is_0h: "已清空,因为 \"工时 \"为 0h。" + derived: "源自“工时”和“剩余工时”。" + estimated_hours: + cleared_because_remaining_work_is_empty: "已清空,因为“剩余工时”为空。" + derived: "由“剩余工时”和“完成 %”得出" + same_as_remaining_work: "设置为与“剩余工时”相同的值。" + remaining_hours: + cleared_because_work_is_empty: "已清空,因为 \"工时 \"为空。" + cleared_because_percent_complete_is_empty: "已清空,因为“完成 %”为空。" + decreased_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "由“工时”和“完成 %”得出" + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in 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 e125f54884c2..a7c2c2935a62 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: "我的專案" @@ -299,7 +299,7 @@ zh-TW: actions: label_enable_single: "於此專案使用,請按一下停用" label_disable_single: "於此專案未使用,請按一下啟用" - deactivate_for_project: "停用此專案" + remove_from_project: "從專案移除" label_enable_all: "全部啟用" label_disable_all: "全部停用" is_required_blank_slate: @@ -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: "工作與剩餘工作不符" + 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: "工時與剩餘工時已設定時必填" inclusion: "必須介於 0 和 100 之間。" due_date: not_start_date: "儘管日期是里程碑所必需的,但不是開始日期。" @@ -1065,14 +1065,16 @@ zh-TW: estimated_hours: not_a_number: "不是有效的持續時間。" cant_be_inferior_to_remaining_work: "不能低於剩餘工時。" - must_be_set_when_remaining_work_and_percent_complete_are_set: "設置 剩餘工作 和 已完成% 時必填。" - format: "%{message}" + 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: "設置 工作 和 已完成% 時必填。" - format: "%{message}" + 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: >- + 當工時設定後,其完成度100%時,剩餘工時必須為 0。 + must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >- + 工時未設定設定,但完成度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: > + 在基於工作模式下,完成百分比是根據已完成的工作量相對於總工作量來計算的。在基於狀態模式下,每個狀態都有一個與其關聯的完成百分比值。更改狀態將更改完成百分比。 setting_work_package_done_ratio_explanation_html: > - 在基於工時模式中,"完成百分比"是根據已完成的工作量與總工作量來計算的。在 基於狀態 模式中,每個狀態都有一個與其關聯的完成百分比值。更改狀態將更改完成百分比。 + 在基於工作模式下,完成百分比可以自由設定為任何值。如果您可以選擇輸入工時,則會自動算出剩餘工時。在基於狀態模式下,每個狀態都有一個與其關聯的完成百分比值。更改狀態將更改完成百分比。 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: "在可能的情況下,每個欄位都會根據其他兩個欄位自動計算。" + 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_work_is_0h: "已清除,因為工時為0。" + derived: "源自工時和剩餘工時。" + estimated_hours: + cleared_because_remaining_work_is_empty: "已清除,因為無剩餘工時。" + derived: "源自剩餘工時和完成百分比。" + same_as_remaining_work: "設定與剩餘工時相同值。" + remaining_hours: + cleared_because_work_is_empty: "已清除,因為無工時。" + cleared_because_percent_complete_is_empty: "已清除,因為無完成度。" + decreased_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." + derived: "源自工時和完成百分比。" + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in Work." + same_as_work: "設定與工時相同值。" permissions: comment: "留言" comment_description: "可查看此工作項目與留言" diff --git a/config/locales/en.yml b/config/locales/en.yml index d0d10725d37a..b44c77f5cdcf 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: @@ -1178,7 +1178,7 @@ en: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}." + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}" lowercase: "lowercase (e.g. 'a')" uppercase: "uppercase (e.g. 'A')" numeric: "numeric (e.g. '1')" @@ -2484,6 +2484,8 @@ en: label_role_plural: "Roles" label_role_search: "Assign role to new members" label_scm: "SCM" + label_scroll_left: "Scroll left" + label_scroll_right: "Scroll right" label_search: "Search" label_search_by_name: "Search by name" label_send_information: "Send new credentials to the user" @@ -3773,9 +3775,9 @@ en: 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." + decreased_by_delta_like_work: "Decreased by %{delta}, matching the reduction in Work." derived: "Derived from Work and % Complete." - increased_like_work: "Increased by the same amount as Work." + increased_by_delta_like_work: "Increased by %{delta}, matching the increase in Work." same_as_work: "Set to same value as Work." permissions: comment: "Comment" diff --git a/config/locales/js-en.yml b/config/locales/js-en.yml index 4cc9ceb6ad47..51e332ecbc7e 100644 --- a/config/locales/js-en.yml +++ b/config/locales/js-en.yml @@ -91,7 +91,7 @@ en: button_copy: "Copy" button_copy_to_clipboard: "Copy to clipboard" button_copy_link_to_clipboard: "Copy link to clipboard" - button_copy_to_other_project: "Duplicate to other project" + button_copy_to_other_project: "Duplicate in another project" button_custom-fields: "Custom fields" button_delete: "Delete" button_delete_watcher: "Delete watcher" @@ -405,16 +405,16 @@ en: learn_about: "Learn more about the new features" # Include the version to invalidate outdated translations in other locales. # Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "14_4": + "14_5": standard: new_features_html: > The release contains various new features and improvements, such as:
ical_sharing_modal: diff --git a/config/routes.rb b/config/routes.rb index b5c8414b26fa..599deee6f166 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -169,6 +169,14 @@ post :reorder_alphabetical end + + scope module: :admin do + scope module: :custom_fields do + resources :projects, + controller: "/admin/custom_fields/custom_field_projects", + only: %i[index] + end + end end get "(projects/:project_id)/search" => "search#index", as: "search" 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/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/api/apiv3/components/examples/status_collection.yml b/docs/api/apiv3/components/examples/status_collection.yml index c2756848fc2e..a5802fb8d246 100644 --- a/docs/api/apiv3/components/examples/status_collection.yml +++ b/docs/api/apiv3/components/examples/status_collection.yml @@ -1,72 +1,89 @@ -# Example: Status collection ---- +description: |- + A standard, unpaginated collection of statuses. value: + _type: Collection + count: 6 + total: 6 _embedded: elements: - - _links: - self: - href: "/api/v3/statuses/1" - _type: Status - defaultDoneRatio: 0 + - _type: Status id: 1 + name: New isClosed: false + color: '#3997AD' isDefault: true - name: New + isReadonly: false + excludedFromTotals: false + defaultDoneRatio: 0 position: 1 - - _links: + _links: self: - href: "/api/v3/statuses/3" - _type: Status - defaultDoneRatio: 75 + href: '/api/v3/statuses/1' + - _type: Status id: 3 + name: Resolved isClosed: false + color: '#93D2AE' isDefault: false isReadonly: false - name: Resolved + excludedFromTotals: false + defaultDoneRatio: 75 position: 3 - - _links: + _links: self: - href: "/api/v3/statuses/4" - _type: Status - defaultDoneRatio: 25 + href: '/api/v3/statuses/3' + - _type: Status id: 4 + name: Feedback isClosed: false + color: '#A96FFE' isDefault: false - name: Feedback + isReadonly: false + excludedFromTotals: false + defaultDoneRatio: 25 position: 4 - - _links: + _links: self: - href: "/api/v3/statuses/5" - _type: Status - defaultDoneRatio: 100 + href: '/api/v3/statuses/4' + - _type: Status id: 5 + name: Closed isClosed: true + color: '#DF6DA1' isDefault: false - name: Closed + isReadonly: false + excludedFromTotals: false + defaultDoneRatio: 100 position: 5 - - _links: + _links: self: - href: "/api/v3/statuses/6" - _type: Status - defaultDoneRatio: 100 + href: '/api/v3/statuses/5' + - _type: Status id: 6 + name: Rejected isClosed: true + color: '#D32937' isDefault: false - name: Rejected + isReadonly: true + excludedFromTotals: true + defaultDoneRatio: 100 position: 6 - - _links: + _links: self: - href: "/api/v3/statuses/2" - _type: Status - defaultDoneRatio: 50 + href: '/api/v3/statuses/6' + - _type: Status id: 2 + name: In Progress isClosed: false + color: '#3852C6' isDefault: false - name: In Progress + isReadonly: false + excludedFromTotals: false + defaultDoneRatio: 50 position: 3 + _links: + self: + href: '/api/v3/statuses/2' _links: self: - href: "/api/v3/statuses" - _type: Collection - count: 6 - total: 6 + href: '/api/v3/statuses' diff --git a/docs/api/apiv3/components/examples/status_response.yml b/docs/api/apiv3/components/examples/status_response.yml new file mode 100644 index 000000000000..7a132dd9bf1f --- /dev/null +++ b/docs/api/apiv3/components/examples/status_response.yml @@ -0,0 +1,16 @@ +description: A standard status resource response. +value: + _type: Status + id: 13 + name: Waiting for Darth-approval + isClosed: false + color: '#FE005D' + isDefault: false + isReadonly: false + excludedFromTotals: false + defaultDoneRatio: 66 + position: 4 + _links: + self: + href: '/api/v3/statuses/13' + title: Waiting for Darth-approval diff --git a/docs/api/apiv3/components/schemas/status_collection_model.yml b/docs/api/apiv3/components/schemas/status_collection_model.yml index f4031bf22c1f..ee670be3528c 100644 --- a/docs/api/apiv3/components/schemas/status_collection_model.yml +++ b/docs/api/apiv3/components/schemas/status_collection_model.yml @@ -4,21 +4,8 @@ allOf: - $ref: './collection_model.yml' - type: object required: - - _links - _embedded properties: - _links: - type: object - required: - - self - properties: - self: - allOf: - - $ref: './link.yml' - - description: |- - This file links collection - - **Resource**: StatusCollectionModel _embedded: type: object required: diff --git a/docs/api/apiv3/components/schemas/status_model.yml b/docs/api/apiv3/components/schemas/status_model.yml index da3f9113e6fd..e17ae6384235 100644 --- a/docs/api/apiv3/components/schemas/status_model.yml +++ b/docs/api/apiv3/components/schemas/status_model.yml @@ -9,52 +9,45 @@ properties: id: type: integer description: Status id - readOnly: true minimum: 1 name: type: string description: Status name - readOnly: true - position: - type: integer - description: Sort index of the status - readOnly: true - isDefault: - type: boolean - readOnly: true isClosed: type: boolean - description: are tickets of this status considered closed? - readOnly: true + description: Indicates, whether work package of this status are considered closed + color: + type: string + format: hex-code + description: The color of the status + isDefault: + type: boolean + description: True, if this status is the default status for new work packages isReadonly: type: boolean - description: are tickets of this status read only? - readOnly: true + description: Indicates, whether work package of this status are readonly + excludedFromTotals: + type: boolean + description: |- + Indicates, whether work package of this status are excluded from totals of `Work`, `Remaining work`, and + `% Complete` in a hierarchy. defaultDoneRatio: type: integer description: The percentageDone being applied when changing to this status + minimum: 0 maximum: 100 + position: + type: integer + description: Sort index of the status _links: type: object required: - - self + - self properties: self: allOf: - - "$ref": "./link.yml" - - description: |- - This status - - **Resource**: Status - readOnly: true -example: - _links: - self: - href: "/api/v3/statuses/1" - _type: Status - id: 1 - name: New - position: 1 - isDefault: true - isClosed: false - defaultDoneRatio: 0 + - $ref: './link.yml' + - description: |- + This status + + **Resource**: Status 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: diff --git a/docs/api/apiv3/openapi-spec.yml b/docs/api/apiv3/openapi-spec.yml index c9ffc28257e3..9175c3f08b8b 100644 --- a/docs/api/apiv3/openapi-spec.yml +++ b/docs/api/apiv3/openapi-spec.yml @@ -527,6 +527,10 @@ components: $ref: "./components/examples/relation_response.yml" RelationUpdateRequest: $ref: "./components/examples/relation_update_request.yml" + StatusCollection: + $ref: "./components/examples/status_collection.yml" + StatusResponse: + $ref: "./components/examples/status_response.yml" StorageNextcloudResponse: $ref: "./components/examples/storage-nextcloud-response.yml" StorageNextcloudResponseForCreation: @@ -537,16 +541,14 @@ components: $ref: "./components/examples/storage-one-drive-incomplete-response.yml" StorageOneDriveResponse: $ref: "./components/examples/storage-one-drive-response.yml" + StoragesSimpleCollectionModel: + $ref: "./components/examples/storages-simple-collection-response.yml" QueriesModel: $ref: "./components/examples/queries.yml" QueryModel: $ref: "./components/examples/query.yml" QuerySchemaModel: $ref: "./components/examples/query_schema.yml" - StatusCollection: - $ref: "./components/examples/status_collection.yml" - StoragesSimpleCollectionModel: - $ref: "./components/examples/storages-simple-collection-response.yml" UserResponse: $ref: "./components/examples/user-response.yml" ValuesPropertyStartDateSchema: diff --git a/docs/api/apiv3/paths/status.yml b/docs/api/apiv3/paths/status.yml index b20d4d852b34..5edf3a96530f 100644 --- a/docs/api/apiv3/paths/status.yml +++ b/docs/api/apiv3/paths/status.yml @@ -1,53 +1,54 @@ # /api/v3/statuses/{id} --- get: + summary: Get a work package status + operationId: get_status + tags: + - Statuses + description: |- + Returns a work package status by its unique identifier. parameters: - - description: Status id - example: '1' - in: path - name: id - required: true - schema: - type: integer + - name: id + description: Status id + in: path + required: true + schema: + type: integer + example: '1' responses: '200': + description: OK content: application/hal+json: examples: response: - value: - _links: - self: - href: "/api/v3/statuses/1" - _type: Status - defaultDoneRatio: 0 - id: 1 - isClosed: false - isDefault: true - name: New - position: 1 + $ref: '../components/examples/status_response.yml' schema: - "$ref": "../components/schemas/status_model.yml" - description: OK - headers: {} + $ref: '../components/schemas/status_model.yml' '403': + description: |- + Returned if the client does not have sufficient permissions. + + **Required permission:** view work package (on any project) content: application/hal+json: schema: - $ref: "../components/schemas/error_response.yml" + $ref: '../components/schemas/error_response.yml' examples: response: value: _type: Error errorIdentifier: urn:openproject-org:api:v3:errors:MissingPermission message: You are not allowed to see this status. - description: |- - Returned if the client does not have sufficient permissions. - - **Required permission:** view work package (on any project) - headers: {} - tags: - - Statuses - description: '' - operationId: View_Status - summary: View Status + '404': + description: Returned if the status does not exist. + content: + application/hal+json: + schema: + $ref: '../components/schemas/error_response.yml' + examples: + response: + value: + _type: Error + errorIdentifier: urn:openproject-org:api:v3:errors:NotFound + message: The requested resource could not be found. diff --git a/docs/api/apiv3/paths/statuses.yml b/docs/api/apiv3/paths/statuses.yml index 557b4a7c987f..c7878c8e6d90 100644 --- a/docs/api/apiv3/paths/statuses.yml +++ b/docs/api/apiv3/paths/statuses.yml @@ -1,35 +1,33 @@ # /api/v3/statuses --- get: + summary: List the collection of all statuses + operationId: list_statuses + tags: + - Statuses + description: Returns a collection of all work package statuses. responses: '200': + description: OK content: application/hal+json: examples: 'simple status collection': - $ref: "../components/examples/status_collection.yml" + $ref: '../components/examples/status_collection.yml' schema: - "$ref": "../components/schemas/status_collection_model.yml" - description: OK - headers: {} + $ref: '../components/schemas/status_collection_model.yml' '403': + description: |- + Returned if the client does not have sufficient permissions. + + **Required permission:** view work package (on any project) content: application/hal+json: schema: - $ref: "../components/schemas/error_response.yml" + $ref: '../components/schemas/error_response.yml' examples: response: value: _type: Error errorIdentifier: urn:openproject-org:api:v3:errors:MissingPermission message: You are not allowed to see the statuses. - description: |- - Returned if the client does not have sufficient permissions. - - **Required permission:** view work package (on any project) - headers: {} - tags: - - Statuses - description: '' - operationId: List_all_Statuses - summary: List all Statuses diff --git a/docs/api/apiv3/tags/statuses.yml b/docs/api/apiv3/tags/statuses.yml index c1b46ecf5ae5..a8623c757a13 100644 --- a/docs/api/apiv3/tags/statuses.yml +++ b/docs/api/apiv3/tags/statuses.yml @@ -1,20 +1,21 @@ ---- +name: Statuses description: |- ## Linked Properties - | Link | Description | Type | Constraints | Supported operations | - |:-------------:|-------------------------- | ------------- | ----------- | -------------------- | - | self | This status | Status | not null | READ | + | Link | Description | Type | Constraints | Supported operations | + |:----:|-------------|--------|-------------|----------------------| + | self | This status | Status | not null | READ | ## Local Properties - | Property | Description | Type | Constraints | Supported operations | - | :--------: | ------------- | ------- | ----------- | -------------------- | - | id | Status id | Integer | x > 0 | READ | - | name | Status name | String | | READ | - | position | Sort index of the status | Integer | | READ | - | isDefault | | Boolean | | READ | - | isClosed | are tickets of this status considered closed? | Boolean | | READ | - | isReadonly | are tickets of this status read only? | Boolean | | READ | - | defaultDoneRatio | The percentageDone being applied when changing to this status | Integer | 0 <= x <= 100 | READ | -name: Statuses + | Property | Description | Type | Constraints | Supported operations | + |:------------------:|--------------------------------------------------------------------------------------------------------------------------------------------|---------|---------------|----------------------| + | id | Status id | Integer | x > 0 | READ | + | name | Status name | String | | READ | + | isClosed | Indicates, whether work package of this status are considered closed | Boolean | | READ | + | color | A Hex-coded value of the color assigned to the status. | String | | READ | + | isDefault | True, if this status is the default status for new work packages | Boolean | | READ | + | isReadonly | Indicates, whether work package of this status are readonly | Boolean | | READ | + | excludedFromTotals | Indicates, whether work package of this status are excluded from totals of
`Work`, `Remaining work`, and `% Complete` in a hierarchy. | Boolean | | READ | + | defaultDoneRatio | The percentageDone being applied when changing to this status | Integer | 0 <= x <= 100 | READ | + | position | Sort index of the status | Integer | | READ | 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/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 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/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 998de6a73c0d..000000000000 Binary files a/docs/getting-started/my-account/openproject_my_account_page_new.png and /dev/null differ 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. diff --git a/docs/installation-and-operations/system-requirements/README.md b/docs/installation-and-operations/system-requirements/README.md index 04ab87a56dca..45853f3979fd 100644 --- a/docs/installation-and-operations/system-requirements/README.md +++ b/docs/installation-and-operations/system-requirements/README.md @@ -83,7 +83,7 @@ The [docker-based installation](../installation/docker) requires a system with D Both the package and docker based installations will install and setup the following dependencies that are required by OpenProject to run: -* __Runtime:__ [Ruby](https://www.ruby-lang.org/en/) Version = 2.7.x +* __Runtime:__ [Ruby](https://www.ruby-lang.org/en/) Version = 3.3.x * __Webserver:__ [Apache](https://httpd.apache.org/) or [nginx](https://nginx.org/en/docs/) * __Application server:__ [Puma](https://puma.io/) 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 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) diff --git a/docs/system-admin-guide/files/external-file-storages/health-status/openproject_file_storages_health_message_nextcloud.png b/docs/system-admin-guide/files/external-file-storages/health-status/openproject_file_storages_health_message_nextcloud.png deleted file mode 100644 index 2fbb32d38780..000000000000 Binary files a/docs/system-admin-guide/files/external-file-storages/health-status/openproject_file_storages_health_message_nextcloud.png and /dev/null differ diff --git a/docs/system-admin-guide/information/Sys-admin-information.png b/docs/system-admin-guide/information/Sys-admin-information.png deleted file mode 100644 index 8908b20932a1..000000000000 Binary files a/docs/system-admin-guide/information/Sys-admin-information.png and /dev/null differ diff --git a/docs/system-admin-guide/information/image-20200124104411677.png b/docs/system-admin-guide/information/image-20200124104411677.png deleted file mode 100644 index 096101983762..000000000000 Binary files a/docs/system-admin-guide/information/image-20200124104411677.png and /dev/null differ diff --git a/docs/system-admin-guide/information/image-20200124104803476.png b/docs/system-admin-guide/information/image-20200124104803476.png deleted file mode 100644 index f09cba9b0d20..000000000000 Binary files a/docs/system-admin-guide/information/image-20200124104803476.png and /dev/null differ diff --git a/docs/system-admin-guide/manage-work-packages/work-package-workflows/README.md b/docs/system-admin-guide/manage-work-packages/work-package-workflows/README.md index a36e3fad1aed..df575ed04d7d 100644 --- a/docs/system-admin-guide/manage-work-packages/work-package-workflows/README.md +++ b/docs/system-admin-guide/manage-work-packages/work-package-workflows/README.md @@ -19,7 +19,7 @@ To edit a workflow: 1. Select the **role** from the dropdown menu for which you want to edit the workflow. 2. Select the **work package type** from the dropdown menu for which you want to edit the workflow. -3. Check if you **only want the statuses that are used by this type** to be displayed (this option is selected automatically, but you can always uncheck it). +3. Check if you **only want the statuses that are used by this type** to be displayed (this option is disabled per default, but you can always activate it). **Note**: If you have created a [new status](../work-package-status) and want to add it to a workflow of a certain work package type, you need to deselect this option. Only this way also status that are not (yet) used by this type will appear in the list and can be added to a workflow. 4. Click the **Edit** button. diff --git a/docs/system-admin-guide/manage-work-packages/work-package-workflows/Sys-admin-copy-workflow.png b/docs/system-admin-guide/manage-work-packages/work-package-workflows/Sys-admin-copy-workflow.png deleted file mode 100644 index 6e4b4bcf8de3..000000000000 Binary files a/docs/system-admin-guide/manage-work-packages/work-package-workflows/Sys-admin-copy-workflow.png and /dev/null differ diff --git a/docs/system-admin-guide/manage-work-packages/work-package-workflows/Sys-admin-workflow-summary.png b/docs/system-admin-guide/manage-work-packages/work-package-workflows/Sys-admin-workflow-summary.png deleted file mode 100644 index 8fb39d73f125..000000000000 Binary files a/docs/system-admin-guide/manage-work-packages/work-package-workflows/Sys-admin-workflow-summary.png and /dev/null differ diff --git a/docs/system-admin-guide/manage-work-packages/work-package-workflows/System-admin-guide-work-package-workflows.png b/docs/system-admin-guide/manage-work-packages/work-package-workflows/System-admin-guide-work-package-workflows.png index a383bd2d9d5e..73849a7d71e0 100644 Binary files a/docs/system-admin-guide/manage-work-packages/work-package-workflows/System-admin-guide-work-package-workflows.png and b/docs/system-admin-guide/manage-work-packages/work-package-workflows/System-admin-guide-work-package-workflows.png differ diff --git a/docs/system-admin-guide/users-permissions/placeholder-users/system-guide-ph-user-edit-project-role.png b/docs/system-admin-guide/users-permissions/placeholder-users/system-guide-ph-user-edit-project-role.png deleted file mode 100644 index 57914dd3821e..000000000000 Binary files a/docs/system-admin-guide/users-permissions/placeholder-users/system-guide-ph-user-edit-project-role.png and /dev/null differ diff --git a/docs/user-guide/agile-boards/this-is-a-kanban-board.png b/docs/user-guide/agile-boards/this-is-a-kanban-board.png deleted file mode 100644 index 47f7a5dfc269..000000000000 Binary files a/docs/user-guide/agile-boards/this-is-a-kanban-board.png and /dev/null differ diff --git a/docs/user-guide/home/openproject_user_guide_home_page.png b/docs/user-guide/home/openproject_user_guide_home_page.png deleted file mode 100644 index 000650c687da..000000000000 Binary files a/docs/user-guide/home/openproject_user_guide_home_page.png and /dev/null differ diff --git a/docs/user-guide/projects/project-lists/public-project-lists.png b/docs/user-guide/projects/project-lists/public-project-lists.png deleted file mode 100644 index d6ac009cf075..000000000000 Binary files a/docs/user-guide/projects/project-lists/public-project-lists.png and /dev/null differ diff --git a/docs/user-guide/work-packages/edit-work-package/edit-work-package-1566546727784.png b/docs/user-guide/work-packages/edit-work-package/edit-work-package-1566546727784.png deleted file mode 100644 index ef3a9879d7b4..000000000000 Binary files a/docs/user-guide/work-packages/edit-work-package/edit-work-package-1566546727784.png and /dev/null differ 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", 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-lock.json b/frontend/package-lock.json index 13f2ba09074e..9985cbb4d09a 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -47,7 +47,7 @@ "@ngneat/content-loader": "^7.0.0", "@ngx-formly/core": "^6.1.4", "@openproject/octicons-angular": "^19.18.0", - "@openproject/primer-view-components": "^0.43.0", + "@openproject/primer-view-components": "^0.43.1", "@openproject/reactivestates": "^3.0.1", "@primer/css": "^21.3.3", "@types/hotwired__turbo": "^8.0.1", @@ -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", @@ -654,33 +654,29 @@ } }, "node_modules/@angular-eslint/builder": { - "version": "17.5.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-17.5.2.tgz", - "integrity": "sha512-bvegxJuocWeHdvISPfCXeLQPSjrMCEVzxXPg16JJKksKWSeRA1JnbXnfnb7eoLdq1+riMHKqbH6Fs4rORAvUiA==", + "version": "17.5.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-17.5.3.tgz", + "integrity": "sha512-DoPCwt8qp5oMkfxY8V3wygf6/E7zzgXkPCwTRhIelklfpB3nYwLnbRSD8G5hueAU4eyASKiIuhR79E996AuUSw==", "dev": true, - "dependencies": { - "@nx/devkit": "^17.2.8 || ^18.0.0 || ^19.0.0", - "nx": "^17.2.8 || ^18.0.0 || ^19.0.0" - }, "peerDependencies": { "eslint": "^7.20.0 || ^8.0.0", "typescript": "*" } }, "node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "17.5.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-17.5.2.tgz", - "integrity": "sha512-K4hVnMyI98faMJmsA4EOBkD0tapDjWV5gy0j/wJ2uSL46d3JgZPZNJSO1zStf/b3kT4gLOlQ/ulWFiUf1DxgIw==", + "version": "17.5.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-17.5.3.tgz", + "integrity": "sha512-x9jZ6mME9wxumErPGonWERXX/9TJ7mzEkQhOKt3BxBFm0sy9XQqLMAenp1PBSg3RF3rH7EEVdB2+jb75RtHp0g==", "dev": true }, "node_modules/@angular-eslint/eslint-plugin": { - "version": "17.5.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-17.5.2.tgz", - "integrity": "sha512-kzPALKyT5XIEbgoNmY/hEZWdMWKTX56Pap9fVLJSC/b+Nd+MXc7TNly2s0XoC0Ru1/kMiVzbmSGPheu/rw+9aA==", + "version": "17.5.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-17.5.3.tgz", + "integrity": "sha512-2gMRZ+SkiygrPDtCJwMfjmwIFOcvxxC4NRX/MqRo6udsa0gtqPrc8acRbwrmAXlullmhzmaeUfkHpGDSzW8pFw==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "17.5.2", - "@angular-eslint/utils": "17.5.2", + "@angular-eslint/bundled-angular-compiler": "17.5.3", + "@angular-eslint/utils": "17.5.3", "@typescript-eslint/utils": "7.11.0" }, "peerDependencies": { @@ -689,13 +685,13 @@ } }, "node_modules/@angular-eslint/eslint-plugin-template": { - "version": "17.5.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-17.5.2.tgz", - "integrity": "sha512-6sxVwrJ7yElZxcjxHSA0Ujs29bCD/cMubd9n6TDFI9e3v+ktpoMW4Nv/TCHv0OuYatIOZ7bcJxi38cAO8Vhfhw==", + "version": "17.5.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-17.5.3.tgz", + "integrity": "sha512-RkRFagxqBPV2xdNyeQQROUm6I1Izto1Z3Wy73lCk2zq1RhVgbznniH/epmOIE8PMkHmMKmZ765FV++J/90p4Ig==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "17.5.2", - "@angular-eslint/utils": "17.5.2", + "@angular-eslint/bundled-angular-compiler": "17.5.3", + "@angular-eslint/utils": "17.5.3", "@typescript-eslint/type-utils": "7.11.0", "@typescript-eslint/utils": "7.11.0", "aria-query": "5.3.0", @@ -830,12 +826,12 @@ } }, "node_modules/@angular-eslint/template-parser": { - "version": "17.5.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-17.5.2.tgz", - "integrity": "sha512-46emLElmnIUzW0bpEpSf0u05ofRVUwlfttDOMLedhi700peUKbB9Y6iyz3GzAtQCMklBbJC9nR87LQRH9aSlog==", + "version": "17.5.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-17.5.3.tgz", + "integrity": "sha512-NYybOsMkJUtFOW2JWALicipq0kK5+jGwA1MYyRoXjdbDlXltHUb9qkXj7p0fE6uRutBGXDl4288s8g/fZCnAIA==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "17.5.2", + "@angular-eslint/bundled-angular-compiler": "17.5.3", "eslint-scope": "^8.0.0" }, "peerDependencies": { @@ -844,12 +840,12 @@ } }, "node_modules/@angular-eslint/utils": { - "version": "17.5.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-17.5.2.tgz", - "integrity": "sha512-bTMPFqtoetBJsYR/xqREEOCy/CdsKGf2gZkRdH73gG6pOpskWt8J/PbRcMZsC349paV4HFixByVm89inqA0TNg==", + "version": "17.5.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-17.5.3.tgz", + "integrity": "sha512-0nNm1FUOLhVHrdK2PP5dZCYYVmTIkEJ4CmlwpuC4JtCLbD5XAHQpY/ZW5Ff5n1b7KfJt1Zy//jlhkkIaw3LaBQ==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "17.5.2", + "@angular-eslint/bundled-angular-compiler": "17.5.3", "@typescript-eslint/utils": "7.11.0" }, "peerDependencies": { @@ -888,14 +884,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 +4067,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", @@ -4823,9 +4819,9 @@ } }, "node_modules/@openproject/primer-view-components": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@openproject/primer-view-components/-/primer-view-components-0.43.0.tgz", - "integrity": "sha512-Q837a2z0UtD6v8xtFcP9jy7iO3/DIjqTC5G9GfnMIAZB6VGQ77z5m4ip/a1QNdXtDL7kxQCztUh0ROHb6bZ2RQ==", + "version": "0.43.1", + "resolved": "https://registry.npmjs.org/@openproject/primer-view-components/-/primer-view-components-0.43.1.tgz", + "integrity": "sha512-bWAko3ZkPXHmNLFRA96aZC3sr84sMnZf6hwSLHa5P1H6q6eARU9WBMggyMAjaKKQEfOSSxQpa8EB0Ul7/pcJ9Q==", "dependencies": { "@github/auto-check-element": "^5.2.0", "@github/auto-complete-element": "^3.6.2", @@ -4891,9 +4887,9 @@ }, "node_modules/@primer/view-components": { "name": "@openproject/primer-view-components", - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@openproject/primer-view-components/-/primer-view-components-0.43.0.tgz", - "integrity": "sha512-Q837a2z0UtD6v8xtFcP9jy7iO3/DIjqTC5G9GfnMIAZB6VGQ77z5m4ip/a1QNdXtDL7kxQCztUh0ROHb6bZ2RQ==", + "version": "0.43.1", + "resolved": "https://registry.npmjs.org/@openproject/primer-view-components/-/primer-view-components-0.43.1.tgz", + "integrity": "sha512-bWAko3ZkPXHmNLFRA96aZC3sr84sMnZf6hwSLHa5P1H6q6eARU9WBMggyMAjaKKQEfOSSxQpa8EB0Ul7/pcJ9Q==", "dependencies": { "@github/auto-check-element": "^5.2.0", "@github/auto-complete-element": "^3.6.2", @@ -5131,13 +5127,19 @@ "win32" ] }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true + }, "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 +5472,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 +6630,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" } @@ -7351,16 +7335,17 @@ } }, "node_modules/array.prototype.findlastindex": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", - "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -7548,9 +7533,9 @@ } }, "node_modules/axe-core": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.9.1.tgz", - "integrity": "sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz", + "integrity": "sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==", "dev": true, "engines": { "node": ">=4" @@ -8196,9 +8181,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 +9730,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 +9943,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", @@ -10309,9 +10294,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.9.0.tgz", + "integrity": "sha512-McVbYmwA3NEKwRQY5g4aWMdcZE5xZxV8i8l7CqJSrameuGSQJtSWaL/LxTEzSKKaCcOhlpDR8XEfYXWPrdo/ZQ==", "dev": true, "dependencies": { "debug": "^3.2.7" @@ -10341,26 +10326,27 @@ "dev": true }, "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz", + "integrity": "sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==", "dev": true, "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", "array.prototype.flat": "^1.3.2", "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", + "eslint-module-utils": "^2.9.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", "semver": "^6.3.1", "tsconfig-paths": "^3.15.0" }, @@ -10436,17 +10422,17 @@ } }, "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz", - "integrity": "sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.0.tgz", + "integrity": "sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==", "dev": true, "dependencies": { "aria-query": "~5.1.3", "array-includes": "^3.1.8", "array.prototype.flatmap": "^1.3.2", "ast-types-flow": "^0.0.8", - "axe-core": "^4.9.1", - "axobject-query": "~3.1.1", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", "es-iterator-helpers": "^1.0.19", @@ -10462,7 +10448,7 @@ "node": ">=4.0" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { @@ -10475,18 +10461,18 @@ } }, "node_modules/eslint-plugin-jsx-a11y/node_modules/axobject-query": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", - "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", "dev": true, - "dependencies": { - "deep-equal": "^2.0.5" + "engines": { + "node": ">= 0.4" } }, "node_modules/eslint-plugin-react": { - "version": "7.35.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz", - "integrity": "sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==", + "version": "7.35.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.2.tgz", + "integrity": "sha512-Rbj2R9zwP2GYNcIak4xoAMV57hrBh3hTaR0k7hVjwCQgryE/pw5px4b13EYjduOI0hfXyZhwBxaGpOTbWSGzKQ==", "dev": true, "dependencies": { "array-includes": "^3.1.8", @@ -13183,11 +13169,14 @@ } }, "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -16365,15 +16354,17 @@ } }, "node_modules/object.groupby": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", - "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/object.pick": { @@ -21534,25 +21525,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 +21550,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 +21921,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 +22324,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 +22351,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 +22396,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 +22516,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 +22545,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", @@ -22555,40 +22557,36 @@ } }, "@angular-eslint/builder": { - "version": "17.5.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-17.5.2.tgz", - "integrity": "sha512-bvegxJuocWeHdvISPfCXeLQPSjrMCEVzxXPg16JJKksKWSeRA1JnbXnfnb7eoLdq1+riMHKqbH6Fs4rORAvUiA==", - "dev": true, - "requires": { - "@nx/devkit": "^17.2.8 || ^18.0.0 || ^19.0.0", - "nx": "^17.2.8 || ^18.0.0 || ^19.0.0" - } + "version": "17.5.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-17.5.3.tgz", + "integrity": "sha512-DoPCwt8qp5oMkfxY8V3wygf6/E7zzgXkPCwTRhIelklfpB3nYwLnbRSD8G5hueAU4eyASKiIuhR79E996AuUSw==", + "dev": true }, "@angular-eslint/bundled-angular-compiler": { - "version": "17.5.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-17.5.2.tgz", - "integrity": "sha512-K4hVnMyI98faMJmsA4EOBkD0tapDjWV5gy0j/wJ2uSL46d3JgZPZNJSO1zStf/b3kT4gLOlQ/ulWFiUf1DxgIw==", + "version": "17.5.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-17.5.3.tgz", + "integrity": "sha512-x9jZ6mME9wxumErPGonWERXX/9TJ7mzEkQhOKt3BxBFm0sy9XQqLMAenp1PBSg3RF3rH7EEVdB2+jb75RtHp0g==", "dev": true }, "@angular-eslint/eslint-plugin": { - "version": "17.5.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-17.5.2.tgz", - "integrity": "sha512-kzPALKyT5XIEbgoNmY/hEZWdMWKTX56Pap9fVLJSC/b+Nd+MXc7TNly2s0XoC0Ru1/kMiVzbmSGPheu/rw+9aA==", + "version": "17.5.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-17.5.3.tgz", + "integrity": "sha512-2gMRZ+SkiygrPDtCJwMfjmwIFOcvxxC4NRX/MqRo6udsa0gtqPrc8acRbwrmAXlullmhzmaeUfkHpGDSzW8pFw==", "dev": true, "requires": { - "@angular-eslint/bundled-angular-compiler": "17.5.2", - "@angular-eslint/utils": "17.5.2", + "@angular-eslint/bundled-angular-compiler": "17.5.3", + "@angular-eslint/utils": "17.5.3", "@typescript-eslint/utils": "7.11.0" } }, "@angular-eslint/eslint-plugin-template": { - "version": "17.5.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-17.5.2.tgz", - "integrity": "sha512-6sxVwrJ7yElZxcjxHSA0Ujs29bCD/cMubd9n6TDFI9e3v+ktpoMW4Nv/TCHv0OuYatIOZ7bcJxi38cAO8Vhfhw==", + "version": "17.5.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-17.5.3.tgz", + "integrity": "sha512-RkRFagxqBPV2xdNyeQQROUm6I1Izto1Z3Wy73lCk2zq1RhVgbznniH/epmOIE8PMkHmMKmZ765FV++J/90p4Ig==", "dev": true, "requires": { - "@angular-eslint/bundled-angular-compiler": "17.5.2", - "@angular-eslint/utils": "17.5.2", + "@angular-eslint/bundled-angular-compiler": "17.5.3", + "@angular-eslint/utils": "17.5.3", "@typescript-eslint/type-utils": "7.11.0", "@typescript-eslint/utils": "7.11.0", "aria-query": "5.3.0", @@ -22681,22 +22679,22 @@ } }, "@angular-eslint/template-parser": { - "version": "17.5.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-17.5.2.tgz", - "integrity": "sha512-46emLElmnIUzW0bpEpSf0u05ofRVUwlfttDOMLedhi700peUKbB9Y6iyz3GzAtQCMklBbJC9nR87LQRH9aSlog==", + "version": "17.5.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-17.5.3.tgz", + "integrity": "sha512-NYybOsMkJUtFOW2JWALicipq0kK5+jGwA1MYyRoXjdbDlXltHUb9qkXj7p0fE6uRutBGXDl4288s8g/fZCnAIA==", "dev": true, "requires": { - "@angular-eslint/bundled-angular-compiler": "17.5.2", + "@angular-eslint/bundled-angular-compiler": "17.5.3", "eslint-scope": "^8.0.0" } }, "@angular-eslint/utils": { - "version": "17.5.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-17.5.2.tgz", - "integrity": "sha512-bTMPFqtoetBJsYR/xqREEOCy/CdsKGf2gZkRdH73gG6pOpskWt8J/PbRcMZsC349paV4HFixByVm89inqA0TNg==", + "version": "17.5.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-17.5.3.tgz", + "integrity": "sha512-0nNm1FUOLhVHrdK2PP5dZCYYVmTIkEJ4CmlwpuC4JtCLbD5XAHQpY/ZW5Ff5n1b7KfJt1Zy//jlhkkIaw3LaBQ==", "dev": true, "requires": { - "@angular-eslint/bundled-angular-compiler": "17.5.2", + "@angular-eslint/bundled-angular-compiler": "17.5.3", "@typescript-eslint/utils": "7.11.0" } }, @@ -22718,14 +22716,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 +24874,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", @@ -25369,9 +25367,9 @@ } }, "@openproject/primer-view-components": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@openproject/primer-view-components/-/primer-view-components-0.43.0.tgz", - "integrity": "sha512-Q837a2z0UtD6v8xtFcP9jy7iO3/DIjqTC5G9GfnMIAZB6VGQ77z5m4ip/a1QNdXtDL7kxQCztUh0ROHb6bZ2RQ==", + "version": "0.43.1", + "resolved": "https://registry.npmjs.org/@openproject/primer-view-components/-/primer-view-components-0.43.1.tgz", + "integrity": "sha512-bWAko3ZkPXHmNLFRA96aZC3sr84sMnZf6hwSLHa5P1H6q6eARU9WBMggyMAjaKKQEfOSSxQpa8EB0Ul7/pcJ9Q==", "requires": { "@github/auto-check-element": "^5.2.0", "@github/auto-complete-element": "^3.6.2", @@ -25418,7 +25416,7 @@ "integrity": "sha512-h2ITbCj415T1JpWQDeQd1xYL6TrzkehfUOXxnV0FpblYyMsVBAks6LL7HGJ+ZrydG+Ds0i1rvvi8Q61jErieNA==", "requires": { "@primer/primitives": "^8.2.0", - "@primer/view-components": "npm:@openproject/primer-view-components@^0.43.0" + "@primer/view-components": "npm:@openproject/primer-view-components@^0.43.1" } }, "@primer/primitives": { @@ -25427,9 +25425,9 @@ "integrity": "sha512-K8A/DA6xv8P/kD/9DupFn+KYlo06OpcrwfwJf+sKp+KnX7ZRwLLDg1AaEGAoRoaykXRY/gfrXlgDfK7laOTWyA==" }, "@primer/view-components": { - "version": "npm:@openproject/primer-view-components@0.43.0", - "resolved": "https://registry.npmjs.org/@openproject/primer-view-components/-/primer-view-components-0.43.0.tgz", - "integrity": "sha512-Q837a2z0UtD6v8xtFcP9jy7iO3/DIjqTC5G9GfnMIAZB6VGQ77z5m4ip/a1QNdXtDL7kxQCztUh0ROHb6bZ2RQ==", + "version": "npm:@openproject/primer-view-components@0.43.1", + "resolved": "https://registry.npmjs.org/@openproject/primer-view-components/-/primer-view-components-0.43.1.tgz", + "integrity": "sha512-bWAko3ZkPXHmNLFRA96aZC3sr84sMnZf6hwSLHa5P1H6q6eARU9WBMggyMAjaKKQEfOSSxQpa8EB0Ul7/pcJ9Q==", "requires": { "@github/auto-check-element": "^5.2.0", "@github/auto-complete-element": "^3.6.2", @@ -25571,13 +25569,19 @@ "integrity": "sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA==", "optional": true }, + "@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": 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 +25852,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 +26714,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", @@ -27254,16 +27240,17 @@ } }, "array.prototype.findlastindex": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", - "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" } }, "array.prototype.flat": { @@ -27386,9 +27373,9 @@ } }, "axe-core": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.9.1.tgz", - "integrity": "sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz", + "integrity": "sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==", "dev": true }, "axios": { @@ -27852,9 +27839,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 +28991,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 +29165,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", @@ -29583,9 +29570,9 @@ } }, "eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.9.0.tgz", + "integrity": "sha512-McVbYmwA3NEKwRQY5g4aWMdcZE5xZxV8i8l7CqJSrameuGSQJtSWaL/LxTEzSKKaCcOhlpDR8XEfYXWPrdo/ZQ==", "dev": true, "requires": { "debug": "^3.2.7" @@ -29609,26 +29596,27 @@ "dev": true }, "eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz", + "integrity": "sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==", "dev": true, "requires": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", "array.prototype.flat": "^1.3.2", "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", + "eslint-module-utils": "^2.9.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", "semver": "^6.3.1", "tsconfig-paths": "^3.15.0" }, @@ -29687,17 +29675,17 @@ "dev": true }, "eslint-plugin-jsx-a11y": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz", - "integrity": "sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.0.tgz", + "integrity": "sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==", "dev": true, "requires": { "aria-query": "~5.1.3", "array-includes": "^3.1.8", "array.prototype.flatmap": "^1.3.2", "ast-types-flow": "^0.0.8", - "axe-core": "^4.9.1", - "axobject-query": "~3.1.1", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", "es-iterator-helpers": "^1.0.19", @@ -29720,20 +29708,17 @@ } }, "axobject-query": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", - "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", - "dev": true, - "requires": { - "deep-equal": "^2.0.5" - } + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true } } }, "eslint-plugin-react": { - "version": "7.35.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz", - "integrity": "sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==", + "version": "7.35.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.2.tgz", + "integrity": "sha512-Rbj2R9zwP2GYNcIak4xoAMV57hrBh3hTaR0k7hVjwCQgryE/pw5px4b13EYjduOI0hfXyZhwBxaGpOTbWSGzKQ==", "dev": true, "requires": { "array-includes": "^3.1.8", @@ -31637,11 +31622,11 @@ "dev": true }, "is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "requires": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" } }, "is-data-descriptor": { @@ -34001,15 +33986,14 @@ } }, "object.groupby": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", - "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" } }, "object.pick": { @@ -37687,25 +37671,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 +37696,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 +37744,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" + } } } }, diff --git a/frontend/package.json b/frontend/package.json index 6ab4fc9227f5..e05262b32769 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -99,7 +99,7 @@ "@ngneat/content-loader": "^7.0.0", "@ngx-formly/core": "^6.1.4", "@openproject/octicons-angular": "^19.18.0", - "@openproject/primer-view-components": "^0.43.0", + "@openproject/primer-view-components": "^0.43.1", "@openproject/reactivestates": "^3.0.1", "@primer/css": "^21.3.3", "@types/hotwired__turbo": "^8.0.1", @@ -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", @@ -177,6 +176,6 @@ "generate-typings": "tsc -d -p src/tsconfig.app.json" }, "overrides": { - "@primer/view-components": "npm:@openproject/primer-view-components@^0.43.0" + "@primer/view-components": "npm:@openproject/primer-view-components@^0.43.1" } } diff --git a/frontend/src/app/features/homescreen/blocks/new-features.component.ts b/frontend/src/app/features/homescreen/blocks/new-features.component.ts index 2079a0ed843d..62ae851dbcf5 100644 --- a/frontend/src/app/features/homescreen/blocks/new-features.component.ts +++ b/frontend/src/app/features/homescreen/blocks/new-features.component.ts @@ -33,9 +33,9 @@ import { I18nService } from 'core-app/core/i18n/i18n.service'; import { imagePath } from 'core-app/shared/helpers/images/path-helper'; // The key used in the I18n files to distinguish between versions. -const OpVersionI18n = '14_4'; +const OpVersionI18n = '14_5'; -const OpReleaseURL = 'https://www.openproject.org/docs/release-notes/14-4-0/'; +const OpReleaseURL = 'https://www.openproject.org/docs/release-notes/14-5-0/'; /** Update the teaser image to the next version */ const featureTeaserImage = `${OpVersionI18n}_features.png`; diff --git a/frontend/src/app/features/in-app-notifications/entry/in-app-notification-entry.component.sass b/frontend/src/app/features/in-app-notifications/entry/in-app-notification-entry.component.sass index ef1f362d7cb3..c16e294dd393 100644 --- a/frontend/src/app/features/in-app-notifications/entry/in-app-notification-entry.component.sass +++ b/frontend/src/app/features/in-app-notifications/entry/in-app-notification-entry.component.sass @@ -4,8 +4,8 @@ $ian-bg-color: var(--body-background) $ian-bg-hover-color: var(--bgColor-neutral-muted) $ian-bg-read-color: var(--bgColor-muted) $ian-bg-read-hover-color: hsl(from var(--bgColor-neutral-muted) h s calc(l - 0.5)) -$ian-bg-selected-color: var(--selection-bgColor) -$ian-bg-selected-hover-color: hsl(from var(--selection-bgColor) h calc(s - 30) l) +$ian-bg-selected-color: var(--codeMirror-selection-bgColor) +$ian-bg-selected-hover-color: hsl(from var(--codeMirror-selection-bgColor) h calc(s - 30) l) // This needs to be set in the itemSize of // the virtual scroller $ian-height: 100px diff --git a/frontend/src/app/features/work-packages/components/wp-query/url-params-helper.ts b/frontend/src/app/features/work-packages/components/wp-query/url-params-helper.ts index 732275709123..e20bd87ca98d 100644 --- a/frontend/src/app/features/work-packages/components/wp-query/url-params-helper.ts +++ b/frontend/src/app/features/work-packages/components/wp-query/url-params-helper.ts @@ -95,6 +95,7 @@ export interface QueryRequestParams { groupBy:string|null; filters:string; sortBy:string; + query_id:string|null; timestamps:string; valid_subset?:boolean; } diff --git a/frontend/src/app/features/work-packages/components/wp-table/configuration-modal/tabs/display-settings-tab.component.html b/frontend/src/app/features/work-packages/components/wp-table/configuration-modal/tabs/display-settings-tab.component.html index 8615d86ae59d..38c909af1731 100644 --- a/frontend/src/app/features/work-packages/components/wp-table/configuration-modal/tabs/display-settings-tab.component.html +++ b/frontend/src/app/features/work-packages/components/wp-table/configuration-modal/tabs/display-settings-tab.component.html @@ -8,10 +8,8 @@ [(ngModel)]="displayMode" value="default" name="display_mode_switch"> - - &ngsp; + - &ngsp; @@ -23,10 +21,8 @@ [(ngModel)]="displayMode" value="hierarchy" name="display_mode_switch"> - - &ngsp; + - &ngsp; @@ -40,10 +36,8 @@ [(ngModel)]="displayMode" value="grouped" name="display_mode_switch"> - - &ngsp; + - &ngsp;