diff --git a/.github/workflows/continuous-delivery.yml b/.github/workflows/continuous-delivery.yml index 24d6f427c1b..aefdc7c153d 100644 --- a/.github/workflows/continuous-delivery.yml +++ b/.github/workflows/continuous-delivery.yml @@ -5,6 +5,8 @@ on: - dev - release/* - stable/* + tags: + - 'v*.*.*' permissions: contents: read @@ -12,7 +14,7 @@ jobs: trigger_downstream_workflow: permissions: contents: none - if: github.repository == 'opf/openproject' + if: github.repository == 'opf/openproject' && github.ref_type == 'branch' runs-on: ubuntu-latest steps: - name: Trigger Flavours workflow @@ -29,3 +31,30 @@ jobs: -XPOST -H"Accept: application/vnd.github.v3+json" \ https://api.github.com/repos/$REPOSITORY/actions/workflows/$WORKFLOW_ID/dispatches \ -d "$PAYLOAD" + + trigger_stable_tag_workflow: + permissions: + contents: none + if: github.repository == 'opf/openproject' && github.ref_type == 'tag' + runs-on: ubuntu-latest + steps: + - name: Trigger Flavours stable workflow for tag + env: + TOKEN: ${{ secrets.OPENPROJECTCI_FLAVOUR_TRIGGER_TOKEN }} + REPOSITORY: opf/openproject-flavours + WORKFLOW_ID: ci-stable.yml + TAG_NAME: ${{ github.ref_name }} + THIS_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + run: | + TAG="${TAG_NAME#v}" # strip leading 'v': 17.3.1 + MINOR="${TAG%.*}" # strip patch: 17.3 + BRANCH="release/$MINOR" # release/17.3 + PAYLOAD=$(jq -n \ + --arg ref "$BRANCH" \ + --arg tag "$TAG" \ + --arg triggered_by_url "$THIS_RUN_URL" \ + '{"ref": "dev", "inputs": {"ref": $ref, "tag": $tag, "triggered_by_url": $triggered_by_url}}') + curl -i --fail-with-body -H"authorization: Bearer $TOKEN" \ + -XPOST -H"Accept: application/vnd.github.v3+json" \ + https://api.github.com/repos/$REPOSITORY/actions/workflows/$WORKFLOW_ID/dispatches \ + -d "$PAYLOAD" diff --git a/.github/workflows/erb-lint-core.yml b/.github/workflows/erb-lint-core.yml new file mode 100644 index 00000000000..5432af20e0c --- /dev/null +++ b/.github/workflows/erb-lint-core.yml @@ -0,0 +1,31 @@ +name: ERB lint + +on: + pull_request: + paths: + - '**/*.erb' + - '.erb_lint.yml' + - '.erb_linters/**' + +jobs: + erb-lint: + name: ERB lint + runs-on: ubuntu-latest + permissions: + contents: read + checks: write + steps: + - name: Checkout code + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + - name: Set up Ruby + uses: ruby/setup-ruby@afeafc3d1ab54a631816aba4c914a0081c12ff2f # v1 + with: + bundler-cache: true + - name: Run ERB lint + uses: opf/action-erblint@49c54b56c60d0c50885065468cf149b61d5c2a60 # main + with: + reporter: github-pr-annotations + fail_level: any + use_bundler: true diff --git a/.github/workflows/eslint-core.yml b/.github/workflows/eslint-core.yml index 556be271976..ea7ba16eb06 100644 --- a/.github/workflows/eslint-core.yml +++ b/.github/workflows/eslint-core.yml @@ -1,4 +1,5 @@ -name: eslint +name: ESLint + on: pull_request: branches: @@ -11,24 +12,28 @@ on: jobs: eslint: - name: eslint + name: ESLint runs-on: ubuntu-latest permissions: contents: read checks: write steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + - name: Checkout code + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: fetch-depth: 0 persist-credentials: false - - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 + - name: Set up Node + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 with: node-version: '22.22.3' package-manager-cache: false cache: npm cache-dependency-path: frontend/package-lock.json - - uses: reviewdog/action-eslint@556a3fdaf8b4201d4d74d406013386aa4f7dab96 # v1 + - name: Run ESLint + uses: reviewdog/action-eslint@556a3fdaf8b4201d4d74d406013386aa4f7dab96 # v1 with: - reporter: github-pr-check + reporter: github-pr-annotations + fail_level: any workdir: 'frontend/' eslint_flags: 'src/' diff --git a/.github/workflows/rubocop-core.yml b/.github/workflows/rubocop-core.yml index 11e8d647c7f..8906c1a9dbb 100644 --- a/.github/workflows/rubocop-core.yml +++ b/.github/workflows/rubocop-core.yml @@ -1,4 +1,4 @@ -name: rubocop +name: RuboCop on: pull_request: @@ -7,22 +7,23 @@ on: jobs: rubocop: - name: rubocop + name: RuboCop runs-on: ubuntu-latest permissions: contents: read checks: write steps: - name: Checkout code - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Set up Ruby uses: ruby/setup-ruby@afeafc3d1ab54a631816aba4c914a0081c12ff2f # v1 - - name: Run Rubocop + - name: Run RuboCop uses: reviewdog/action-rubocop@b6d5e953a5fc0bf3ab65254e77730ea2174d6d6d # v2 with: - github_token: ${{ secrets.github_token }} + reporter: github-pr-annotations + fail_level: any rubocop_version: gemfile rubocop_extensions: > rubocop-capybara:gemfile @@ -32,13 +33,4 @@ jobs: rubocop-rails:gemfile rubocop-rspec:gemfile rubocop-rspec_rails:gemfile - reporter: github-pr-check only_changed: true - - name: Install erb_lint - run: gem install -N erb_lint erblint-github - - name: Run erb-lint - uses: tk0miya/action-erblint@44c5fe3552356fe8bff23f30d534aa4258aa3f7b # v1 - with: - github_token: ${{ secrets.github_token }} - reporter: github-pr-check - fail_on_error: true diff --git a/.github/workflows/yamllint-core.yml b/.github/workflows/yamllint-core.yml index 496f8006a1a..0e756d43eb3 100644 --- a/.github/workflows/yamllint-core.yml +++ b/.github/workflows/yamllint-core.yml @@ -1,4 +1,4 @@ -name: yamllint +name: Yamllint on: pull_request: @@ -9,23 +9,23 @@ on: - 'modules/*/config/locales/en.yml' - 'modules/*/config/locales/js-en.yml' -permissions: {} - jobs: - rubocop: - name: yamllint + yamllint: + name: Yamllint runs-on: ubuntu-latest + permissions: + contents: read + checks: write steps: - name: Checkout code uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - - name: Run Yamllint uses: reviewdog/action-yamllint@f01d8a48fd8d89f89895499fca2cff09f9e9e8c0 # v1.21.0 with: - github_token: ${{ secrets.github_token }} - fail_level: error + reporter: github-pr-annotations + fail_level: any yamllint_flags: > .yamllint.yml config/locales/en.yml diff --git a/Gemfile b/Gemfile index ff9b6d8f7bf..ead46f54662 100644 --- a/Gemfile +++ b/Gemfile @@ -125,10 +125,10 @@ gem "sys-filesystem", "~> 1.5.0", require: false gem "bcrypt", "~> 3.1.22" gem "multi_json", "~> 1.20.0" -gem "oj", "~> 3.17.0" +gem "oj", "~> 3.17.3" gem "daemons" -gem "good_job", "~> 4.18.2" # update should be done manually in sync with saas-openproject version. +gem "good_job", "~> 4.19.0" # update should be done manually in sync with saas-openproject version. gem "rack-protection", "~> 3.2.0" @@ -276,7 +276,7 @@ group :test do gem "rspec-rails", "~> 8.0.4", group: :development # Retry failures within the same environment - gem "retriable", "~> 3.5.0" + gem "retriable", "~> 3.8.0" gem "rspec-retry", "~> 0.6.1" # Accessibility tests diff --git a/Gemfile.lock b/Gemfile.lock index 538e19e15ec..7e5d31f5ed3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -634,7 +634,7 @@ GEM glob (0.5.0) globalid (1.3.0) activesupport (>= 6.1) - good_job (4.18.2) + good_job (4.19.0) activejob (>= 6.1.0) activerecord (>= 6.1.0) concurrent-ruby (>= 1.3.1) @@ -755,7 +755,7 @@ GEM jmespath (1.6.2) job-iteration (1.14.0) activejob (>= 7.1) - json (2.19.7) + json (2.19.8) json-jwt (1.17.1) activesupport (>= 4.2) aes_key_wrap @@ -853,7 +853,7 @@ GEM mustermann (>= 1.0.0) net-http (0.9.1) uri (>= 0.11.1) - net-imap (0.6.4) + net-imap (0.6.4.1) date net-protocol net-ldap (0.20.0) @@ -882,7 +882,7 @@ GEM racc (~> 1.4) nokogiri (1.19.3-x86_64-linux-musl) racc (~> 1.4) - oj (3.17.1) + oj (3.17.3) bigdecimal (>= 3.0) ostruct (>= 0.2) okcomputer (1.19.2) @@ -1184,7 +1184,7 @@ GEM pry-rescue (1.6.0) interception (>= 0.5) pry (>= 0.12.0) - psych (5.3.1) + psych (5.4.0) date stringio public_suffix (7.0.5) @@ -1303,7 +1303,7 @@ GEM responders (3.2.0) actionpack (>= 7.0) railties (>= 7.0) - retriable (3.5.0) + retriable (3.8.0) rexml (3.4.4) rinku (2.0.6) roar (1.2.0) @@ -1630,7 +1630,7 @@ DEPENDENCIES friendly_id (~> 5.7.0) fuubar (~> 2.5.0) globalid (~> 1.3) - good_job (~> 4.18.2) + good_job (~> 4.19.0) google-apis-gmail_v1 googleauth grape (~> 3.2.0) @@ -1665,7 +1665,7 @@ DEPENDENCIES my_page! net-ldap (~> 0.20.0) nokogiri (~> 1.19.2) - oj (~> 3.17.0) + oj (~> 3.17.3) okcomputer (~> 1.19.1) omniauth! omniauth-openid-connect! @@ -1733,7 +1733,7 @@ DEPENDENCIES redis (~> 5.4.0) request_store (~> 1.7.0) responders (~> 3.2) - retriable (~> 3.5.0) + retriable (~> 3.8.0) rinku (~> 2.0.4) roar (~> 1.2.0) rouge (~> 4.7.0) @@ -1948,7 +1948,7 @@ CHECKSUMS fuubar (2.5.1) sha256=b272a7804b282661c7fab583a3764f92543cb482c365ae39c685cd218fdd4880 glob (0.5.0) sha256=6397ae620b2f71b00424ec6c880c92d5ddcf6c44e6035c0b610a59efe16418fd globalid (1.3.0) sha256=05c639ad6eb4594522a0b07983022f04aa7254626ab69445a0e493aa3786ff11 - good_job (4.18.2) sha256=7e557a15865fc7b7ad4ab71644cf1d4189a2a1869d3b381e5e88741c540beca6 + good_job (4.19.0) sha256=7fad3ce174d2c1b4bfde4e84056076b00ac81719b5d679900c53671a721284b9 google-apis-core (1.0.2) sha256=ba4579aaadc902d6cc7bc8db88f566ab00f5e31ea87ab41e9f9a032c470f2629 google-apis-gmail_v1 (0.51.0) sha256=cec89406ee645e71697a0eb0237e972df213d4dde86a772b05979175c48a6d11 google-cloud-env (2.3.1) sha256=0faac01eb27be78c2591d64433663b1a114f8f7af55a4f819755426cac9178e7 @@ -1992,7 +1992,7 @@ CHECKSUMS iso8601 (0.13.0) sha256=298c2b15b7be5fa95a1372813d36a2257656cd8e906dfbc1f5cb409851425aa2 jmespath (1.6.2) sha256=238d774a58723d6c090494c8879b5e9918c19485f7e840f2c1c7532cf84ebcb1 job-iteration (1.14.0) sha256=f154f978109acc838c0359ecde2fdd4dccc3382f95a22e03a58ac561a3615224 - json (2.19.7) sha256=fe432c8639f6efff69f9d73b518a3705d9581ab93156f981ea72806e1e5bcc3e + json (2.19.8) sha256=6354310fd76ef69b87d5bd1f38b40d730613baf90b6803d2d0a48f618d32dfaa json-jwt (1.17.1) sha256=5e1ced0f7b206b4c567efee19e6503c1426a819749132926cda579ec013d1f46 json-schema (6.2.0) sha256=e8bff46ed845a22c1ab2bd0d7eccf831c01fe23bb3920caa4c74db4306813666 json_schemer (2.5.0) sha256=2f01fb4cce721a4e08dd068fc2030cffd0702a7f333f1ea2be6e8991f00ae396 @@ -2030,7 +2030,7 @@ CHECKSUMS mustermann-grape (1.1.0) sha256=8d258a986004c8f01ce4c023c0b037c168a9ed889cf5778068ad54398fa458c5 my_page (1.0.0) net-http (0.9.1) sha256=25ba0b67c63e89df626ed8fac771d0ad24ad151a858af2cc8e6a716ca4336996 - net-imap (0.6.4) sha256=9a5598c67a3022c284d98430ef1d4948e7dbdb62596f61081ea8ca933270a02b + net-imap (0.6.4.1) sha256=29f0360d75a7efd3539f16ac1957dea5c0a51ddeceb348db4553c3120914ea0d net-ldap (0.20.0) sha256=b2080b350753a9ac4930869ded8e61a1d2151c01e03b0bf07b4675cbd9ce5372 net-pop (0.1.2) sha256=848b4e982013c15b2f0382792268763b748cce91c9e91e36b0f27ed26420dff3 net-protocol (0.2.2) sha256=aa73e0cba6a125369de9837b8d8ef82a61849360eba0521900e2c3713aa162a8 @@ -2044,7 +2044,7 @@ CHECKSUMS nokogiri (1.19.3-x86_64-darwin) sha256=77f3fba57d46c53ab31e62fc6c28f705109d1bf6264356c76f132b2be5728d4d nokogiri (1.19.3-x86_64-linux-gnu) sha256=2f5078620fe12e83669b5b17311b32532a8153d02eee7ad06948b926d6080976 nokogiri (1.19.3-x86_64-linux-musl) sha256=248c906d2166eca5efb56d52fdee5f9a1f51d69a72e2b64fdac647b4ce39ea3f - oj (3.17.1) sha256=b00687f10bf68a32bfb633b87624174faf0989a5c96aff2f3f96f992717ce782 + oj (3.17.3) sha256=ebe3967b0bb7ac4f206561d0d9ac8875b9973f778600d7b61b5c355662a707ed okcomputer (1.19.2) sha256=d069aedf1e31b8ebe7e1fdf9e327dee158ea49b9fbdebebc2f1bed4690cb7a6d omniauth (1.9.2) omniauth-openid-connect (0.5.0) @@ -2175,7 +2175,7 @@ CHECKSUMS pry-byebug (3.12.0) sha256=594e094ae8a8390a7ad4c7b36ae36e13304ed02664c67417d108dc5f7213d1b7 pry-rails (0.3.11) sha256=a69e28e24a34d75d1f60bcf241192a54253f8f7ef8a62cba1e75750a9653593d pry-rescue (1.6.0) sha256=985bfd506d9866b587fd86790cf8445266a41b7f92c627fc5b21ec7d92aba6db - psych (5.3.1) sha256=eb7a57cef10c9d70173ff74e739d843ac3b2c019a003de48447b2963d81b1974 + psych (5.4.0) sha256=14f72d69a611af663d7d70e4a7b67d9eb1f3ae9f8d916b478961d5a0075ba5b7 public_suffix (7.0.5) sha256=1a8bb08f1bbea19228d3bed6e5ed908d1cb4f7c2726d18bd9cadf60bc676f623 puffing-billy (4.0.4) sha256=87015b0c41e0722b2171a0c5aa8130fd3f58aa1c016a1dc6dc569b2028aa846f puma (8.0.2) sha256=c8ed871dfbbe66448ea9ffd46692342d9804d4071522b52b5331b7b6e7b686fb @@ -2217,7 +2217,7 @@ CHECKSUMS representable (3.2.0) sha256=cc29bf7eebc31653586849371a43ffe36c60b54b0a6365b5f7d95ec34d1ebace request_store (1.7.0) sha256=e1b75d5346a315f452242a68c937ef8e48b215b9453a77a6c0acdca2934c88cb responders (3.2.0) sha256=89c2d6ac0ae16f6458a11524cae4a8efdceba1a3baea164d28ee9046bd3df55a - retriable (3.5.0) sha256=2e48ab1256ab2f18713f08786d2a58ec7b8a42bb5c791efa7e965f7bd2b915c0 + retriable (3.8.0) sha256=9f2f1b0207594c7817f17f671587b8ec7587387ac6cebda6c941a802bb98a8e5 rexml (3.4.4) sha256=19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142 rinku (2.0.6) sha256=8b60670e3143f3db2b37efa262971ce3619ec23092045498ef9f077d82828d7d roar (1.2.0) sha256=8db4d1ca79c57a5fb746c16c0d5661d7c3e0de3d9553dc016a88d2dba2929d08 diff --git a/app/components/op_primer/quick_filter/boolean_component.rb b/app/components/op_primer/quick_filter/boolean_component.rb index 2de711821b4..b5149afb90e 100644 --- a/app/components/op_primer/quick_filter/boolean_component.rb +++ b/app/components/op_primer/quick_filter/boolean_component.rb @@ -30,7 +30,7 @@ module OpPrimer module QuickFilter - class BooleanComponent < SegmentedComponent + class BooleanComponent < SegmentedControlComponent def initialize(name:, query:, filter_key:, path_args:, true_label: t(:general_text_Yes), false_label: t(:general_text_No), orders: nil) super(name:, query:, filter_key:, path_args:, orders:) diff --git a/app/components/op_primer/quick_filter/segmented_component/item.rb b/app/components/op_primer/quick_filter/item.rb similarity index 83% rename from app/components/op_primer/quick_filter/segmented_component/item.rb rename to app/components/op_primer/quick_filter/item.rb index 604aa78e3ff..1cc41d343a9 100644 --- a/app/components/op_primer/quick_filter/segmented_component/item.rb +++ b/app/components/op_primer/quick_filter/item.rb @@ -26,20 +26,18 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # See COPYRIGHT and LICENSE files for more details. -#++ +# ++ module OpPrimer module QuickFilter - class SegmentedComponent < ApplicationComponent - class Item < ApplicationComponent - attr_reader :label, :value + class Item < ApplicationComponent + attr_reader :label, :value - def initialize(label:, value:) - super + def initialize(label:, value:) + super - @label = label - @value = value - end + @label = label + @value = value end end end diff --git a/app/components/op_primer/quick_filter/segmented_component.html.erb b/app/components/op_primer/quick_filter/segmented_control_component.html.erb similarity index 100% rename from app/components/op_primer/quick_filter/segmented_component.html.erb rename to app/components/op_primer/quick_filter/segmented_control_component.html.erb diff --git a/app/components/op_primer/quick_filter/segmented_component.rb b/app/components/op_primer/quick_filter/segmented_control_component.rb similarity index 95% rename from app/components/op_primer/quick_filter/segmented_component.rb rename to app/components/op_primer/quick_filter/segmented_control_component.rb index 0ead8fbb7fc..daa0fa332c9 100644 --- a/app/components/op_primer/quick_filter/segmented_component.rb +++ b/app/components/op_primer/quick_filter/segmented_control_component.rb @@ -30,11 +30,11 @@ module OpPrimer module QuickFilter - class SegmentedComponent < ApplicationComponent + class SegmentedControlComponent < ApplicationComponent include ApplicationHelper include OpTurbo::Streamable - renders_many :items, Item + renders_many :items, OpPrimer::QuickFilter::Item def initialize(name:, query:, filter_key:, path_args:, orders: nil) super diff --git a/app/components/op_primer/quick_filter/select_panel_component.html.erb b/app/components/op_primer/quick_filter/select_panel_component.html.erb new file mode 100644 index 00000000000..e0f15707a1a --- /dev/null +++ b/app/components/op_primer/quick_filter/select_panel_component.html.erb @@ -0,0 +1,72 @@ +<%#-- 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. + +++#%> + +
Hello,
A new project has been created: projectValue:name
Thank you
\n" + notification_text_default: "Dobrý den,
Byl vytvořen nový projekt: projectValue:name
Děkujeme
\n" work_packages_identifier: page_header: description: Choose between classic numerical work package IDs or semantic project-specific ones that prepend the project identifier to the work package ID. @@ -497,10 +497,10 @@ cs: statuses_removal_dialog: title: Remove statuses heading: - one: Remove 1 status? - few: Remove %{count} statuses? - many: Remove %{count} statuses? - other: Remove %{count} statuses? + one: Odstranit 1 stav? + few: Odstranit %{count} stavy? + many: Odstranit %{count} stavů? + other: Odstranit %{count} stavů? description: Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed? confirm: Odstranit leave_confirmation: @@ -716,7 +716,7 @@ cs: all: Allows the user to assign multiple values to this custom field. project: Allows the user to assign multiple values to this attribute. searchable: - all: Include the field values when using the global search functionality. + all: Zahrnout hodnoty polí při použití globální funkce vyhledávání. project: Check to make this attribute available as a filter in project lists. editable: all: Allow the field to be editable by users themselves. @@ -754,36 +754,36 @@ cs: confirmation_live_message_checked: The button to proceed is now active. confirmation_live_message_unchecked: The button to proceed is now inactive. You need to tick the checkbox to continue. departments: - edit: Edit department - add_user: Add user - add_department: Add department + edit: Upravit oddělení + add_user: Přidat uživatele + add_department: Přidat oddělení blankslate: - heading: Your organization has no departments - description: 'Start by adding departments or users to the organization. Each department can be used to create a hierarchy below it, to navigate and create sub-department inside a hierarchy click on the created item. + heading: Vaše organizace nemá žádná oddělení + description: 'Začněte přidáním oddělení nebo uživatelů do organizace. Každé oddělení lze použít k vytvoření hierarchie pod ním, pro navigaci a vytvoření pododdělení uvnitř hierarchie klikněte na vytvořenou položku. ' - add_button: Add + add_button: Přidat detail_blankslate: - heading: This department doesn’t have any hierarchy level below + heading: Toto oddělení nemá žádnou úroveň hierarchie pod ním description: Add departments or users to create sub-items inside another one. - add_button: Add + add_button: Přidat add_department_form: - name_label: Department name - name_placeholder: Enter department name + name_label: Název oddělení + name_placeholder: Zadejte název oddělení move_user_dialog: - title: User already in a department - heading: Move user to this department? - description: "%{user} is currently a member of %{from_department}. Moving them will remove them from that department." - confirm: Move user + title: Uživatel je již v oddělení + heading: Přesunout uživatele do tohoto oddělení? + description: "%{user} je v současné době členem %{from_department}. Jejich přesunutím dojde k jejich odstranění z tohoto oddělení." + confirm: Přesunout uživatele context_menu: - add_sub_department: Add sub-department - add_user: Add user + add_sub_department: Přidat dílčí oddělení + add_user: Přidat uživatele flash: - user_added: User was successfully added to the department. - user_removed: User was successfully removed from the department. - department_created: Department was successfully created. + user_added: Uživatel byl úspěšně přidán do oddělení. + user_removed: Uživatel byl úspěšně odstraněn z oddělení. + department_created: Oddělení bylo úspěšně vytvořeno. errors: - move_user_failed: Failed to move user between departments. + move_user_failed: Přesun uživatele mezi odděleními se nezdařil. pagination: label: Stránkování prev: Předchozí @@ -819,9 +819,9 @@ cs: respond_to?: neimplementuje požadovanou metodu. rules: copy_workflow_from: - workflow_missing: has no own workflow. + workflow_missing: nemá vlastní pracovní postup. custom_field: - format_not_supported: format '%{field_format}' is unsupported. + format_not_supported: formát '%{field_format}' není podporován. item: root_item: nemůže být kořenová položka. not_persisted: musí být již existující položka. @@ -857,13 +857,13 @@ cs: wiki_pages: Wiki groups: edit: - synchronized_groups: Synchronized groups + synchronized_groups: Synchronizované skupiny index: description: Seskupováním uživatelů je můžete přidat jako členy do stejných projektů nebo jim přiřadit stejné globální role. table_component: blank_slate: description: You can define named groups of users with specific permissions. - title: No groups set up yet + title: Zatím nebyly vytvořeny žádné skupiny user_count: User count users: no_results_title_text: Momentálně nejsou žádní uživatelé součástí této skupiny. @@ -882,12 +882,12 @@ cs: index: search: label: Filtr názvů portfolia - placeholder: Search portfolios + placeholder: Hledat portfolia sub_items_html: - one: "1 sub-item" - few: "%{count} sub-items" - many: "%{count} sub-items" - other: "%{count} sub-items" + one: "1 dílčí položka" + few: "%{count} dílčích položek" + many: "%{count} dílčích položek" + other: "%{count} dílčích položek" lists: active: Aktivní portfolia my: Moje portfolia @@ -936,7 +936,7 @@ cs: text: Tato akce neodstraní žádný projekt, který seznam obsahuje. Opravdu chcete tento seznam projektů smazat? settings: header_details: Základní údaje - header_identifier: Identifier + header_identifier: Identifikátor header_status: Stav header_relations: Vztahy projektu button_update_details: Aktualizovat podrobnosti @@ -954,14 +954,14 @@ cs: private_confirmation: checkbox: Chápu, že tím se dříve veřejný obsah stane soukromým. title: Nastavit tento projekt jako soukromý? - description: 'The project will only be visible to project members depending on their role and associated permissions. Sub-projects are not affected and have their own settings. + description: 'Projekt bude viditelný pouze pro členy projektu v závislosti na jejich úloze a souvisejících povoleních. Dílčí projekty nejsou ovlivněny a mají vlastní nastavení. ' change_identifier: Změnit identifikátor change_identifier_dialog_title: Změnit identifikátor projektu change_identifier_format_hint_semantic: Pouze velká písmena (A-Z), číslice nebo podtržítka. Maximálně 10 znaků. Musí začínat písmenem. change_identifier_format_hint_legacy: Pouze malá písmena (a-z), číslice, pomlčky nebo podtržítka. - change_identifier_warning: 'This will permanently change identifiers and URLs of all work packages in this project. The previous identifiers and URLs will nevertheless continue to work. + change_identifier_warning: 'Tímto se trvale změní identifikátory a adresy URL všech pracovních balíčků v tomto projektu. Předchozí identifikátory a adresy URL budou nicméně nadále správně přesměrovány. ' subitems: @@ -1877,7 +1877,7 @@ cs: identifier: Identifikátor latest_activity_at: Poslední aktivita parent: Podprojekt - project_creation_wizard_enabled: Project initiation request + project_creation_wizard_enabled: Zahajovatel projektu public_value: title: Viditelnost true: veřejný @@ -2109,7 +2109,7 @@ cs: relatable: Relatable to remaining_hours: Zbývající práce remaining_time: Zbývající práce - sequence_number: Sequence number + sequence_number: Sekvenční číslo shared_with_users: Sdíleno s schedule_manually: Manuální plánování spent_hours: Strávený čas @@ -2120,13 +2120,13 @@ cs: version: Verze watcher: Sledující ordered_persisted_query_entity: - persisted_query: Persisted query - entity: Entity - position: Position + persisted_query: Trvalý dotaz + entity: Entita + position: Pozice persisted_query: - name: Name - views: Views - filters: Filters + name: Název + views: Pohledy + filters: Filtry orders: Orders selects: Selects persisted_view: @@ -2151,17 +2151,14 @@ cs: before: musí být před %{date}. before_or_equal_to: musí být před nebo rovno %{date}. blank: nemůže být prázdné. - not_before_start_date: nesmí být před datem zahájení. - overlapping_range: se překrývá se stávajícím rozsahem nepracovního dne. blank_nested: musí mít nastavenou vlastnost '%{property}'. cannot_delete_mapping: je povinné. Nelze odstranit. - is_for_all_cannot_modify: je pro všechny projekty, a proto je nelze měnit. cant_link_a_work_package_with_a_descendant: Pracovní balíček nemůže být propojen s jedním z jeho podúkolů. circular_dependency: Tento vztah by vytvořil kruhovou závislost. confirmation: neshoduje se s %{attribute}. could_not_be_copied: "%{dependency} nemůže být (zcela) zkopírován." + datetime_must_be_in_future: musí být v budoucnosti. does_not_exist: neexistuje. - user_already_in_department: User %{user_id} is already a member of department %{department_id}. error_enterprise_only: "%{action} is only available in the OpenProject Enterprise edition." error_unauthorized: není přístupný. error_readonly: se pokusil být napsán, ale není zapisovatelný. @@ -2182,36 +2179,38 @@ cs: greater_than_or_equal_to: musí být větší než nebo rovno %{count}. greater_than_or_equal_to_start_date: musí být větší nebo rovno počátečnímu datu. greater_than_start_date: musí být větší než počáteční datum. + hexcode_invalid: není platným 6-místným hexadecimálním barevným kódem. inclusion: není nastavena na jednu z povolených hodnot. inclusion_nested: není nastavena na jednu z povolených hodnot na cestě '%{path}'. invalid: je neplatné. invalid_uri: must be a valid URI. invalid_url: není platná adresa URL. invalid_url_scheme: 'není podporovaný protokol (povoleny: %{allowed_schemes}).' + is_for_all_cannot_modify: je pro všechny projekty, a proto je nelze měnit. less_than_or_equal_to: musí být menší než nebo rovno %{count}. not_available: není k dispozici kvůli konfiguraci systému. + not_before_start_date: nesmí být před datem zahájení. not_deletable: nelze odstranit not_editable: nelze upravit, protože již platí. not_current_user: není aktuální uživatel. - system_wide_non_working_day_exists: conflicts with an existing system-wide non-working day for this date. not_found: nenalezeno. not_a_date: není platné datum. not_a_datetime: není platný čas. not_a_number: není číslo. not_allowed: je neplatný z důvodu chybějících oprávnění. - host_not_allowed: is not an allowed host. not_json: nelze přečíst jako JSON. not_json_object: není platným JSON objektem. not_an_integer: není celé číslo. not_an_iso_date: 'není platné datum. Požadovaný formát: RRRR-MM-DD.' not_same_project: nepatří do stejného projektu. - datetime_must_be_in_future: musí být v budoucnosti. odd: musí být liché. + overlapping_range: se překrývá se stávajícím rozsahem nepracovního dne. regex_match_failed: neodpovídá regulárnímu výrazu %{expression}. regex_invalid: nelze ověřit s přidruženým regulárním výrazem. regex_list_invalid: Lines %{invalid_lines} could not be parsed as regular expression. - hexcode_invalid: není platným 6-místným hexadecimálním barevným kódem. smaller_than_or_equal_to_max_length: musí být menší než nebo rovno maximální délce. + ssrf_filtered: violates the SSRF policy of this OpenProject instance. + system_wide_non_working_day_exists: conflicts with an existing system-wide non-working day for this date. taken: je již použito. too_long: je příliš dlouhý (maximum je %{count} znaků). too_short: je příliš krátký (minimum je %{count} znaků). @@ -2224,6 +2223,7 @@ cs: url_not_secure_context: 'neposkytuje "bezpečný kontext". Buď použijte HTTPS nebo adresu pro smyčku, jako je localhost. ' + user_already_in_department: User %{user_id} is already a member of department %{department_id}. wrong_length: má chybnou délku (měla by být %{count} znaků). models: group: @@ -2528,7 +2528,7 @@ cs: attribute_unknown_name: 'Použitý neplatný atribut pracovního balíčku: %{attribute}' duplicate_group: Název skupiny '%{group}' je použit více než jednou. Názvy skupin musí být jedinečné. query_invalid: 'Vložený dotaz ''%{group}'' je neplatný: %{details}' - group_without_name: Group name can't be blank. + group_without_name: Název skupiny nesmí být prázdný. patterns: invalid_tokens: One or more attributes inside the field are not valid. Please, fix the attributes before saving. user: @@ -2620,7 +2620,7 @@ cs: other: Priorities meeting_participant: Účastník schůzky member: Člen - message: Message + message: Zpráva news: Novinky notification: one: Oznámení @@ -2646,10 +2646,10 @@ cs: many: Role other: Role scim_client: - one: SCIM client - few: SCIM clients - many: SCIM clients - other: SCIM clients + one: Klient SCIM + few: Klienti SCIM + many: Klienti SCIM + other: Klienti SCIM jira: one: Jira few: Jira @@ -2667,10 +2667,10 @@ cs: many: RSS tokenů other: RSS tokenů type: - one: Type - few: Types - many: Types - other: Types + one: Typ + few: Typy + many: Typy + other: Typy user: Uživatel version: Verze workflow: Pracovní postup @@ -2696,7 +2696,7 @@ cs: unsupported_storage_type: není podporovaným typem úložiště. storage_error: Došlo k chybě při připojení k úložišti. invalid_input: Vstup je neplatný. - invalid_child_for_parent: is not allowed as a parent for this view type. + invalid_child_for_parent: není pro tento typ zobrazení povolen jako nadřazený. activity: item: created_by_on: vytvořil %{user} dne %{datetime} @@ -2743,9 +2743,9 @@ cs: changed_date: změněno z %{from} na %{to} deactivated: Deaktivováno deleted_project_phase: Smazaná fáze projektu - phase_and_both_gates: "%{phase_message}. %{start_gate_message}, and %{finish_gate_message}" + phase_and_both_gates: "%{phase_message}. %{start_gate_message}, a %{finish_gate_message}" phase_and_one_gate: "%{phase_message}. %{gate_message}" - removed_date: date deleted %{date} + removed_date: datum smazání %{date} attributes: active: Aktivní assigned_to: Řešitel @@ -2811,8 +2811,8 @@ cs: priority: Priorita project: Projekt project_ids: ID Projektu - project_phase: Project phase - project_phase_definition: Project phase + project_phase: Fáze projektu + project_phase_definition: Fáze projektu reason: Důvod responsible: Odpovědný required: Požadováno @@ -2930,6 +2930,7 @@ cs: button_login: Přihlásit se button_move: Přesunout button_move_and_follow: Přesunout a pokračovat + button_next: Next button_print: Tisk button_quote: Citovat button_remove: Odstranit @@ -2974,7 +2975,7 @@ cs: button_revoke_all: Zrušit vše button_revoke_only: Zrušit pouze %{shared_role_name} button_publish: Zveřejnit - button_unpublish: Nastavit jako soukromé + button_unpublish: Nastavit jako soukromý consent: checkbox_label: Zaznamenal(a) jsem a souhlasím s výše uvedeným. failure_message: Souhlas se nezdařil, nelze pokračovat. @@ -3085,9 +3086,9 @@ cs: distance_in_words: about_x_hours: one: přibližně 1 hodinu - few: přibližně %{count} hodin - many: přibližně %{count} hodin - other: přibližně %{count} hodin + few: přibližně %{count} hodinami + many: přibližně %{count} hodinami + other: přibližně %{count} hodinami about_x_months: one: přibližně 1 měsíc few: přibližně %{count} měsíce @@ -3222,7 +3223,7 @@ cs: board_view: Advanced Boards calculated_values: Calculated values capture_external_links: Capture External Links - internal_comments: Internal Comments + internal_comments: Interní komentáře custom_actions: Custom Actions custom_field_hierarchies: Hierarchie customize_life_cycle: Přizpůsobit životní cyklus @@ -3253,14 +3254,14 @@ cs: plans_title: Podnikové plány title: Doplňky podnikových plánů plan_title: Enterprise %{plan} add-on - plan_name: "%{plan} enterprise plan" - trial_text: This feature is included in your active Enterprise trial. + plan_name: Enterprise plán %{plan} + trial_text: Tato funkce je zahrnuta v aktivní zkušební verzi Enterprise. plan_text_html: K dispozici od plánu %{plan_name}. unlimited: Bez omezení - already_have_token: 'Already have a token? Add it using the button below to upgrade to the booked Enterprise plan. + already_have_token: 'Už máte token? Přidejte jej pomocí níže uvedeného tlačítka a přejděte na rezervovaný plán Enterprise. ' - hide_banner: Hide this banner + hide_banner: Skrýt tento banner homescreen_description: 'Plán Enterprise rozšiřuje komunitní edici OpenProject o další [Enterprise doplňky](enterprise_url) a profesionální podporu, což je ideální pro organizace provozující OpenProject v kritickém prostředí. ' @@ -3320,10 +3321,10 @@ cs: title: Jednotné přihlášení (SSO) pro úložiště Nextcloud description: Enable seamless and secure authentication for your Nextcloud storage with Single Sign-On. Simplify access management and enhance user convenience. scim_api: - title: SCIM clients + title: Klienti SCIM description: Automatizujte správu uživatelů v OpenProject pomocí integrace externích služeb identit, jako je Microsoft Entra nebo Keycloak, prostřednictvím našeho SCIM Server API. K dispozici od plánu Enterprise. sso_auth_providers: - title: Single Sign-On (SSO) + title: Jednotné přihlášení (SSO) description: Enable users to log in via external SSO providers using SAML or OpenID Connect for seamless access and integration with existing identity systems. virus_scanning: description: Zajistěte, aby nahrané soubory v OpenProjectu byly před zpřístupněním ostatním uživatelům zkontrolovány na přítomnost virů. @@ -3348,15 +3349,15 @@ cs: few: "%{count} days left of %{trial_plan} trial token" many: "%{count} days left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" - description_html: You have access to all %{trial_plan} features. + description_html: Máte přístup ke všem funkcím %{trial_plan}. trial: - not_found: You have requested a trial token, but that request is no longer available. Please try again. - wait_for_confirmation: We sent you an email to confirm your address in order to retrieve a trial token. - already_retrieved: 'Your trial enterprise token was already retrieved. Please check your emails for the token being attached. Please reach out to our support team if you need a new one. + not_found: Požádali jste o zkušební token, ale tento požadavek již není k dispozici. Zkuste to prosím znovu. + wait_for_confirmation: Poslali jsme vám e-mail s žádostí o potvrzení vaší adresy, abyste mohli získat zkušební token. + already_retrieved: 'Váš zkušební Enterprise token byl již načten. Zkontrolujte prosím své e-maily, zda je token přiložen. Pokud potřebujete nový, obraťte se na náš tým podpory. ' - successfully_saved: Your trial enterprise token has been successfully retrieved. - token_sent: Trial token requested + successfully_saved: Váš zkušební Enterprise token byl úspěšně načten. + token_sent: Enterprise token vyžádán request_again: Znovu požádat resend_action: Znovu odeslat potvrzovací e‑mail welcome_title: Stručný přehled funkcí @@ -3364,7 +3365,7 @@ cs: confirmation_info: 'We sent you an email on %{date} to %{email} with all the information to start the free trial of OpenProject Enterprise. Please check your inbox and click the confirmation link provided to start your 14-day free trial. ' - confirmation_subline: 'Please, check your inbox and follow the steps to start your 14-day free trial. + confirmation_subline: 'Zkontrolujte prosím svou doručenou poštu a postupujte podle kroků, abyste zahájili 14-denní bezplatnou zkušební verzi. ' domain_caption: The token will be valid for your currently configured host name. @@ -3601,6 +3602,12 @@ cs: selected: Vybráno include_sub_items: Zahrnout dílčí položky no_results_text: Žádné výsledky + header: + project_select_component: + all_projects: All projects + favorites: Favorites + leave_project: Leave project + title: Projects toggle_switch: label_on: Zap. label_off: Vyp. @@ -3665,7 +3672,7 @@ cs: line_0: Project-based work package identifiers for clearer references. line_1: Jira Migrator support for Jira identifiers, due dates, and more. line_2: Option to exclude work package types from Backlogs. - line_3: Redesigned sprint views. + line_3: Přepracované zobrazení sprintu. line_4: Improved work package linking across Documents and text editors. line_5: More flexible meeting schedules and reduced email notification noise. line_6: Nested groups for organizational structures and inherited permissions. @@ -3702,7 +3709,7 @@ cs: header: změny od %{author} field_changed: "%{field} změněno z %{old_value} na %{new_value}" field_set: "%{field} nastaveno na %{value}" - field_removed: "%{field} removed" + field_removed: "%{field} odstraněno" field_updated: "%{field} aktualizováno" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" @@ -3734,7 +3741,7 @@ cs: progress_calculation_adjusted: Progress calculation automatically adjusted with version update. scheduling_mode_adjusted: Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. - sprint_migration: Version '%{version_name}' has been copied as a sprint. + sprint_migration: Verze '%{version_name}' byla zkopírována jako sprint. total_percent_complete_mode_changed_to_work_weighted_average: Podřízené pracovní balíčky bez položky Práce jsou ignorovány. total_percent_complete_mode_changed_to_simple_average: Pracovní hodnoty podřízených pracovních balíčků jsou ignorovány. links: @@ -3837,8 +3844,8 @@ cs: title: Receive email reminders on these days submit_button: Update reminder days pause_reminders: - title: Pause email notifications - enabled: Temporarily pause daily email reminders + title: Pozastavit e-mailová oznámení + enabled: Dočasně pozastavit e-mailová oznámení date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages @@ -3847,7 +3854,7 @@ cs: news_commented: Comment on a news item document_added: Document added forum_messages: Forum message posted - wiki_page_added: Wiki page added + wiki_page_added: Přidána wiki stránka wiki_page_updated: Wiki stránka aktualizována membership_added: Membership added membership_updated: Členství bylo aktualizováno @@ -3871,14 +3878,14 @@ cs: overdue: Overdue times: same_day: On the same day - one_day_before: 1 day before - three_days_before: 3 days before - seven_days_before: 7 days before - one_day_after: 1 day after - three_days_after: 3 days after - seven_days_after: 7 days after + one_day_before: 1 den předem + three_days_before: 3 dny předem + seven_days_before: 7 dní předem + one_day_after: 1 den po + three_days_after: 3 dny po + seven_days_after: 7 dní po non_participating: - title: Non-participating + title: Neúčastnící se description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages @@ -3947,7 +3954,7 @@ cs: label_age: Věk label_ago: dnů před label_all: vše - label_all_uppercase: All + label_all_uppercase: Vše label_all_time: celkový čas label_all_words: Všechna slova label_all_open_wps: Všechny otevřené @@ -3965,7 +3972,7 @@ cs: label_ical_access_key_generation_hint: Automaticky vygenerováno při odebírání kalendáře. label_ical_access_key_latest: poslední label_ical_access_key_revoke: Revoke - label_integrations: Integrations + label_integrations: Integrace label_add_column: Přidat sloupec label_applied_status: Přiřazený stav label_archive_project: Archivovat projekt @@ -4049,7 +4056,7 @@ cs: label_commits_per_month: Commitů za měsíc label_confirmation: Potvrzení label_contains: obsahuje - label_starts_with: starts with + label_starts_with: začíná na label_content: Obsah label_color_plural: Barvy label_copied: zkopírováno @@ -4057,8 +4064,8 @@ cs: label_copy_source: Zdroj label_copy_target: Cíl label_copy_workflow_from: Kopírovat pracovní postup z - label_copy_workflow_from_type: Copy to another type - label_copy_workflow_from_role: Copy to other roles + label_copy_workflow_from_type: Kopírovat do jiného typu + label_copy_workflow_from_role: Kopírovat do dalších rolí label_copy_project: Kopírovat projekt label_core_version: Verze jádra label_core_build: Build jádra @@ -4183,7 +4190,7 @@ cs: label_home: Domů label_subject_or_id: Předmět nebo ID label_calendar_subscriptions: Odběr kalendáře - label_identifier: Identifiers + label_identifier: Identifikátory label_project_identifier: Identifikátor projektu label_in: v label_in_less_than: za méně než @@ -4216,11 +4223,11 @@ cs: label_journal_diff: Popis porovnání label_language: Jazyk label_languages: Jazyky - label_export_plural: Exports + label_export_plural: Exporty label_external_links: Externí odkazy label_locale: Jazyk a region label_jump_to_a_project: Přejít na projekt... - label_jira_import: Jira Migrator + label_jira_import: Jira Migrátor label_keyword_plural: Klíčová slova label_language_based: Na základě jazyka uživatele label_last_activity: Poslední aktivita @@ -4249,16 +4256,16 @@ cs: label_custom_export_logo: Vlastní logo exportu label_custom_export_cover: Vlastní exportní obal pozadí label_custom_export_footer: Custom export footer image - label_custom_export_font_regular: Regular - label_custom_export_font_bold: Bold + label_custom_export_font_regular: Běžný + label_custom_export_font_bold: Tučný label_custom_export_font_italic: Kurzíva - label_custom_export_font_bold_italic: Bold Italic + label_custom_export_font_bold_italic: Tučná kurzíva label_custom_export_cover_overlay: Překrytí obalu vlastního exportu label_custom_export_cover_text_color: Barva textu label_custom_pdf_export_settings: Vlastní nastavení exportu PDF label_custom_favicon: Vlastní favicon label_custom_touch_icon: Vlastní ikona dotyku - label_departments: Organization + label_departments: Organizace label_departments_description_html: 'Define your company’s structure by creating departments and sub-departments in a hierarchical way. This allows you to reflect reporting lines and maintain a clear, structured overview of your organization within OpenProject. You can also import an existing organization structure through [LDAP group synchronisation](ldap_docs_article). ' @@ -4268,7 +4275,7 @@ cs: label_manage: Spravovat label_manage_groups: Spravovat skupiny label_managed_repositories_vendor: Spravováno %{vendor} repozitářů - label_mathematical_operators: Mathematical operators + label_mathematical_operators: Matematické operátory label_max_size: Maximální velikost label_me: já label_member_new: Nový člen @@ -4329,7 +4336,7 @@ cs: label_no_due_date: žádné datum dokončení label_no_start_date: žádné datum začátku label_no_parent_page: Žádná nadřazená stránka - label_no_parent_group: "(No parent group)" + label_no_parent_group: "(Žádná nadřazená skupina)" label_notification_center_plural: Notifikace label_nothing_display: Nic k zobrazení label_nobody: nikdo @@ -4391,7 +4398,7 @@ cs: label_preview_not_available: Náhled není k dispozici label_previous: Předchozí label_previous_week: Předchozí týden - label_previous_year: Previous year + label_previous_year: Předchozí rok label_principal_invite_via_email: " nebo pozvat nové uživatele e-mailem" label_principal_search: Přidat existující uživatele nebo skupiny label_privacy_policy: Zásady ochrany soukromí a bezpečnosti údajů @@ -4405,7 +4412,7 @@ cs: label_project_attribute_manage_link: Správa atributů produktu label_project_count: Celkový počet projektů label_project_copy_notifications: Během kopie projektu odeslat oznámení e-mailem - label_project_initiation_export_pdf: Export PDF for %{project_creation_name} + label_project_initiation_export_pdf: Export PDF pro %{project_creation_name} label_project_latest: Nejnovější projekty label_project_default_type: Povolit prázdný typ label_project_hierarchy: Hierarchie projektu @@ -4413,14 +4420,14 @@ cs: label_project_new: Nový projekt label_project_plural: Projekty label_project_list_plural: Seznamy projektů - label_reserved_identifiers: Reserved project identifiers + label_reserved_identifiers: Rezervované identifikátory projektů label_project_life_cycle: Životní cyklus projektu label_project_attributes_plural: Atributy projektu label_project_custom_field_plural: Atributy projektu label_project_settings: Nastavení projektu label_project_attributes_settings: '' label_project_storage_plural: Úložiště souborů - label_project_storage_project_folder: 'File storages: Project folders' + label_project_storage_project_folder: 'Úložiště souborů: Složky projektů' label_projects_disk_usage_information: "%{count} projekty využívající diskový prostor %{used_disk_space}" label_project_view_all: Zobrazit všechny projekty - seznam label_project_show_details: Zobrazit detail projektu @@ -4454,7 +4461,7 @@ cs: label_report: Hlášení label_report_bug: Nahlásit chybu label_report_plural: Hlášení - label_reported_work_packages: Nahlášené pracovní balíčky + label_reported_work_packages: Hlášené pracovní balíčky label_reporting: Hlášení label_reporting_plural: Hlášení label_repository: Repozitář @@ -4477,7 +4484,7 @@ cs: label_role_new: Nová role label_role_grantable: Udělitelná role label_role_plural: Role - label_role_missing_permissions: "%{role} (missing required permissions)" + label_role_missing_permissions: "%{role} (chybí požadovaná oprávnění)" label_role_search: Přiřadit roli novým členům label_scm: SCM label_scroll_left: Rolovat vlevo @@ -4580,7 +4587,7 @@ cs: label_what_is_this: Co to je? label_week: Týden label_widget: Widget - label_widget_new: New widget + label_widget_new: Nový widget label_wiki_content_added: Přidána stránka wiki label_wiki_content_updated: Wiki stránka aktualizována label_wiki_toc: Obsah @@ -4627,9 +4634,9 @@ cs: other: "%{count} komentáře" zero: žádné komentáře label_x_items: - one: 1 item - other: "%{count} items" - zero: no items + one: 1 položka + other: "%{count} položek" + zero: žádné položky label_x_open_work_packages_abbr: one: 1 otevřený other: "%{count} otevřených" @@ -4647,20 +4654,25 @@ cs: other: "%{count} souborů" zero: žádné soubory label_x_days: - one: 1 day - few: "%{count} days" - many: "%{count} days" - other: "%{count} days" + one: 1 den + few: "%{count} dny" + many: "%{count} dní" + other: "%{count} dní" label_x_working_days: - one: 1 working day - few: "%{count} working days" - many: "%{count} working days" - other: "%{count} working days" + one: 1 pracovní den + few: "%{count} pracovních dnů" + many: "%{count} pracovních dnů" + other: "%{count} pracovních dnů" label_x_working_days_time_off: - one: 'Time off: 1 working day' - few: 'Time off: %{count} working days' - many: 'Time off: %{count} working days' - other: 'Time off: %{count} working days' + one: 'Volno: 1 pracovní den' + few: 'Volno: %{count} pracovních dní' + many: 'Volno: %{count} pracovních dní' + other: 'Volno: %{count} pracovních dní' + label_x_items_selected: + one: One item selected + few: "%{count} items selected" + many: "%{count} items selected" + other: "%{count} items selected" label_yesterday: včera label_zen_mode: Zen mód label_role_type: Typ @@ -4668,7 +4680,7 @@ cs: label_global_role: Globální role label_not_changeable: "(neměnitelné)" label_global: Globální - label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_seeded_from_env_warning: Tento záznam byl vytvořen prostřednictvím proměnné prostředí. Nelze jej upravovat prostřednictvím uživatelského rozhraní. label_schedule_and_availability: Rozvrh a dostupnost label_working_hours: Pracovní rozvrh label_non_working_days: Kalendář dostupnosti @@ -4678,8 +4690,8 @@ cs: button_edit_non_working_time: Upravit volno label_continued_from_previous_year: pokračování z předchozího roku label_continues_into_next_year: pokračování do dalšího roku - label_end_date: Finish date - label_working_days: Working days + label_end_date: Datum ukončení + label_working_days: Pracovní dny label_non_working_times_with_count: Volna v roce %{year} (%{count}) label_non_working_times_summary: Souhrn roku %{year} label_total_user_non_working_times: Osobní nepracovní dny @@ -4687,7 +4699,7 @@ cs: label_total_days_off: Celkový počet dnů volna macro_execution_error: Chyba při provádění makra %{macro_name} macro_unavailable: Makro %{macro_name} nelze zobrazit. - macro_unknown: Unknown or unsupported macro. + macro_unknown: Neznámé nebo nepodporované makro. macros: placeholder: "[Placeholder] Macro %{macro_name}" errors: @@ -4755,7 +4767,7 @@ cs: allowed_actions_html: 'You have the following permissions on this work package: %{allowed_actions}. This can change depending on your project role and permissions.' create_account: Pro přístup k tomuto pracovnímu balíčku musíte vytvořit a aktivovat účet na %{instance}. open_work_package: Otevřít pracovní balíček - subject: Work package %{id} was shared with you + subject: Pracovní balíček %{id} byl s vámi sdílen enterprise_text: Sdílejte pracovní balíčky s uživateli, kteří nejsou členy projektu. summary: user: "%{user} s vámi sdílel pracovní balíček s právy %{role_rights}" @@ -4770,12 +4782,12 @@ cs: recommendation: Budeme i nadále monitorovat systém, abychom zajistili, že zůstane v dobrém stavu. V případě jakýchkoli nesrovnalostí vás budeme informovat. details: Pro více podrobností nebo pro provedení nezbytných změn můžete navštívit konfiguraci úložiště unhealthy: - summary: The status of your storage, %{storage_name}, is currently displaying as "Error". We've detected an issue that might require your attention. + summary: Stav vašeho úložiště, %{storage_name}, se aktuálně zobrazuje jako "Chybný". Zjistili jsme problém, který by mohl vyžadovat vaši pozornost. error-details: Podrobnosti o chybě error-message: '' error-occurred-on: Vyskytlo se - recommendation: We recommend heading over to the storage configuration page to address this issue - unsubscribe: If you would no longer like to receive these notifications, you can unsubscribe at any time. To unsubscribe, please follow the instructions on this page + recommendation: Doporučujeme přejít na stránku konfigurace úložiště a tento problém vyřešit + unsubscribe: Pokud si již nepřejete dostávat tato oznámení, můžete se z odběru kdykoli odhlásit. Chcete-li se odhlásit, postupujte podle pokynů na této stránce email_notification_settings: Nastavení e-mailových oznámení o úložišti see_storage_settings: Zobrazit nastavení úložiště healthy: @@ -4971,11 +4983,11 @@ cs: common: work_package_card_component: drag_handle: - label: Drag to reorder + label: Přesuňte tažením menu: - label_actions: Work package actions - parent: Parent - undisclosed: Undisclosed + label_actions: Operace na pracovním balíčku + parent: Nadřazený + undisclosed: Nezveřejněno permission_add_work_package_comments: Přidat komentáře permission_add_work_packages: Přidat pracovní balíčky permission_add_messages: Odesílat zprávy @@ -5011,12 +5023,12 @@ cs: permission_edit_work_package_comments_explanation: 'Caution: Users with this permission are able to edit anyone''s comment.' permission_edit_work_packages: Upravit pracovní balíčky permission_edit_messages: Upravit zprávy - permission_edit_own_internal_comments: Edit own internal comments + permission_edit_own_internal_comments: Úprava vlastních interních komentářů permission_edit_own_work_package_comments: Upravit vlastní komentáře permission_edit_own_messages: Upravit vlastní zprávy permission_edit_own_time_entries: Upravit vlastní časové záznamy - permission_edit_others_internal_comments: Moderate internal comments - permission_edit_others_internal_comments_explanation: 'Caution: Users with this permission are able to edit other users'' internal comments.' + permission_edit_others_internal_comments: Moderování interních komentářů + permission_edit_others_internal_comments_explanation: 'Upozornění: Uživatelé s tímto oprávněním mohou upravovat interní komentáře jiných uživatelů.' permission_edit_project: Upravit projekt permission_edit_project_attributes: Úprava atributů projektu permission_edit_project_phases: Upravit fáze projektu @@ -5138,9 +5150,9 @@ cs: warning_one: Členové projektu budou muset přemístit úložiště projektu. warning_two: Existující odkazy na projekt nebudou nadále fungovat. title: Změnit identifikátor projektu - not_available: Project N/A + not_available: Projekt N/A template: - copying_title: Applying template + copying_title: Aplikování šablony copying: 'Váš projekt se vytváří z vybranéhé šablony. Budete upozorněni e-mailem, jakmile bude projekt k dispozici. ' @@ -5153,7 +5165,7 @@ cs: project_module_news: Novinky project_module_repository: Repozitář project_module_wiki: Wiki - permission_header_for_project_module_work_package_tracking: Pracovní balíčky a Gantt diagramy + permission_header_for_project_module_work_package_tracking: Pracovní balíčky a Ganttovy diagramy query: attribute_and_direction: "%{attribute} (%{direction})" query_fields: @@ -5617,7 +5629,7 @@ cs: label: Boční panel description: Add all the project attributes in a section inside the right side panel in the project overview. project_initiation_request: - header_description: 'OpenProject can generate a step-by-step wizard to help project managers fill out a project initiation request. You can choose which project attributes should be included and create a PDF artifact as a result. + header_description: 'OpenProject umí vygenerovat průvodce krok za krokem, který projektovým manažerům pomůže vyplnit žádost o zahájení projektu. Můžete si vybrat, které atributy projektu se mají zahrnout, a jako výstup vytvořit PDF dokument. ' status: @@ -5699,8 +5711,8 @@ cs: work_package_identifier: Work package identifiers not_allowed_text: You do not have the necessary permissions to view this page. activities: - enable_internal_comments: Enable internal comments - helper_text_html: 'Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) + enable_internal_comments: Povolit interní komentáře + helper_text_html: 'Interní komentáře umožňují internímu týmu komunikovat mezi sebou soukromě. Jsou viditelné pouze pro vybrané role, které mají potřebná oprávnění, a nejsou viditelné veřejně. [Klikněte zde pro více informací](docs_url) ' text_formatting: @@ -5847,13 +5859,13 @@ cs: text_plugin_assets_writable: Zapisovatelný adresář aktiv pluginu text_powered_by: Běží na %{link} text_project_identifier_info: Jsou povolena pouze malá písmena (a-z), číslice, pomlčky a podtržítka. Musí začínat malým písmenem. - text_project_identifier_description: The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246". + text_project_identifier_description: Identifikátor projektu je připojen ke všem ID pracovních balíčků. Např. Pokud je identifikátor "PROJ", bude identifikátor pracovního balíčku "PROJ-12" nebo "PROJ-246". text_project_identifier_url_description: The project identifier is included in the URL of the project. text_project_identifier_handle_format: Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters). text_project_identifier_format: Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed. text_reassign: 'Přiřadit k pracovnímu balíčku:' text_regexp_multiline: 'regex je použit v režimu více řádků. např.: ^---\s+' - text_rename_wiki_page: Rename wiki page + text_rename_wiki_page: Přejmenovat wiki stránku text_repository_usernames_mapping: |- Vyberte nebo aktualizujte mapovaný uživatel OpenProject ke každému uživatelskému jménu nalezenému v protokolu repozitáře. Uživatelé se stejným OpenProject a repozitářovým jménem nebo e-mailem jsou automaticky mapováni. diff --git a/config/locales/crowdin/da.yml b/config/locales/crowdin/da.yml index b2016dab9c7..b9204856ebe 100644 --- a/config/locales/crowdin/da.yml +++ b/config/locales/crowdin/da.yml @@ -2106,17 +2106,14 @@ da: before: skal være før %{date}. before_or_equal_to: skal være senest %{date}. blank: må ikke være tomt. - not_before_start_date: must not be before the start date. - overlapping_range: overlaps with an existing non-working day range. blank_nested: needs to have the property '%{property}' set. cannot_delete_mapping: is required. Cannot be deleted. - is_for_all_cannot_modify: is for all projects and can therefore not be modified. cant_link_a_work_package_with_a_descendant: En arbejdspakke kan ikke knyttes til en af dens underopgaver. circular_dependency: Denne relation vil skabe en cirkulær afhængighed. confirmation: matcher ikke %{attribute}. could_not_be_copied: "%{dependency} could not be (fully) copied." + datetime_must_be_in_future: must be in the future. does_not_exist: findes ikke. - user_already_in_department: User %{user_id} is already a member of department %{department_id}. error_enterprise_only: "%{action} is only available in the OpenProject Enterprise edition." error_unauthorized: kan muligvis ikke tilgås. error_readonly: was attempted to be written but is not writable. @@ -2137,36 +2134,38 @@ da: greater_than_or_equal_to: skal være større end eller lig med %{count}. greater_than_or_equal_to_start_date: must be greater than or equal to the start date. greater_than_start_date: must be greater than the start date. + hexcode_invalid: is not a valid 6-digit hexadecimal color code. inclusion: er ikke sat til en tilladt værdi. inclusion_nested: is not set to one of the allowed values at path '%{path}'. invalid: er ugyldig. invalid_uri: must be a valid URI. invalid_url: is not a valid URL. invalid_url_scheme: 'is not a supported protocol (allowed: %{allowed_schemes}).' + is_for_all_cannot_modify: is for all projects and can therefore not be modified. less_than_or_equal_to: skal være mindre end eller lig med %{count}. not_available: is not available due to a system configuration. + not_before_start_date: must not be before the start date. not_deletable: Kan ikke slettes not_editable: cannot be edited because it is already in effect. not_current_user: er ikke den aktuelle bruger. - system_wide_non_working_day_exists: conflicts with an existing system-wide non-working day for this date. not_found: not found. not_a_date: is not a valid date. not_a_datetime: is not a valid date time. not_a_number: er ikke et tal. not_allowed: is invalid because of missing permissions. - host_not_allowed: is not an allowed host. not_json: is not parseable as JSON. not_json_object: is not a JSON object. not_an_integer: er ikke et heltal. not_an_iso_date: 'is not a valid date. Required format: YYYY-MM-DD.' not_same_project: hører ikke til samme projekt. - datetime_must_be_in_future: must be in the future. odd: skal være ulige. + overlapping_range: overlaps with an existing non-working day range. regex_match_failed: does not match the regular expression %{expression}. regex_invalid: could not be validated with the associated regular expression. regex_list_invalid: Lines %{invalid_lines} could not be parsed as regular expression. - hexcode_invalid: is not a valid 6-digit hexadecimal color code. smaller_than_or_equal_to_max_length: skal være mindre end eller lig den maksimale længde. + ssrf_filtered: violates the SSRF policy of this OpenProject instance. + system_wide_non_working_day_exists: conflicts with an existing system-wide non-working day for this date. taken: er allerede taget. too_long: 'er for lang (maks.: %{count} tegn).' too_short: 'er for kort (min.: %{count} tegn).' @@ -2179,6 +2178,7 @@ da: url_not_secure_context: 'is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. ' + user_already_in_department: User %{user_id} is already a member of department %{department_id}. wrong_length: har forkert længde (burde være %{count} tegn). models: group: @@ -2845,6 +2845,7 @@ da: button_login: Log ind button_move: Flyt button_move_and_follow: Flyt og følg + button_next: Next button_print: Print button_quote: Citer button_remove: Fjern @@ -3474,6 +3475,12 @@ da: selected: Selected include_sub_items: Include sub-items no_results_text: No results + header: + project_select_component: + all_projects: All projects + favorites: Favorites + leave_project: Leave project + title: Projects toggle_switch: label_on: 'On' label_off: 'Off' @@ -4524,6 +4531,9 @@ da: label_x_working_days_time_off: one: 'Time off: 1 working day' other: 'Time off: %{count} working days' + label_x_items_selected: + one: One item selected + other: "%{count} items selected" label_yesterday: I går label_zen_mode: Zen mode label_role_type: Type diff --git a/config/locales/crowdin/de.yml b/config/locales/crowdin/de.yml index ffe4404868e..ae5aa7ccef6 100644 --- a/config/locales/crowdin/de.yml +++ b/config/locales/crowdin/de.yml @@ -52,25 +52,25 @@ de: confirm_button_text: Veröffentlichen admin: reserved_identifiers: - title: Reserved project identifiers - lede_html: When a project's identifier is renamed, the previous identifier is kept reserved so that existing links and integrations keep working.