From 2a1c725c0f5bb9411262241e9112fd35cc5baa1b Mon Sep 17 00:00:00 2001 From: Jan Sandbrink Date: Thu, 26 Feb 2026 09:48:02 +0100 Subject: [PATCH 01/16] Allow to filter special characters from folder names created in Nextcloud This is the foundation to properly support the "windows compatibility" mode of Nextcloud. Nextcloud also supports setting up custom character block lists, that's why we can't work with a hardcoded list of forbidden characters, but need to allow defining it per storage. --- .../nextcloud/managed_folder_identifier.rb | 16 +++- .../app/models/storages/nextcloud_storage.rb | 6 +- ...nextcloud_default_prohibited_characters.rb | 46 +++++++++++ .../managed_folder_identifier_spec.rb | 82 +++++++++++++++++++ .../spec/factories/storage_factory.rb | 1 + 5 files changed, 148 insertions(+), 3 deletions(-) create mode 100644 modules/storages/db/migrate/20260226133700_set_nextcloud_default_prohibited_characters.rb create mode 100644 modules/storages/spec/common/storages/adapters/providers/nextcloud/managed_folder_identifier_spec.rb diff --git a/modules/storages/app/common/storages/adapters/providers/nextcloud/managed_folder_identifier.rb b/modules/storages/app/common/storages/adapters/providers/nextcloud/managed_folder_identifier.rb index 6f57eb1e433..c82d33d514b 100644 --- a/modules/storages/app/common/storages/adapters/providers/nextcloud/managed_folder_identifier.rb +++ b/modules/storages/app/common/storages/adapters/providers/nextcloud/managed_folder_identifier.rb @@ -23,7 +23,7 @@ # # 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. +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # See COPYRIGHT and LICENSE files for more details. #++ @@ -39,7 +39,7 @@ module Storages end def name - "#{@project.name.tr('/', '|')} (#{@project.id})" + "#{filter_restricted_characters(@project.name)} (#{@project.id})" end def path @@ -49,6 +49,18 @@ module Storages def location path end + + private + + def filter_restricted_characters(name) + # slashes have historically always been replaced with | + # hardcoding slash and backslash instead of making them configurable also prevents project names to be usable + # for directory-escape attempts (e.g. "../project name") + name = name.tr("/\\", "|") + + # other forbidden characters are replaced with _, consistent with other storages + name.tr(@storage.forbidden_file_name_characters, "_") + end end end end diff --git a/modules/storages/app/models/storages/nextcloud_storage.rb b/modules/storages/app/models/storages/nextcloud_storage.rb index b0ab260e9fc..fcb8c4d50b0 100644 --- a/modules/storages/app/models/storages/nextcloud_storage.rb +++ b/modules/storages/app/models/storages/nextcloud_storage.rb @@ -23,7 +23,7 @@ # # 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. +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # See COPYRIGHT and LICENSE files for more details. #++ @@ -50,6 +50,10 @@ module Storages store_attribute :provider_fields, :storage_audience, :string store_attribute :provider_fields, :token_exchange_scope, :string + # Default has been chosen to maximize compatibility with Windows-based Nextcloud clients + # also see https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions + store_attribute :provider_fields, :forbidden_file_name_characters, :string, default: "<>:\"\\/|?*" + def self.short_provider_name = :nextcloud def self.non_confidential_provider_fields diff --git a/modules/storages/db/migrate/20260226133700_set_nextcloud_default_prohibited_characters.rb b/modules/storages/db/migrate/20260226133700_set_nextcloud_default_prohibited_characters.rb new file mode 100644 index 00000000000..8ce06398ccc --- /dev/null +++ b/modules/storages/db/migrate/20260226133700_set_nextcloud_default_prohibited_characters.rb @@ -0,0 +1,46 @@ +# 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 SetNextcloudDefaultProhibitedCharacters < ActiveRecord::Migration[8.0] + disable_ddl_transaction! + + def up + execute <<~SQL.squish + UPDATE storages + SET provider_fields = provider_fields || '{ "forbidden_file_name_characters": "<>:\\"\\\\/|?*" }'::jsonb + WHERE provider_type = 'Storages::NextcloudStorage' AND NOT provider_fields ? 'forbidden_file_name_characters' + SQL + end + + def down + # we'll not delete any JSONB data on rollback + # though there's also no need to artificially block rollbacks past this version + end +end diff --git a/modules/storages/spec/common/storages/adapters/providers/nextcloud/managed_folder_identifier_spec.rb b/modules/storages/spec/common/storages/adapters/providers/nextcloud/managed_folder_identifier_spec.rb new file mode 100644 index 00000000000..f6ab344cb40 --- /dev/null +++ b/modules/storages/spec/common/storages/adapters/providers/nextcloud/managed_folder_identifier_spec.rb @@ -0,0 +1,82 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +require "spec_helper" + +RSpec.describe Storages::Adapters::Providers::Nextcloud::ManagedFolderIdentifier do + let(:managed_folder_identifier) { described_class.new(project_storage) } + + let(:project_storage) { create(:project_storage, project:, storage:) } + let(:project) { create(:project, name: project_name) } + let(:project_name) { "My great Demo project" } + let(:storage) { create(:nextcloud_storage) } + + describe "#path" do + subject { managed_folder_identifier.path } + + it { is_expected.to eq("/OpenProject/My great Demo project (#{project.id})/") } + + context "when the project name contains a slash" do + let(:project_name) { "My great/awesome project" } + + it { is_expected.to eq("/OpenProject/My great|awesome project (#{project.id})/") } + + context "when the pipe character is prohibited by the storage" do + let(:storage) { create(:nextcloud_storage, forbidden_file_name_characters: "|") } + + it { is_expected.to eq("/OpenProject/My great_awesome project (#{project.id})/") } + end + end + + context "when the project name contains a backslash" do + let(:project_name) { "My great\\awesome project" } + + it { is_expected.to eq("/OpenProject/My great|awesome project (#{project.id})/") } + + context "when the pipe character is prohibited by the storage" do + let(:storage) { create(:nextcloud_storage, forbidden_file_name_characters: "|") } + + it { is_expected.to eq("/OpenProject/My great_awesome project (#{project.id})/") } + end + end + + context "when the project name contains special characters" do + let(:project_name) { "My $pecia| project: The ☃" } + + it { is_expected.to eq("/OpenProject/My $pecia| project: The ☃ (#{project.id})/") } + + context "and when certain characters are prohibited by the storage" do + let(:storage) { create(:nextcloud_storage, forbidden_file_name_characters: "$:") } + + it { is_expected.to eq("/OpenProject/My _pecia| project_ The ☃ (#{project.id})/") } + end + end + end +end diff --git a/modules/storages/spec/factories/storage_factory.rb b/modules/storages/spec/factories/storage_factory.rb index d4671ca79b8..8548caca7da 100644 --- a/modules/storages/spec/factories/storage_factory.rb +++ b/modules/storages/spec/factories/storage_factory.rb @@ -93,6 +93,7 @@ FactoryBot.define do sequence(:host) { |n| "https://host#{n}.example.com/" } authentication_method { "two_way_oauth2" } storage_audience { nil } + forbidden_file_name_characters { "" } trait :with_oauth_configured do after(:create) do |storage, _evaluator| From 0934ca10566feda543b44e8ac52fd6fef35b99a2 Mon Sep 17 00:00:00 2001 From: Jan Sandbrink Date: Thu, 26 Feb 2026 16:04:08 +0100 Subject: [PATCH 02/16] Allow changing forbidden storage characters via API --- .../components/schemas/storage_read_model.yml | 7 +++++++ .../components/schemas/storage_write_model.yml | 7 +++++++ .../lib/api/v3/storages/storage_representer.rb | 7 +++++++ .../storages_representer_rendering_spec.rb | 16 ++++++++++++++++ 4 files changed, 37 insertions(+) diff --git a/docs/api/apiv3/components/schemas/storage_read_model.yml b/docs/api/apiv3/components/schemas/storage_read_model.yml index f44bf5e7fec..ea34ed90bd2 100644 --- a/docs/api/apiv3/components/schemas/storage_read_model.yml +++ b/docs/api/apiv3/components/schemas/storage_read_model.yml @@ -54,6 +54,13 @@ properties: Whether the storage has the application password to use for the Nextcloud storage. Ignored if the provider type is not Nextcloud. + forbiddenFileNameCharacters: + type: string + description: |- + A string with all the characters forbidden to be used for file and folder names in the storage. Used by OpenProject to avoid + creating files with unsupported names (e.g. when creating project folders). + + Only supported for provider type Nextcloud so far. createdAt: type: string format: date-time diff --git a/docs/api/apiv3/components/schemas/storage_write_model.yml b/docs/api/apiv3/components/schemas/storage_write_model.yml index c47b7673539..c0a25e2ee98 100644 --- a/docs/api/apiv3/components/schemas/storage_write_model.yml +++ b/docs/api/apiv3/components/schemas/storage_write_model.yml @@ -29,6 +29,13 @@ properties: If a string is provided, the password is set and automatic management is enabled for the storage. If null is provided, the password is unset and automatic management is disabled for the storage. + forbiddenFileNameCharacters: + type: string + description: |- + A string with all the characters forbidden to be used for file and folder names in the storage. Used by OpenProject to avoid + creating files with unsupported names (e.g. when creating project folders). + + Only supported for provider type Nextcloud so far. _links: type: object required: diff --git a/modules/storages/lib/api/v3/storages/storage_representer.rb b/modules/storages/lib/api/v3/storages/storage_representer.rb index d0a510fcf0b..808d046cafb 100644 --- a/modules/storages/lib/api/v3/storages/storage_representer.rb +++ b/modules/storages/lib/api/v3/storages/storage_representer.rb @@ -140,6 +140,13 @@ module API::V3::Storages end, setter: ->(*) {} + property :forbiddenFileNameCharacters, + skip_render: ->(represented:, **) { !represented.provider_type_nextcloud? }, + getter: ->(represented:, **) do + represented.forbidden_file_name_characters if represented.provider_type_nextcloud? + end, + setter: ->(fragment:, represented:, **) { represented.forbidden_file_name_characters = fragment } + date_time_property :created_at date_time_property :updated_at diff --git a/modules/storages/spec/lib/api/v3/storages/storages_representer_rendering_spec.rb b/modules/storages/spec/lib/api/v3/storages/storages_representer_rendering_spec.rb index 2882b498481..cf8213e7ef8 100644 --- a/modules/storages/spec/lib/api/v3/storages/storages_representer_rendering_spec.rb +++ b/modules/storages/spec/lib/api/v3/storages/storages_representer_rendering_spec.rb @@ -227,11 +227,19 @@ RSpec.describe API::V3::Storages::StorageRepresenter, "rendering" do let(:oauth_application) { build_stubbed(:oauth_application) } let(:storage) { build_stubbed(:nextcloud_storage, oauth_application:, oauth_client: oauth_client_credentials) } + it "fulfills the documented schema" do + expect(generated).to match_json_schema.from_docs("storage_read_model") + end + it_behaves_like "common file storage properties" context "if file storage is not completely configured" do let(:storage) { build_stubbed(:nextcloud_storage, oauth_client: nil) } + it "fulfills the documented schema" do + expect(generated).to match_json_schema.from_docs("storage_read_model") + end + it_behaves_like "property", :configured do let(:value) { false } end @@ -357,11 +365,19 @@ RSpec.describe API::V3::Storages::StorageRepresenter, "rendering" do context "if file storage has provider type OneDrive" do let(:storage) { build_stubbed(:one_drive_storage, oauth_client: oauth_client_credentials) } + it "fulfills the documented schema" do + expect(generated).to match_json_schema.from_docs("storage_read_model") + end + it_behaves_like "common file storage properties" context "if file storage is not completely configured" do let(:storage) { build_stubbed(:one_drive_storage, drive_id: nil, oauth_client: oauth_client_credentials) } + it "fulfills the documented schema" do + expect(generated).to match_json_schema.from_docs("storage_read_model") + end + it_behaves_like "property", :configured do let(:value) { false } end From 54fcadac78ab5f8f10b434714afc52b5c56a8951 Mon Sep 17 00:00:00 2001 From: Jan Sandbrink Date: Fri, 27 Feb 2026 13:11:31 +0100 Subject: [PATCH 03/16] Improve MCP docs Removing TODO comments and updating outdated instructions. --- .../integrations/mcp-server/README.md | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/docs/system-admin-guide/integrations/mcp-server/README.md b/docs/system-admin-guide/integrations/mcp-server/README.md index ba50ddb1321..98fe7b01845 100644 --- a/docs/system-admin-guide/integrations/mcp-server/README.md +++ b/docs/system-admin-guide/integrations/mcp-server/README.md @@ -18,22 +18,30 @@ OpenProject allows AI agents and similar tools to integrate through an API calle This allows these agents to access information from your OpenProject instance into their responses. Right now OpenProject only offers read-only tools, tools to manipulate data might be added in the future. -## Configuring authentication +## Configuration + +In your MCP client, you have to configure the endpoint of the OpenProject MCP server, which is available under `/mcp`, so for example: + +``` +https://your-openproject.example.com/mcp +``` + +### Authentication Authentication with MCP can happen in the ways that authentication for regular API endpoints can happen as well. The two distinct use cases for authentication are authentication for a single user via personal API tokens or authentication for different users sharing the same (web) application through OAuth. -### Personal access with API tokens +#### Personal access with API tokens This way of authentication requires no further setup on the administration side of OpenProject. -The only requirement is that the ["Enable REST web service"](../../api-and-webhooks/) setting is enabled. +The only requirement is that the ["Enable API tokens"](../../api-and-webhooks/) setting is enabled. Afterwards users that want to make use of MCP on a personal basis, can create a personal API token and configure an MCP client with that token. However, this only works properly with locally running MCP clients that are only used by a single user and it requires the user to configure the MCP endpoint themselves. -### Shared access via OAuth +#### Shared access via OAuth If multiple users shall be able to use information from the same OpenProject instance and when using web-based MCP clients, the typical configuration will involve an admin setting up the MCP client and OpenProject once, so that regular users can then utilize the @@ -49,6 +57,12 @@ In case OpenProject is used as the authentication provider, the configuration fo Go to *Administration -> Authentication -> OAuth applications* and create an application with the `mcp` scope, entering the "Redirect URI" according to the instructions of your MCP client. Make sure that the application is marked as confidential. -## Customization +### Customization -TODO: What can be customized in the Admin UI +Under *Administration -> Artificial Intelligence (AI) -> Model Context Protocol (MCP)* you can customize the MCP server further. + +Tools and Resources offered via MCP can be disabled separately here, as well as the entire MCP server. You can also change the +descriptions and titles indicated towards MCP clients. This can be useful to introduce alternative naming for certain entities. +For example if work packages are called "work items" in your day-to-day language, it can be helpful to rename "Search Work Packages" +to "Search Work Items", so that users interacting with the MCP client understand what a tool does and the language model has an +additional cue that there is an alias for "work packages". From b8546a4292db44d82721cbc01471510d01923276 Mon Sep 17 00:00:00 2001 From: ulferts Date: Fri, 27 Feb 2026 15:53:25 +0100 Subject: [PATCH 04/16] fix saving project quries broken because of an unreachable method definition --- app/controllers/projects_controller.rb | 3 +-- app/helpers/projects_helper.rb | 4 ++++ spec/features/projects/persisted_lists_spec.rb | 4 +++- spec/helpers/projects_helper_spec.rb | 7 +++++++ 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index bb62d32a288..303328d4d84 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -345,6 +345,5 @@ class ProjectsController < ApplicationController portfolio_management_feature_required? && !EnterpriseToken.allows_to?(:portfolio_management) end - helper_method :supported_export_formats, - :portfolio_management_feature_missing? + helper_method :portfolio_management_feature_missing? end diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index 99469be7f72..26cd2dad87f 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -88,4 +88,8 @@ module ProjectsHelper def projects_query_params safe_query_params(PROJECTS_QUERY_PARAM_NAMES) end + + def supported_export_formats + ::Exports::Register.list_formats(Project).map(&:to_s) + end end diff --git a/spec/features/projects/persisted_lists_spec.rb b/spec/features/projects/persisted_lists_spec.rb index d54665db07a..6e465e6c9ef 100644 --- a/spec/features/projects/persisted_lists_spec.rb +++ b/spec/features/projects/persisted_lists_spec.rb @@ -37,7 +37,9 @@ RSpec.describe "Persisted lists on projects index page", shared_let(:user) { create(:user) } shared_let(:manager) { create(:project_role, name: "Manager") } - shared_let(:developer) { create(:project_role, name: "Developer") } + # The permission is not necessary for any of the tests. But it enables one more code path + # where a regression occured before (#72362). + shared_let(:developer) { create(:project_role, name: "Developer", permissions: %i(export_projects)) } shared_let(:custom_field) { create(:text_project_custom_field) } shared_let(:invisible_custom_field) { create(:project_custom_field, admin_only: true) } diff --git a/spec/helpers/projects_helper_spec.rb b/spec/helpers/projects_helper_spec.rb index d3dc98b7577..cc9c2809b05 100644 --- a/spec/helpers/projects_helper_spec.rb +++ b/spec/helpers/projects_helper_spec.rb @@ -99,4 +99,11 @@ RSpec.describe ProjectsHelper do ]) end end + + describe "#supported_export_formats" do + it "returns the supported export formats" do + expect(helper.supported_export_formats) + .to match_array(%w[xls csv pdf]) + end + end end From e47e3871965a156e51f5026edb774770c8bd967e Mon Sep 17 00:00:00 2001 From: ulferts Date: Fri, 27 Feb 2026 15:58:04 +0100 Subject: [PATCH 05/16] merge ProjectHelper into ProjectsHelper --- .../creation_wizard_status_component.rb | 2 +- .../projects/wizard/page_component.rb | 2 +- app/helpers/project_helper.rb | 37 ------------------- app/helpers/projects_helper.rb | 6 +++ app/mailers/project_artifacts_mailer.rb | 2 +- .../project/pdf_export/project_initiation.rb | 2 +- .../create_artifact_work_package_service.rb | 2 +- ...load_artifact_on_status_changes_service.rb | 2 +- .../overviews/page_header_component.rb | 2 +- .../creation_wizard_status_component_spec.rb | 2 +- .../pdf_export/project_initiation_spec.rb | 2 +- 11 files changed, 15 insertions(+), 46 deletions(-) delete mode 100644 app/helpers/project_helper.rb diff --git a/app/components/projects/creation_wizard_status_component.rb b/app/components/projects/creation_wizard_status_component.rb index ea2a852d9c5..a56884f7b5f 100644 --- a/app/components/projects/creation_wizard_status_component.rb +++ b/app/components/projects/creation_wizard_status_component.rb @@ -30,7 +30,7 @@ class Projects::CreationWizardStatusComponent < ApplicationComponent include ApplicationHelper - include ProjectHelper + include ProjectsHelper attr_reader :project, :current_user, :artifact_id, :artifact_work_package diff --git a/app/components/projects/wizard/page_component.rb b/app/components/projects/wizard/page_component.rb index 263cbb3cf21..66e88078fa6 100644 --- a/app/components/projects/wizard/page_component.rb +++ b/app/components/projects/wizard/page_component.rb @@ -34,7 +34,7 @@ module Projects include OpPrimer::ComponentHelpers include OpTurbo::Streamable include ApplicationHelper - include ProjectHelper + include ProjectsHelper def initialize(project:, custom_fields_by_section:, current_section:) super diff --git a/app/helpers/project_helper.rb b/app/helpers/project_helper.rb deleted file mode 100644 index f93abb512f6..00000000000 --- a/app/helpers/project_helper.rb +++ /dev/null @@ -1,37 +0,0 @@ -# frozen_string_literal: true - -#-- copyright -# OpenProject is an open source project management software. -# Copyright (C) the OpenProject GmbH -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License version 3. -# -# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: -# Copyright (C) 2006-2013 Jean-Philippe Lang -# Copyright (C) 2010-2013 the ChiliProject Team -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# -# See COPYRIGHT and LICENSE files for more details. -#++ - -module ProjectHelper - def project_creation_wizard_name(project) - I18n.t(project.project_creation_wizard_artifact_name, - default: :project_initiation_request, - scope: "settings.project_initiation_request.name.options") - end -end diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index 26cd2dad87f..0344a3885a6 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -92,4 +92,10 @@ module ProjectsHelper def supported_export_formats ::Exports::Register.list_formats(Project).map(&:to_s) end + + def project_creation_wizard_name(project) + I18n.t(project.project_creation_wizard_artifact_name, + default: :project_initiation_request, + scope: "settings.project_initiation_request.name.options") + end end diff --git a/app/mailers/project_artifacts_mailer.rb b/app/mailers/project_artifacts_mailer.rb index f84dfdab591..1e6b1fd1d97 100644 --- a/app/mailers/project_artifacts_mailer.rb +++ b/app/mailers/project_artifacts_mailer.rb @@ -29,7 +29,7 @@ #++ class ProjectArtifactsMailer < ApplicationMailer - include ProjectHelper + include ProjectsHelper include Exports::PDF::Common::Macro def creation_wizard_submitted(user, project, artifact_work_package) diff --git a/app/models/project/pdf_export/project_initiation.rb b/app/models/project/pdf_export/project_initiation.rb index 1feb1276647..22d57427a81 100644 --- a/app/models/project/pdf_export/project_initiation.rb +++ b/app/models/project/pdf_export/project_initiation.rb @@ -39,7 +39,7 @@ class Project::PDFExport::ProjectInitiation < Exports::Exporter include Project::PDFExport::Common::ProjectAttributes include Project::PDFExport::ProjectInitiation::Cover include Project::PDFExport::ProjectInitiation::Styles - include ProjectHelper + include ProjectsHelper attr_accessor :pdf diff --git a/app/services/projects/creation_wizard/create_artifact_work_package_service.rb b/app/services/projects/creation_wizard/create_artifact_work_package_service.rb index e573500d066..eefb86fea38 100644 --- a/app/services/projects/creation_wizard/create_artifact_work_package_service.rb +++ b/app/services/projects/creation_wizard/create_artifact_work_package_service.rb @@ -31,7 +31,7 @@ module Projects::CreationWizard class CreateArtifactWorkPackageService < ::BaseServices::BaseContracted include Contracted - include ProjectHelper + include ProjectsHelper include ArtifactExporter include Rails.application.routes.url_helpers prepend Projects::Concerns::UpdateDemoData diff --git a/app/services/projects/creation_wizard/reupload_artifact_on_status_changes_service.rb b/app/services/projects/creation_wizard/reupload_artifact_on_status_changes_service.rb index 1e124a78e26..687f6e7f836 100644 --- a/app/services/projects/creation_wizard/reupload_artifact_on_status_changes_service.rb +++ b/app/services/projects/creation_wizard/reupload_artifact_on_status_changes_service.rb @@ -31,7 +31,7 @@ module Projects::CreationWizard class ReuploadArtifactOnStatusChangesService include Contracted - include ProjectHelper + include ProjectsHelper include ArtifactExporter include Rails.application.routes.url_helpers prepend Projects::Concerns::UpdateDemoData diff --git a/modules/overviews/app/components/overviews/page_header_component.rb b/modules/overviews/app/components/overviews/page_header_component.rb index a2ff7ea4f1b..89d6c92faaf 100644 --- a/modules/overviews/app/components/overviews/page_header_component.rb +++ b/modules/overviews/app/components/overviews/page_header_component.rb @@ -33,7 +33,7 @@ module Overviews extend Dry::Initializer include ApplicationHelper - include ProjectHelper + include ProjectsHelper include Redmine::I18n option :project diff --git a/spec/components/projects/creation_wizard_status_component_spec.rb b/spec/components/projects/creation_wizard_status_component_spec.rb index 225117d7a7c..047085fa7a9 100644 --- a/spec/components/projects/creation_wizard_status_component_spec.rb +++ b/spec/components/projects/creation_wizard_status_component_spec.rb @@ -32,7 +32,7 @@ require "rails_helper" RSpec.describe Projects::CreationWizardStatusComponent, type: :component do include ApplicationHelper - include ProjectHelper + include ProjectsHelper include Rails.application.routes.url_helpers let(:current_user) { build_stubbed(:user) } diff --git a/spec/models/project/pdf_export/project_initiation_spec.rb b/spec/models/project/pdf_export/project_initiation_spec.rb index 23a1d4e0c46..d9a27768314 100644 --- a/spec/models/project/pdf_export/project_initiation_spec.rb +++ b/spec/models/project/pdf_export/project_initiation_spec.rb @@ -34,7 +34,7 @@ require_relative "../../projects/exporter/exportable_project_context" RSpec.describe Project::PDFExport::ProjectInitiation do include PDFExportSpecUtils - include ProjectHelper + include ProjectsHelper include Redmine::I18n include_context "with a project with an arrangement of custom fields" From 00e9f89acea2ae13b68a59e772d5753d437007e6 Mon Sep 17 00:00:00 2001 From: ulferts Date: Fri, 27 Feb 2026 16:00:03 +0100 Subject: [PATCH 06/16] move helper methods into helper --- app/controllers/projects_controller.rb | 8 -------- app/helpers/projects_helper.rb | 6 ++++++ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 303328d4d84..33412f7bf6e 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -338,12 +338,4 @@ class ProjectsController < ApplicationController def login_back_url_params params.permit(:parent_id, :template_id, :step, :next_section) end - - def portfolio_management_feature_required? = params[:workspace_type].in?(%w[portfolio program]) - - def portfolio_management_feature_missing? - portfolio_management_feature_required? && !EnterpriseToken.allows_to?(:portfolio_management) - end - - helper_method :portfolio_management_feature_missing? end diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index 0344a3885a6..ff4afb8f97e 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -98,4 +98,10 @@ module ProjectsHelper default: :project_initiation_request, scope: "settings.project_initiation_request.name.options") end + + def portfolio_management_feature_required? = params[:workspace_type].in?(%w[portfolio program]) + + def portfolio_management_feature_missing? + portfolio_management_feature_required? && !EnterpriseToken.allows_to?(:portfolio_management) + end end From d27a3bcff44f9a9fac06bf12596c1d1fcce4fd23 Mon Sep 17 00:00:00 2001 From: Maya Berdygylyjova Date: Mon, 2 Mar 2026 10:43:20 +0100 Subject: [PATCH 07/16] adding screenshots adding screenshots and descriptions --- .../integrations/mcp-server/README.md | 33 ++++++++++++++---- .../openproject_system_guide_new_mcp.png | Bin 0 -> 123680 bytes ...openproject_system_guide_new_mcp_tools.png | Bin 0 -> 126040 bytes ...openproject_system_guide_new_oauth_mcp.png | Bin 0 -> 248029 bytes 4 files changed, 26 insertions(+), 7 deletions(-) create mode 100644 docs/system-admin-guide/integrations/mcp-server/openproject_system_guide_new_mcp.png create mode 100644 docs/system-admin-guide/integrations/mcp-server/openproject_system_guide_new_mcp_tools.png create mode 100644 docs/system-admin-guide/integrations/mcp-server/openproject_system_guide_new_oauth_mcp.png diff --git a/docs/system-admin-guide/integrations/mcp-server/README.md b/docs/system-admin-guide/integrations/mcp-server/README.md index 98fe7b01845..8f888079f38 100644 --- a/docs/system-admin-guide/integrations/mcp-server/README.md +++ b/docs/system-admin-guide/integrations/mcp-server/README.md @@ -55,14 +55,33 @@ by OpenProject already, namely: In case OpenProject is used as the authentication provider, the configuration for the client has to be prepared by the administrator. Go to *Administration -> Authentication -> OAuth applications* and create an application with the `mcp` scope, entering -the "Redirect URI" according to the instructions of your MCP client. Make sure that the application is marked as confidential. +the "Redirect URI" according to the instructions of your MCP client. + +> [!IMPORTANT] +> +> Make sure that the application is marked as confidential. + +![Create new OAuth application for an MCP server in OpenProject administration](openproject_system_guide_new_oauth_mcp.png) + + ### Customization -Under *Administration -> Artificial Intelligence (AI) -> Model Context Protocol (MCP)* you can customize the MCP server further. +You can customize the MCP server further under *Administration -> Artificial Intelligence (AI) -> Model Context Protocol (MCP)*. -Tools and Resources offered via MCP can be disabled separately here, as well as the entire MCP server. You can also change the -descriptions and titles indicated towards MCP clients. This can be useful to introduce alternative naming for certain entities. -For example if work packages are called "work items" in your day-to-day language, it can be helpful to rename "Search Work Packages" -to "Search Work Items", so that users interacting with the MCP client understand what a tool does and the language model has an -additional cue that there is an alias for "work packages". +Here you can enable or disable the entire MCP server. You can also change the MCP server titles and descriptions indicated towards MCP clients, and the response format. + +The available response format options are: + +- **Full**: The most compatible option. Tool responses will include both regular and structured content, allowing MCP clients to choose which format they want to read. This may increase the number of tokens that the language model has to process, potentially increasing cost and decreasing performance. +- **Structured content only**: Choose this if you are certain that MCP clients connecting to this instance support structured content. Tool responses will only include structured content and leave out its text representation. +- **Content only**: Choose this if MCP clients connecting to this instance do not support structured content. Tool responses will only contain plain text content and leave out the structured version. + +![Model context protocol (MCP) settings under OpenProject administration](openproject_system_guide_new_mcp.png) + + +You can also disable individual tools and resources provided via MCP. This can be useful if you want to introduce alternative naming for certain entities or limit available functionality. + +For example if work packages are called "work items" in your day-to-day language, it can be helpful to rename *Search work packages* to *Search work items*, so that users interacting with the MCP client understand what a tool does and the language model has an additional cue that there is an alias for "work packages". + +![MCP tools section settings in OpenProject administration](openproject_system_guide_new_mcp_tools.png) \ No newline at end of file diff --git a/docs/system-admin-guide/integrations/mcp-server/openproject_system_guide_new_mcp.png b/docs/system-admin-guide/integrations/mcp-server/openproject_system_guide_new_mcp.png new file mode 100644 index 0000000000000000000000000000000000000000..4de3c622477a1d9f8da2edb758120fdb595eeeea GIT binary patch literal 123680 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 AX#fBK literal 0 HcmV?d00001 diff --git a/docs/system-admin-guide/integrations/mcp-server/openproject_system_guide_new_mcp_tools.png b/docs/system-admin-guide/integrations/mcp-server/openproject_system_guide_new_mcp_tools.png new file mode 100644 index 0000000000000000000000000000000000000000..d724c918f31aba0011d65ccc12f938e8560a57f1 GIT binary patch literal 126040 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

~%PwCmgsF!{zwnA%FVzYE9NaHUe?U_BM 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

@H-iJ=P`xT>weP#GW@2&Uqpm#j#7&z4r=9?9>C+ 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 Z1)m9VJFGP-e|Q882@zT0G9g{R{|Dat65jv- literal 0 HcmV?d00001 diff --git a/docs/system-admin-guide/integrations/mcp-server/openproject_system_guide_new_oauth_mcp.png b/docs/system-admin-guide/integrations/mcp-server/openproject_system_guide_new_oauth_mcp.png new file mode 100644 index 0000000000000000000000000000000000000000..455dca337a984291dbfa5df0256570305615f483 GIT binary patch literal 248029 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 z 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

#H10WEl94-a;g$m1`Q&0haH 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

X)+h+5I3033a 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 z�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 Date: Mon, 2 Mar 2026 13:09:12 +0100 Subject: [PATCH 08/16] Indicate MCP server url in config UI Giving admins quick access to this URL, because it will be required during setup of a client. --- .../server_url_component.html.erb | 50 +++++++++++++++++++ .../server_url_component.rb | 39 +++++++++++++++ app/forms/mcp_configurations/server_form.rb | 4 ++ config/locales/en.yml | 5 ++ 4 files changed, 98 insertions(+) create mode 100644 app/components/mcp_configurations/server_url_component.html.erb create mode 100644 app/components/mcp_configurations/server_url_component.rb diff --git a/app/components/mcp_configurations/server_url_component.html.erb b/app/components/mcp_configurations/server_url_component.html.erb new file mode 100644 index 00000000000..96c842a1ce2 --- /dev/null +++ b/app/components/mcp_configurations/server_url_component.html.erb @@ -0,0 +1,50 @@ +<%#-- 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. + +++#%> + +<%= +render(Primer::OpenProject::InputGroup.new(input_width: :large)) do |input_group| + input_group.with_text_input( + name: :server_url, + label: t(".label"), + visually_hide_label: false, + value: server_url + ) + + input_group.with_trailing_action_clipboard_copy_button( + value: server_url, + aria: { + label: I18n.t("button_copy_to_clipboard") + } + ) + + input_group.with_caption do + t(".caption") + end +end +%> diff --git a/app/components/mcp_configurations/server_url_component.rb b/app/components/mcp_configurations/server_url_component.rb new file mode 100644 index 00000000000..a5f2ac07184 --- /dev/null +++ b/app/components/mcp_configurations/server_url_component.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +module McpConfigurations + class ServerUrlComponent < ApplicationComponent + include OpPrimer::ComponentHelpers + + def server_url + url_helpers.api_mcp_url + end + end +end diff --git a/app/forms/mcp_configurations/server_form.rb b/app/forms/mcp_configurations/server_form.rb index 97e5a751a56..678c6fc43da 100644 --- a/app/forms/mcp_configurations/server_form.rb +++ b/app/forms/mcp_configurations/server_form.rb @@ -39,6 +39,10 @@ module McpConfigurations ) if server_enabled? + f.html_content do + render(McpConfigurations::ServerUrlComponent.new) + end + f.text_field( name: :title, label: McpConfiguration.human_attribute_name(:title), diff --git a/config/locales/en.yml b/config/locales/en.yml index 0cf4bc234b9..4314a9e54e5 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -635,6 +635,11 @@ en: 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." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" + op_dry_validation: or: "or" errors: From f92e452789020465eed30353e0eb47e111606a79 Mon Sep 17 00:00:00 2001 From: Jan Sandbrink Date: Mon, 2 Mar 2026 17:01:18 +0100 Subject: [PATCH 09/16] Indicate that MCP is still in beta --- config/locales/en.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index 0cf4bc234b9..1972ea54388 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -296,7 +296,7 @@ en: mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" From 6c4911d8acb061f720f723f520ca2a324e618671 Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Tue, 3 Mar 2026 11:15:11 +0000 Subject: [PATCH 10/16] update locales from crowdin [ci skip] --- config/locales/crowdin/af.yml | 37 +++++++++++++++-------------- config/locales/crowdin/ar.yml | 37 +++++++++++++++-------------- config/locales/crowdin/az.yml | 37 +++++++++++++++-------------- config/locales/crowdin/be.yml | 37 +++++++++++++++-------------- config/locales/crowdin/bg.yml | 37 +++++++++++++++-------------- config/locales/crowdin/ca.yml | 37 +++++++++++++++-------------- config/locales/crowdin/ckb-IR.yml | 37 +++++++++++++++-------------- config/locales/crowdin/cs.yml | 37 +++++++++++++++-------------- config/locales/crowdin/da.yml | 37 +++++++++++++++-------------- config/locales/crowdin/de.yml | 39 ++++++++++++++++--------------- config/locales/crowdin/el.yml | 37 +++++++++++++++-------------- config/locales/crowdin/eo.yml | 37 +++++++++++++++-------------- config/locales/crowdin/es.yml | 39 ++++++++++++++++--------------- config/locales/crowdin/et.yml | 37 +++++++++++++++-------------- config/locales/crowdin/eu.yml | 37 +++++++++++++++-------------- config/locales/crowdin/fa.yml | 37 +++++++++++++++-------------- config/locales/crowdin/fi.yml | 37 +++++++++++++++-------------- config/locales/crowdin/fil.yml | 37 +++++++++++++++-------------- config/locales/crowdin/fr.yml | 39 ++++++++++++++++--------------- config/locales/crowdin/he.yml | 37 +++++++++++++++-------------- config/locales/crowdin/hi.yml | 37 +++++++++++++++-------------- config/locales/crowdin/hr.yml | 37 +++++++++++++++-------------- config/locales/crowdin/hu.yml | 37 +++++++++++++++-------------- config/locales/crowdin/id.yml | 37 +++++++++++++++-------------- config/locales/crowdin/it.yml | 39 ++++++++++++++++--------------- config/locales/crowdin/ja.yml | 37 +++++++++++++++-------------- config/locales/crowdin/ka.yml | 37 +++++++++++++++-------------- config/locales/crowdin/kk.yml | 37 +++++++++++++++-------------- config/locales/crowdin/ko.yml | 39 ++++++++++++++++--------------- config/locales/crowdin/lt.yml | 37 +++++++++++++++-------------- config/locales/crowdin/lv.yml | 37 +++++++++++++++-------------- config/locales/crowdin/mn.yml | 37 +++++++++++++++-------------- config/locales/crowdin/ms.yml | 37 +++++++++++++++-------------- config/locales/crowdin/ne.yml | 37 +++++++++++++++-------------- config/locales/crowdin/nl.yml | 37 +++++++++++++++-------------- config/locales/crowdin/no.yml | 37 +++++++++++++++-------------- config/locales/crowdin/pl.yml | 39 ++++++++++++++++--------------- config/locales/crowdin/pt-BR.yml | 39 ++++++++++++++++--------------- config/locales/crowdin/pt-PT.yml | 39 ++++++++++++++++--------------- config/locales/crowdin/ro.yml | 37 +++++++++++++++-------------- config/locales/crowdin/ru.yml | 39 ++++++++++++++++--------------- config/locales/crowdin/rw.yml | 37 +++++++++++++++-------------- config/locales/crowdin/si.yml | 37 +++++++++++++++-------------- config/locales/crowdin/sk.yml | 37 +++++++++++++++-------------- config/locales/crowdin/sl.yml | 37 +++++++++++++++-------------- config/locales/crowdin/sr.yml | 37 +++++++++++++++-------------- config/locales/crowdin/sv.yml | 37 +++++++++++++++-------------- config/locales/crowdin/th.yml | 37 +++++++++++++++-------------- config/locales/crowdin/tr.yml | 39 ++++++++++++++++--------------- config/locales/crowdin/uk.yml | 39 ++++++++++++++++--------------- config/locales/crowdin/uz.yml | 37 +++++++++++++++-------------- config/locales/crowdin/vi.yml | 39 ++++++++++++++++--------------- config/locales/crowdin/zh-CN.yml | 39 ++++++++++++++++--------------- config/locales/crowdin/zh-TW.yml | 39 ++++++++++++++++--------------- 54 files changed, 1040 insertions(+), 986 deletions(-) diff --git a/config/locales/crowdin/af.yml b/config/locales/crowdin/af.yml index e9e347a816e..25fd7191cd5 100644 --- a/config/locales/crowdin/af.yml +++ b/config/locales/crowdin/af.yml @@ -125,7 +125,7 @@ af: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ af: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ af: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ af: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ af: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ af: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3068,17 +3068,18 @@ af: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3111,7 +3112,7 @@ af: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/ar.yml b/config/locales/crowdin/ar.yml index 07c05820073..66b0387da8e 100644 --- a/config/locales/crowdin/ar.yml +++ b/config/locales/crowdin/ar.yml @@ -125,7 +125,7 @@ ar: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ ar: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ ar: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -246,8 +246,8 @@ ar: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -255,8 +255,8 @@ ar: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -268,11 +268,11 @@ ar: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3292,17 +3292,18 @@ ar: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3335,7 +3336,7 @@ ar: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/az.yml b/config/locales/crowdin/az.yml index b8e9a48441d..d1474945fd4 100644 --- a/config/locales/crowdin/az.yml +++ b/config/locales/crowdin/az.yml @@ -125,7 +125,7 @@ az: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ az: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ az: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ az: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ az: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ az: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3068,17 +3068,18 @@ az: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3111,7 +3112,7 @@ az: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/be.yml b/config/locales/crowdin/be.yml index e49c20d4eab..7f2261ff337 100644 --- a/config/locales/crowdin/be.yml +++ b/config/locales/crowdin/be.yml @@ -125,7 +125,7 @@ be: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ be: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ be: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -234,8 +234,8 @@ be: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -243,8 +243,8 @@ be: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -256,11 +256,11 @@ be: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3180,17 +3180,18 @@ be: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3223,7 +3224,7 @@ be: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/bg.yml b/config/locales/crowdin/bg.yml index b9bb7c61985..a99b96a1c71 100644 --- a/config/locales/crowdin/bg.yml +++ b/config/locales/crowdin/bg.yml @@ -125,7 +125,7 @@ bg: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ bg: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ bg: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ bg: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ bg: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ bg: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3068,17 +3068,18 @@ bg: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3111,7 +3112,7 @@ bg: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/ca.yml b/config/locales/crowdin/ca.yml index b304639359f..d57564d777b 100644 --- a/config/locales/crowdin/ca.yml +++ b/config/locales/crowdin/ca.yml @@ -125,7 +125,7 @@ ca: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ ca: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ ca: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ ca: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ ca: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ ca: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3065,17 +3065,18 @@ ca: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Actualitza a l'edició Enterprise" postgres_migration: "Migrant la teva instal·lació a PostgreSQL" @@ -3108,7 +3109,7 @@ ca: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/ckb-IR.yml b/config/locales/crowdin/ckb-IR.yml index f5f38515528..1165d9c1698 100644 --- a/config/locales/crowdin/ckb-IR.yml +++ b/config/locales/crowdin/ckb-IR.yml @@ -125,7 +125,7 @@ ckb-IR: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ ckb-IR: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ ckb-IR: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ ckb-IR: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ ckb-IR: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ ckb-IR: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3068,17 +3068,18 @@ ckb-IR: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3111,7 +3112,7 @@ ckb-IR: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/cs.yml b/config/locales/crowdin/cs.yml index 46a485c3cfb..50a899dee53 100644 --- a/config/locales/crowdin/cs.yml +++ b/config/locales/crowdin/cs.yml @@ -125,7 +125,7 @@ cs: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ cs: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ cs: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -234,8 +234,8 @@ cs: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -243,8 +243,8 @@ cs: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -256,11 +256,11 @@ cs: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3180,17 +3180,18 @@ cs: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgradovat na Enterprise Edici" postgres_migration: "Migrujte vaši instalaci na PostgreSQL" @@ -3223,7 +3224,7 @@ cs: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/da.yml b/config/locales/crowdin/da.yml index b50218004ce..eb8ea14934c 100644 --- a/config/locales/crowdin/da.yml +++ b/config/locales/crowdin/da.yml @@ -125,7 +125,7 @@ da: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ da: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ da: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ da: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ da: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ da: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3066,17 +3066,18 @@ da: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3109,7 +3110,7 @@ da: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/de.yml b/config/locales/crowdin/de.yml index 648d898354b..f53837ed1d6 100644 --- a/config/locales/crowdin/de.yml +++ b/config/locales/crowdin/de.yml @@ -125,7 +125,7 @@ de: new: "Neue Konfiguration" banner: title: "Begrenzter Import" - description: "Dieses Importtool befindet sich derzeit in der Betaphase und kann nur grundlegende Daten importieren: Projekte, Probleme (Name, Titel, Beschreibung), Benutzer (Name, E-Mail, Projektmitgliedschaft), Status und Typen. Es kann keine benutzerdefinierten Workflows, benutzerdefinierten Felder, Anhänge, Problembeziehungen oder Berechtigungen importieren. Wir unterstützen derzeit nur die Jira Server/Data Center Versionen 10.x und 11.x. Cloud-Instanzen werden derzeit nicht unterstützt." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ de: failed: "Verbindung fehlgeschlagen: Serverinformationen können nicht abgerufen werden" error: "Beim Testen der Verbindung ist ein unerwarteter Fehler aufgetreten" connection_error: "Verbindungsfehler: %{message}" - parse_error: "Die Antwort des Servers konnte nicht gelesen werden. Der Server ist möglicherweise keine gültige Jira-Instanz." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API hat den Fehlerstatus %{status} zurückgegeben. Bitte überprüfen Sie die URL Ihrer Jira-Instanz und Ihr API-Token." token_error: "Ungültiger API-Token. Bitte überprüfen Sie Ihre Zugangsdaten in der Konfiguration." missing_credentials: "Bitte geben Sie sowohl URL als auch Persönliches Zugangs-Token an, um die Verbindung zu testen" @@ -167,7 +167,7 @@ de: title: "Noch keine Importläufe eingerichtet" description: "Erstellen Sie einen Importlauf, um den Import von Informationen aus dieser Jira-Instanz zu starten" index: - description: "Sie können bei jedem Importlauf verschiedene Datensätze importieren. Es ist möglich, einen Importlauf unmittelbar danach rückgängig zu machen, aber nicht nach dem Finalisieren." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Importlauf" button_edit_configuration: "Konfiguration bearbeiten" status: @@ -222,8 +222,8 @@ de: fetch_data: title: "Metadaten der Instanz abrufen" caption_done: "Abgeschlossen" - description: "Klicken Sie auf die Schaltfläche unten, um den Host abzufragen und zu sehen, welche Daten für den Import zur Verfügung stehen." - button_fetch: "Verfügbare Daten vom Host prüfen" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Abrufen von Daten aus Jira..." groups_and_users: title: "Gruppen und Benutzer" @@ -231,8 +231,8 @@ de: title: "Umfang des Imports" caption: "Wählen Sie, was Sie in OpenProject importieren möchten" caption_done: "Abgeschlossen" - label_info: "Bitte beachten Sie, dass dieses Import-Tool in der Beta ist und nicht alle Arten von Daten importieren kann. Hier ist eine Zusammenfassung dessen, was die Host-URL für den Import bietet und was dieses Tool gerade importieren kann." - description: "Wählen Sie aus, welche Daten Sie aus den verfügbaren Daten vom Host importieren möchten." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Verfügbare Daten" label_not_available_data: "Nicht verfügbar für den Import" button_select_projects: "Projekte zum Importieren auswählen" @@ -244,11 +244,11 @@ de: label_importing: "Wird gerade importiert" elements: relations: "Beziehungen zwischen Tickets" - workflows: "Selbstdefinierte Workflows" + workflows: "Project-level workflows" users: "Accounts" sprints: "Sprints" schemes: "Schemas" - permissions: "Berechtigungen, Rollen" + permissions: "User, group and project permissions" confirm_import: title: "Daten importieren" caption: "Überprüfen Sie Ihre Importeinstellungen und starten Sie den Import" @@ -3060,17 +3060,18 @@ de: learn_about: "Erfahren Sie mehr über die neuen Funktionen" missing: "Es gibt noch keine hervorgehobenen Funktionen." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > - Dieses Release enthält verschiedene neue Funktionen und Verbesserungen, wie z. B: + The release contains various new features and improvements, such as: new_features_list: - line_0: Automatisierte Projektinitiierung (Enterprise Add-on). - line_1: "Besprechungen: Fügen Sie neue oder bestehende Arbeitspakete als Ergebnisse hinzu." - line_2: "Besprechungen: iCal-Antworten in OpenProject anzeigen." - line_3: "Wiederkehrende Besprechungen: Kopieren Sie Tagesordnungspunkte zur nächsten Besprechung." - line_4: "Freigabe für die Community-Edition: Hervorhebung von Attributen." - line_5: Warnung vor dem Öffnen externer Links in von Benutzern erstellten Texten (Enterprise Add-on). - line_6: Verbesserte Leistung und Benutzerfreundlichkeit, einschließlich des Aktivität-Tabs und des Dokumenten-Moduls. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Auf Enterprise Edition upgraden" postgres_migration: "Migration Ihrer Installation zu PostgreSQL" @@ -3103,7 +3104,7 @@ de: field_changed: "%{field} geändert von %{old_value} zu %{new_value}" field_set: "%{field} auf %{value} gesetzt" field_removed: "%{field} entfernt" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} gelöscht (%{link})" changed_with_diff: "%{field} geändert (%{link})" set_with_diff: "%{field} gesetzt (%{link})" diff --git a/config/locales/crowdin/el.yml b/config/locales/crowdin/el.yml index 2451b395b1c..f0e0a157662 100644 --- a/config/locales/crowdin/el.yml +++ b/config/locales/crowdin/el.yml @@ -125,7 +125,7 @@ el: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ el: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ el: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ el: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ el: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ el: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3064,17 +3064,18 @@ el: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Μεταφορά της εγκατάστασης σας σε PostgreSQL" @@ -3107,7 +3108,7 @@ el: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/eo.yml b/config/locales/crowdin/eo.yml index f076d8b4ee3..1a58f6bceaa 100644 --- a/config/locales/crowdin/eo.yml +++ b/config/locales/crowdin/eo.yml @@ -125,7 +125,7 @@ eo: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ eo: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ eo: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ eo: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ eo: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ eo: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3068,17 +3068,18 @@ eo: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Transmetanta vian instalon al PostgreSQL" @@ -3111,7 +3112,7 @@ eo: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/es.yml b/config/locales/crowdin/es.yml index 3126020eab2..80d43be348d 100644 --- a/config/locales/crowdin/es.yml +++ b/config/locales/crowdin/es.yml @@ -125,7 +125,7 @@ es: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ es: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ es: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ es: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ es: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ es: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3065,17 +3065,18 @@ es: learn_about: "Más información sobre todas las nuevas funciones" missing: "Aún no hay funciones destacadas." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > - El lanzamiento incluye varias funciones nuevas y mejoras, tales como: + The release contains various new features and improvements, such as: new_features_list: - line_0: Inicio automatizado de proyectos (extensión Enterprise). - line_1: "Reuniones: añada paquetes de trabajo nuevos o existentes como resultados." - line_2: "Reuniones: muestre las respuestas de iCal en OpenProject." - line_3: "Reuniones periódicas: duplique los puntos del orden del día para el siguiente evento." - line_4: "Lanzamiento para la versión Community: resaltado de atributos." - line_5: Advertencia antes de abrir enlaces externos en el contenido que ha proporcionado un usuario (extensión Enterprise). - line_6: Mejora del rendimiento y de la experiencia de usuario, incluida la pestaña Actividad y el módulo Documentos. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Actualizar a Enterprise" postgres_migration: "Migrando su instalación a PostgreSQL" @@ -3108,7 +3109,7 @@ es: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/et.yml b/config/locales/crowdin/et.yml index 2be80ea8023..f1c59715ea7 100644 --- a/config/locales/crowdin/et.yml +++ b/config/locales/crowdin/et.yml @@ -125,7 +125,7 @@ et: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ et: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ et: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ et: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ et: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ et: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3068,17 +3068,18 @@ et: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3111,7 +3112,7 @@ et: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/eu.yml b/config/locales/crowdin/eu.yml index be19446641a..367dadf6f0f 100644 --- a/config/locales/crowdin/eu.yml +++ b/config/locales/crowdin/eu.yml @@ -125,7 +125,7 @@ eu: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ eu: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ eu: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ eu: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ eu: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ eu: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3068,17 +3068,18 @@ eu: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3111,7 +3112,7 @@ eu: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/fa.yml b/config/locales/crowdin/fa.yml index 1e930f92869..1e93cf8de4a 100644 --- a/config/locales/crowdin/fa.yml +++ b/config/locales/crowdin/fa.yml @@ -125,7 +125,7 @@ fa: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ fa: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ fa: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ fa: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ fa: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ fa: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3068,17 +3068,18 @@ fa: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3111,7 +3112,7 @@ fa: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/fi.yml b/config/locales/crowdin/fi.yml index 2e28b7c7bb1..7bce6c3a585 100644 --- a/config/locales/crowdin/fi.yml +++ b/config/locales/crowdin/fi.yml @@ -125,7 +125,7 @@ fi: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ fi: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ fi: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ fi: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ fi: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ fi: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3068,17 +3068,18 @@ fi: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3111,7 +3112,7 @@ fi: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/fil.yml b/config/locales/crowdin/fil.yml index 18a112b4bab..9e32a10b33d 100644 --- a/config/locales/crowdin/fil.yml +++ b/config/locales/crowdin/fil.yml @@ -125,7 +125,7 @@ fil: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ fil: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ fil: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ fil: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ fil: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ fil: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3068,17 +3068,18 @@ fil: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3111,7 +3112,7 @@ fil: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/fr.yml b/config/locales/crowdin/fr.yml index 3305ff58173..cffce883013 100644 --- a/config/locales/crowdin/fr.yml +++ b/config/locales/crowdin/fr.yml @@ -125,7 +125,7 @@ fr: new: "Nouvelle configuration" banner: title: "Importation limitée" - description: "Cet outil d'importation est actuellement en version bêta et ne peut importer que des données de base : projets, problèmes (nom, titre, description), utilisateurs (nom, courriel, appartenance à un projet), statuts et types. Il ne peut pas importer les flux de travail personnalisés, les champs personnalisés, les pièces jointes, les relations entre les problèmes ou les autorisations. Nous ne prenons actuellement en charge que les versions 10.x et 11.x de Jira Server/Data Center. Les instances en nuage ne sont pas prises en charge pour le moment." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Nom" @@ -143,7 +143,7 @@ fr: failed: "Échec de la connexion : Impossible de récupérer les informations sur le serveur" error: "Une erreur inattendue s'est produite lors du test de la connexion" connection_error: "Erreur de connexion : %{message}" - parse_error: "Impossible d'analyser la réponse du serveur Jira. Le serveur n'est peut-être pas une instance Jira valide." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "L'API Jira a renvoyé le statut d'erreur %{status}. Veuillez vérifier l'URL de votre instance Jira et le jeton API." token_error: "Jeton API invalide. Veuillez vérifier vos informations d'identification dans la configuration." missing_credentials: "Veuillez fournir l'URL et le jeton d'accès personnel pour tester la connexion" @@ -167,7 +167,7 @@ fr: title: "Aucun cycle d'importation n'a encore été mis en place" description: "Créez une exécution d'importation pour commencer à importer des informations à partir de cette instance Jira" index: - description: "Vous pouvez importer différents ensembles de données à chaque cycle d'importation. Il est possible d'annuler une importation immédiatement après, mais pas après." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Importation" button_edit_configuration: "Editer la configuration" status: @@ -222,8 +222,8 @@ fr: fetch_data: title: "Récupérer les métadonnées de l'instance" caption_done: "Terminé" - description: "Cliquez sur le bouton ci-dessous pour interroger l'hôte et voir quelles données sont disponibles pour l'importation." - button_fetch: "Vérifier les données disponibles auprès de l'hôte" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Récupérer les données de Jira..." groups_and_users: title: "Groupes et utilisateurs" @@ -231,8 +231,8 @@ fr: title: "Champ d'application de l'importation" caption: "Choisissez ce que vous voulez importer dans OpenProject" caption_done: "Terminé" - label_info: "Veuillez noter que cet outil d'importation est en version bêta et qu'il ne peut pas importer tous les types de données. Voici un résumé de ce que l'URL de l'hôte offre à l'importation et de ce que cet outil est capable d'importer pour le moment." - description: "Sélectionnez les données que vous souhaitez importer parmi les données disponibles extraites de l'hôte." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Données disponibles" label_not_available_data: "Non disponible à l'importation" button_select_projects: "Sélectionnez les projets à importer" @@ -244,11 +244,11 @@ fr: label_importing: "Importation en cours" elements: relations: "Relations entre les questions" - workflows: "Flux de travail personnalisés" + workflows: "Project-level workflows" users: "Utilisateurs" sprints: "Sprints" schemes: "Schémas" - permissions: "Permissions, rôles" + permissions: "User, group and project permissions" confirm_import: title: "Importer les données" caption: "Vérifiez vos paramètres d'importation et démarrez l'importation" @@ -3066,17 +3066,18 @@ fr: learn_about: "En savoir plus sur les nouvelles fonctionnalités" missing: "Il n'y a pas encore de fonctionnalités mises en évidence." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > - Cette version contient plusieurs nouvelles fonctionnalités et améliorations, telles que: + The release contains various new features and improvements, such as: new_features_list: - line_0: Lancement automatisé de projets (module complémentaire Enterprise). - line_1: "Réunions : ajoutez des work packages nouveaux ou existants en tant que résultats." - line_2: "Réunions : afficher les réponses iCal dans OpenProject." - line_3: "Réunions récurrentes : dupliquez les points de l'ordre du jour lors de la prochaine réunion." - line_4: "Mise à disposition de la Communauté : Mise en évidence des attributs." - line_5: Avertissement avant l'ouverture de liens externes dans le contenu fourni par l'utilisateur (module complémentaire Enterprise). - line_6: Amélioration des performances et de l'expérience utilisateur, y compris l'onglet Activité et le module Documents. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Passer à la version Enterprise" postgres_migration: "Migration de votre installation vers PostgreSQL" @@ -3109,7 +3110,7 @@ fr: field_changed: "%{field} a changé de %{old_value} à %{new_value}" field_set: "%{field} sur %{value}" field_removed: "%{field} supprimée" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} supprimé (%{link})" changed_with_diff: "%{field} modifié (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/he.yml b/config/locales/crowdin/he.yml index 13af5b09a0b..d19afe492b8 100644 --- a/config/locales/crowdin/he.yml +++ b/config/locales/crowdin/he.yml @@ -125,7 +125,7 @@ he: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ he: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ he: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -234,8 +234,8 @@ he: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -243,8 +243,8 @@ he: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -256,11 +256,11 @@ he: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3180,17 +3180,18 @@ he: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3223,7 +3224,7 @@ he: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/hi.yml b/config/locales/crowdin/hi.yml index 16202baae77..06cfb140e5b 100644 --- a/config/locales/crowdin/hi.yml +++ b/config/locales/crowdin/hi.yml @@ -125,7 +125,7 @@ hi: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ hi: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ hi: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ hi: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ hi: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ hi: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3066,17 +3066,18 @@ hi: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3109,7 +3110,7 @@ hi: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/hr.yml b/config/locales/crowdin/hr.yml index db6085000dc..f583c1dce69 100644 --- a/config/locales/crowdin/hr.yml +++ b/config/locales/crowdin/hr.yml @@ -125,7 +125,7 @@ hr: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ hr: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ hr: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -228,8 +228,8 @@ hr: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -237,8 +237,8 @@ hr: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -250,11 +250,11 @@ hr: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3124,17 +3124,18 @@ hr: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3167,7 +3168,7 @@ hr: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/hu.yml b/config/locales/crowdin/hu.yml index d4f2556ba29..18bb6a30a08 100644 --- a/config/locales/crowdin/hu.yml +++ b/config/locales/crowdin/hu.yml @@ -125,7 +125,7 @@ hu: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ hu: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ hu: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ hu: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ hu: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ hu: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3067,17 +3067,18 @@ hu: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Váltás Vállalati Verzióra" postgres_migration: "A rendszer költöztetése PostreSQL-re" @@ -3110,7 +3111,7 @@ hu: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/id.yml b/config/locales/crowdin/id.yml index c2047aac0d7..39221c9c473 100644 --- a/config/locales/crowdin/id.yml +++ b/config/locales/crowdin/id.yml @@ -125,7 +125,7 @@ id: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ id: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ id: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -216,8 +216,8 @@ id: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -225,8 +225,8 @@ id: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -238,11 +238,11 @@ id: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3008,17 +3008,18 @@ id: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrasi instalasi anda ke PostgreSQL" @@ -3051,7 +3052,7 @@ id: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/it.yml b/config/locales/crowdin/it.yml index bcbe437459d..4833272b5e8 100644 --- a/config/locales/crowdin/it.yml +++ b/config/locales/crowdin/it.yml @@ -125,7 +125,7 @@ it: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ it: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ it: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ it: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ it: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ it: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3065,17 +3065,18 @@ it: learn_about: "Scopri di più su tutte le nuove funzionalità" missing: "Non ci sono ancora caratteristiche evidenziate." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > - Questa versione contiene diverse nuove funzionalità e miglioramenti, come ad esempio: + The release contains various new features and improvements, such as: new_features_list: - line_0: Avvio automatico del progetto (componente aggiuntivo Enterprise). - line_1: "Riunioni: aggiungi macro-attività nuove o esistenti come risultati." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Riunioni ricorrenti: duplica i punti dell'ordine del giorno della prossima ricorrenza." - line_4: "Rilascio alla community: evidenziazione degli attributi." - line_5: Avviso prima dell'apertura di link esterni nei contenuti forniti dall'utente (componente aggiuntivo Enterprise). - line_6: Prestazioni ed esperienza utente migliorate, compresa la scheda Attività e il modulo Documenti. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Aggiorna ad Enterprise edition" postgres_migration: "Migrazione dell'installazione su PostgreSQL" @@ -3108,7 +3109,7 @@ it: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/ja.yml b/config/locales/crowdin/ja.yml index 67c46403fb6..5ea6d7c67c1 100644 --- a/config/locales/crowdin/ja.yml +++ b/config/locales/crowdin/ja.yml @@ -125,7 +125,7 @@ ja: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ ja: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ ja: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -216,8 +216,8 @@ ja: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -225,8 +225,8 @@ ja: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -238,11 +238,11 @@ ja: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3010,17 +3010,18 @@ ja: learn_about: "すべての新機能の詳細" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "エンタープライズ版にアップグレード" postgres_migration: "PostgreSQL にインストールを移行しています" @@ -3053,7 +3054,7 @@ ja: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/ka.yml b/config/locales/crowdin/ka.yml index 5a0ab4ad657..d026d96d433 100644 --- a/config/locales/crowdin/ka.yml +++ b/config/locales/crowdin/ka.yml @@ -125,7 +125,7 @@ ka: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ ka: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ ka: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ ka: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ ka: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ ka: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3068,17 +3068,18 @@ ka: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3111,7 +3112,7 @@ ka: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/kk.yml b/config/locales/crowdin/kk.yml index f0a728b18b0..7a771cea20b 100644 --- a/config/locales/crowdin/kk.yml +++ b/config/locales/crowdin/kk.yml @@ -125,7 +125,7 @@ kk: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ kk: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ kk: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ kk: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ kk: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ kk: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3068,17 +3068,18 @@ kk: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3111,7 +3112,7 @@ kk: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/ko.yml b/config/locales/crowdin/ko.yml index fe4d8caa643..99dc8668f4f 100644 --- a/config/locales/crowdin/ko.yml +++ b/config/locales/crowdin/ko.yml @@ -125,7 +125,7 @@ ko: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ ko: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ ko: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -216,8 +216,8 @@ ko: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -225,8 +225,8 @@ ko: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -238,11 +238,11 @@ ko: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3012,17 +3012,18 @@ ko: learn_about: "새로운 모든 기능에 대해 자세히 알아보기" missing: "아직 강조 표시된 기능이 없습니다." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > - 이 릴리스에는 다음과 같은 다양한 새로운 기능과 개선 사항이 포함되어 있습니다. + The release contains various new features and improvements, such as: new_features_list: - line_0: 자동화된 프로젝트 시작(Enterprise 추가 기능). - line_1: "미팅: 새 작업 패키지 또는 기존 작업 패키지를 결과로 추가합니다." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "반복 미팅: 의제 항목을 다음 항목에 복제합니다." - line_4: "커뮤니티에 릴리스: 특성이 강조 표시됩니다." - line_5: 사용자 제공 콘텐츠에서 외부 링크를 열기 전에 표시되는 경고입니다(Enterprise 추가 기능). - line_6: 활동 탭 및 문서 모듈을 비롯한 성능 및 사용자 환경이 개선되었습니다. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Enterprise Edition으로 업그레이드" postgres_migration: "설치를 PostgreSQL로 마이그레이션" @@ -3055,7 +3056,7 @@ ko: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/lt.yml b/config/locales/crowdin/lt.yml index d59360cb9b7..cd14443f84f 100644 --- a/config/locales/crowdin/lt.yml +++ b/config/locales/crowdin/lt.yml @@ -125,7 +125,7 @@ lt: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ lt: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ lt: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -234,8 +234,8 @@ lt: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -243,8 +243,8 @@ lt: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -256,11 +256,11 @@ lt: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3177,17 +3177,18 @@ lt: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Pagerinti į Enterprise versiją" postgres_migration: "Migruojame jūsų instaliaciją į PostgreSQL" @@ -3220,7 +3221,7 @@ lt: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/lv.yml b/config/locales/crowdin/lv.yml index 4c88d51e6d8..ab7cc006903 100644 --- a/config/locales/crowdin/lv.yml +++ b/config/locales/crowdin/lv.yml @@ -125,7 +125,7 @@ lv: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ lv: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ lv: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -228,8 +228,8 @@ lv: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -237,8 +237,8 @@ lv: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -250,11 +250,11 @@ lv: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3124,17 +3124,18 @@ lv: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3167,7 +3168,7 @@ lv: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/mn.yml b/config/locales/crowdin/mn.yml index 1af193a51d3..e2574f42910 100644 --- a/config/locales/crowdin/mn.yml +++ b/config/locales/crowdin/mn.yml @@ -125,7 +125,7 @@ mn: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ mn: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ mn: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ mn: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ mn: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ mn: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3068,17 +3068,18 @@ mn: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3111,7 +3112,7 @@ mn: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/ms.yml b/config/locales/crowdin/ms.yml index 2206b3d1fa7..d4085320040 100644 --- a/config/locales/crowdin/ms.yml +++ b/config/locales/crowdin/ms.yml @@ -125,7 +125,7 @@ ms: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ ms: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ ms: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -216,8 +216,8 @@ ms: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -225,8 +225,8 @@ ms: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -238,11 +238,11 @@ ms: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3010,17 +3010,18 @@ ms: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Naik taraf ke edisi Enterprise" postgres_migration: "Mengalihkan pemasangan anda ke PostgreSQL" @@ -3053,7 +3054,7 @@ ms: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/ne.yml b/config/locales/crowdin/ne.yml index ebe1271a346..bc9bf97a475 100644 --- a/config/locales/crowdin/ne.yml +++ b/config/locales/crowdin/ne.yml @@ -125,7 +125,7 @@ ne: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ ne: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ ne: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ ne: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ ne: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ ne: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3068,17 +3068,18 @@ ne: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3111,7 +3112,7 @@ ne: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/nl.yml b/config/locales/crowdin/nl.yml index 3594e6bce60..68abeb5efe2 100644 --- a/config/locales/crowdin/nl.yml +++ b/config/locales/crowdin/nl.yml @@ -125,7 +125,7 @@ nl: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ nl: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ nl: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ nl: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ nl: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ nl: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3064,17 +3064,18 @@ nl: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade naar Enterprise-editie" postgres_migration: "Uw installatie overzetten naar PostgreSQL" @@ -3107,7 +3108,7 @@ nl: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/no.yml b/config/locales/crowdin/no.yml index f5a58b22794..4deb88659f3 100644 --- a/config/locales/crowdin/no.yml +++ b/config/locales/crowdin/no.yml @@ -125,7 +125,7 @@ new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3067,17 +3067,18 @@ learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Oppgrader til Enterprise utgaven" postgres_migration: "Overføre installasjonen til PostgreSQL" @@ -3110,7 +3111,7 @@ field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/pl.yml b/config/locales/crowdin/pl.yml index 414e9c45aa4..69f5e331c12 100644 --- a/config/locales/crowdin/pl.yml +++ b/config/locales/crowdin/pl.yml @@ -125,7 +125,7 @@ pl: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ pl: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ pl: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -234,8 +234,8 @@ pl: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -243,8 +243,8 @@ pl: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -256,11 +256,11 @@ pl: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3176,17 +3176,18 @@ pl: learn_about: "Dowiedz się więcej o wszystkich nowych funkcjach" missing: "Nie ma jeszcze wyróżnionych funkcji." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > - Wydanie zawiera różne nowe funkcje i ulepszenia, takie jak: + The release contains various new features and improvements, such as: new_features_list: - line_0: Zautomatyzowane inicjowanie projektów (dodatek wersji Enterprise). - line_1: "Spotkania: dodawaj nowe lub istniejące pakiety robocze jako wyniki." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Spotkania cykliczne: duplikuj punkty planu spotkania w następnym wystąpieniu." - line_4: "Udostępnianie społeczności: wyróżnianie atrybutów." - line_5: Ostrzeżenie przed otwarciem linków zewnętrznych w treści dostarczonej przez użytkownika (dodatek wersji Enterprise). - line_6: Ulepszona wydajność i wrażenia użytkownika, w tym karta Aktywność i moduł Dokumenty. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Aktualizuj do wersji Enterprise" postgres_migration: "Migrowanie instalacji do PostgreSQL" @@ -3219,7 +3220,7 @@ pl: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/pt-BR.yml b/config/locales/crowdin/pt-BR.yml index b67e578633d..bcf6b6f1adb 100644 --- a/config/locales/crowdin/pt-BR.yml +++ b/config/locales/crowdin/pt-BR.yml @@ -125,7 +125,7 @@ pt-BR: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ pt-BR: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ pt-BR: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ pt-BR: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ pt-BR: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ pt-BR: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3065,17 +3065,18 @@ pt-BR: learn_about: "Saiba mais sobre todos os novos recursos" missing: "Ainda não há recursos destacados." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > - A versão traz diversos novos recursos e melhorias, como: + The release contains various new features and improvements, such as: new_features_list: - line_0: Início de projeto automatizado (complementos Enterprise). - line_1: "Reuniões: adicionar pacotes de trabalho novos ou existentes como resultados." - line_2: "Reuniões: exibir respostas do iCal no OpenProject." - line_3: "Reuniões recorrentes: duplicar itens da pauta para a próxima ocorrência." - line_4: "Versão para a comunidade: Realce de atributos." - line_5: Aviso antes de abrir links externos em conteúdo fornecido pelo usuário (complementos Enterprise). - line_6: Desempenho e experiência do usuário aprimorados, incluindo a aba Atividade e o módulo Documentos. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Atualizar para a edição Enterprise" postgres_migration: "Migrando sua instalação para PostgreSQL" @@ -3108,7 +3109,7 @@ pt-BR: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/pt-PT.yml b/config/locales/crowdin/pt-PT.yml index 3b46e20b846..9ad5c4d9850 100644 --- a/config/locales/crowdin/pt-PT.yml +++ b/config/locales/crowdin/pt-PT.yml @@ -125,7 +125,7 @@ pt-PT: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ pt-PT: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ pt-PT: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ pt-PT: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ pt-PT: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ pt-PT: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3065,17 +3065,18 @@ pt-PT: learn_about: "Mais informações sobre todas as novas funcionalidades" missing: "Ainda não há nenhum recurso destacado." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > - A versão contém várias novas funcionalidades e melhorias, tais como: + The release contains various new features and improvements, such as: new_features_list: - line_0: Iniciação automatizada de projetos (complemento Enterprise). - line_1: "Reuniões: adicione pacotes de trabalho novos ou existentes como resultados." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Reuniões recorrentes: duplicar os pontos da agenda para a próxima ocorrência." - line_4: "Disponibilizar para a Comunidade: Destaque dos atributos." - line_5: Aviso antes de abrir ligações externas em conteúdos fornecidos pelo utilizador (complemento Enterprise). - line_6: Melhoria do desempenho e da experiência do utilizador, incluindo o separador Atividade e o módulo Documentos. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Aprimorar para a edição Enterprise" postgres_migration: "A migrar a sua instalação para PostgreSQL" @@ -3108,7 +3109,7 @@ pt-PT: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/ro.yml b/config/locales/crowdin/ro.yml index b93387d5dea..3560f500d80 100644 --- a/config/locales/crowdin/ro.yml +++ b/config/locales/crowdin/ro.yml @@ -125,7 +125,7 @@ ro: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ ro: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ ro: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -228,8 +228,8 @@ ro: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -237,8 +237,8 @@ ro: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -250,11 +250,11 @@ ro: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3124,17 +3124,18 @@ ro: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Actualizează la ediția Enterprise" postgres_migration: "Migrarea instalației dvs. către PostgreSQL" @@ -3167,7 +3168,7 @@ ro: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/ru.yml b/config/locales/crowdin/ru.yml index 4176398a990..1de83a7e3b5 100644 --- a/config/locales/crowdin/ru.yml +++ b/config/locales/crowdin/ru.yml @@ -125,7 +125,7 @@ ru: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ ru: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ ru: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -234,8 +234,8 @@ ru: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -243,8 +243,8 @@ ru: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -256,11 +256,11 @@ ru: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3178,17 +3178,18 @@ ru: learn_about: "Узнайте больше о всех новых функциях" missing: "Нет выделенных функций." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > - Релиз содержит различные новые функции и улучшения, такие как: + The release contains various new features and improvements, such as: new_features_list: - line_0: Автоматическая инициация проекта. - line_1: "Совещания: добавление новых или существующих пакетов работ в качестве итогов совещания." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Повторяющиеся совещания: продублируйте пункты повестки дня на следующее совещание." - line_4: "Выпуск для сообщества: Выделение атрибутов." - line_5: Предупреждение перед открытием внешних ссылок в содержании, предоставленном пользователем (Enterprise add-on). - line_6: Улучшена производительность и пользовательский опыт, включая вкладку "Деятельность" и модуль "Документы". + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Обновить до корпоративной версии" postgres_migration: "Перенос вашей установки в PostgreSQL" @@ -3221,7 +3222,7 @@ ru: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/rw.yml b/config/locales/crowdin/rw.yml index d42deb39386..91273c28d75 100644 --- a/config/locales/crowdin/rw.yml +++ b/config/locales/crowdin/rw.yml @@ -125,7 +125,7 @@ rw: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ rw: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ rw: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ rw: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ rw: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ rw: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3068,17 +3068,18 @@ rw: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3111,7 +3112,7 @@ rw: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/si.yml b/config/locales/crowdin/si.yml index 388cab6c8ae..11c68c707d5 100644 --- a/config/locales/crowdin/si.yml +++ b/config/locales/crowdin/si.yml @@ -125,7 +125,7 @@ si: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ si: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ si: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ si: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ si: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ si: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3068,17 +3068,18 @@ si: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "ඔබගේ ස්ථාපනය PostgreSQL වෙත සංක්රමණය කිරීම" @@ -3111,7 +3112,7 @@ si: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/sk.yml b/config/locales/crowdin/sk.yml index 1dc3d1008d0..4a584ef22a5 100644 --- a/config/locales/crowdin/sk.yml +++ b/config/locales/crowdin/sk.yml @@ -125,7 +125,7 @@ sk: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ sk: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ sk: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -234,8 +234,8 @@ sk: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -243,8 +243,8 @@ sk: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -256,11 +256,11 @@ sk: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3180,17 +3180,18 @@ sk: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3223,7 +3224,7 @@ sk: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/sl.yml b/config/locales/crowdin/sl.yml index d13849c9af8..b5a18d1d714 100644 --- a/config/locales/crowdin/sl.yml +++ b/config/locales/crowdin/sl.yml @@ -125,7 +125,7 @@ sl: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ sl: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ sl: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -234,8 +234,8 @@ sl: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -243,8 +243,8 @@ sl: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -256,11 +256,11 @@ sl: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3179,17 +3179,18 @@ sl: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Selitev namestitve na PostgreSQL" @@ -3222,7 +3223,7 @@ sl: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/sr.yml b/config/locales/crowdin/sr.yml index 6ae9b19b5e7..4765b28dca5 100644 --- a/config/locales/crowdin/sr.yml +++ b/config/locales/crowdin/sr.yml @@ -125,7 +125,7 @@ sr: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ sr: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ sr: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -228,8 +228,8 @@ sr: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -237,8 +237,8 @@ sr: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -250,11 +250,11 @@ sr: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3124,17 +3124,18 @@ sr: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3167,7 +3168,7 @@ sr: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/sv.yml b/config/locales/crowdin/sv.yml index 8df2010f8dd..fe43eef0be6 100644 --- a/config/locales/crowdin/sv.yml +++ b/config/locales/crowdin/sv.yml @@ -125,7 +125,7 @@ sv: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ sv: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ sv: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ sv: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ sv: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ sv: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3068,17 +3068,18 @@ sv: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Uppgradera till Enterprise utgåvan" postgres_migration: "Migrera din installation till PostgreSQL" @@ -3111,7 +3112,7 @@ sv: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/th.yml b/config/locales/crowdin/th.yml index c7764062a1c..81a0c77de26 100644 --- a/config/locales/crowdin/th.yml +++ b/config/locales/crowdin/th.yml @@ -125,7 +125,7 @@ th: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ th: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ th: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -216,8 +216,8 @@ th: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -225,8 +225,8 @@ th: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -238,11 +238,11 @@ th: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3012,17 +3012,18 @@ th: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3055,7 +3056,7 @@ th: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/tr.yml b/config/locales/crowdin/tr.yml index b3a49b30efc..63566d1a7b1 100644 --- a/config/locales/crowdin/tr.yml +++ b/config/locales/crowdin/tr.yml @@ -125,7 +125,7 @@ tr: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ tr: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ tr: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ tr: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ tr: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ tr: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3068,17 +3068,18 @@ tr: learn_about: "Tüm yeni özellikler hakkında daha fazla bilgi edinin" missing: "Henüz vurgulanan bir özellik yok." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > - Sürüm, aşağıdakiler gibi çeşitli yeni özellikler ve iyileştirmeler içeriyor: + The release contains various new features and improvements, such as: new_features_list: - line_0: Otomatik proje başlatma (Kurumsal eklenti). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Toplantılar: OpenProject'te iCal yanıtlarını gösterin." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Enterprise sürümüne yükseltin" postgres_migration: "Kurulumunuzu PostgreSQL'e taşıyın" @@ -3111,7 +3112,7 @@ tr: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/uk.yml b/config/locales/crowdin/uk.yml index 083c2a092a1..15e9b4b4d69 100644 --- a/config/locales/crowdin/uk.yml +++ b/config/locales/crowdin/uk.yml @@ -125,7 +125,7 @@ uk: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ uk: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ uk: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -234,8 +234,8 @@ uk: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -243,8 +243,8 @@ uk: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -256,11 +256,11 @@ uk: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3174,17 +3174,18 @@ uk: learn_about: "Дізнайтеся більше про всі нові функції" missing: "Ще немає виділених функцій." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > - Цей випуск містить різноманітні нові функції та покращення, такі як: + The release contains various new features and improvements, such as: new_features_list: - line_0: Автоматизований запуск проєктів (надбудова Enterprise). - line_1: "Наради: додавайте нові або наявні пакети робіт як підсумки." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Повторювані наради: копіюйте пункти порядку денного в наступну нараду." - line_4: "Випуск Community: виділення атрибутів." - line_5: Попередження перед відкриттям зовнішніх посилань у контенті, створеному користувачем (надбудова Enterprise). - line_6: Покращення продуктивності й взаємодії з користувачем, зокрема на вкладці «Дії» і в модулі «Документи». + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Оновлення до версії Enterprise" postgres_migration: "Міграція інсталяції в PostgreSQL" @@ -3217,7 +3218,7 @@ uk: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/uz.yml b/config/locales/crowdin/uz.yml index 3165879e291..9f405c414c5 100644 --- a/config/locales/crowdin/uz.yml +++ b/config/locales/crowdin/uz.yml @@ -125,7 +125,7 @@ uz: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ uz: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ uz: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -222,8 +222,8 @@ uz: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -231,8 +231,8 @@ uz: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -244,11 +244,11 @@ uz: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3068,17 +3068,18 @@ uz: learn_about: "Learn more about all new features" missing: "There are no highlighted features yet." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: Automated project initiation (Enterprise add-on). - line_1: "Meetings: add new or existing work packages as outcomes." - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "Recurring meetings: duplicate agenda items to the next occurrence." - line_4: "Release to Community: Attribute highlighting." - line_5: Warning before opening external links in user-provided content (Enterprise add-on). - line_6: Improved performance and user experience, including the Activity tab and Documents module. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Upgrade to Enterprise edition" postgres_migration: "Migrating your installation to PostgreSQL" @@ -3111,7 +3112,7 @@ uz: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/vi.yml b/config/locales/crowdin/vi.yml index 1037f119c5d..106153ace2f 100644 --- a/config/locales/crowdin/vi.yml +++ b/config/locales/crowdin/vi.yml @@ -125,7 +125,7 @@ vi: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ vi: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ vi: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -216,8 +216,8 @@ vi: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -225,8 +225,8 @@ vi: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -238,11 +238,11 @@ vi: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3010,17 +3010,18 @@ vi: learn_about: "Tìm hiểu thêm về tất cả các tính năng mới" missing: "Chưa có tính năng nổi bật nào." #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > - Bản phát hành này bao gồm nhiều tính năng mới và cải tiến, chẳng hạn như: + The release contains various new features and improvements, such as: new_features_list: - line_0: Khởi tạo dự án tự động (Phần mở rộng doanh nghiệp). - line_1: "Họp: Thêm các gói công việc mới hoặc hiện có làm kết quả." - line_2: "Họp: Hiển thị phản hồi iCal trong OpenProject." - line_3: "Cuộc họp định kỳ: Sao chép các mục trong chương trình nghị sự sang lần họp tiếp theo." - line_4: "Phát hành cho cộng đồng: Tính năng làm nổi bật thuộc tính." - line_5: Cảnh báo trước khi mở các liên kết bên ngoài trong nội dung do người dùng cung cấp (Phần mở rộng doanh nghiệp). - line_6: Cải thiện hiệu suất và trải nghiệm người dùng, bao gồm tab Hoạt động và mô-đun Tài liệu. + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "Nâng cấp lên phiên bản Enterprise" postgres_migration: "Di chuyển cài đặt của bạn sang PostgreSQL" @@ -3053,7 +3054,7 @@ vi: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/zh-CN.yml b/config/locales/crowdin/zh-CN.yml index ea48e347f80..a14625c129f 100644 --- a/config/locales/crowdin/zh-CN.yml +++ b/config/locales/crowdin/zh-CN.yml @@ -125,7 +125,7 @@ zh-CN: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ zh-CN: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ zh-CN: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -216,8 +216,8 @@ zh-CN: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -225,8 +225,8 @@ zh-CN: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -238,11 +238,11 @@ zh-CN: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3008,17 +3008,18 @@ zh-CN: learn_about: "详细了解所有新功能" missing: "目前还没有高亮显示的功能。" #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > - 此版本包含多项新功能和改进,例如: + The release contains various new features and improvements, such as: new_features_list: - line_0: 自动化项目启动(企业版附加组件)。 - line_1: "会议:添加新工作包或现有工作包作为成果。" - line_2: "Meetings: show iCal responses in OpenProject." - line_3: "定期会议:将议程条目复制到下一事件。" - line_4: "发布到社区:特性高亮显示。" - line_5: 在打开用户提供内容中的外部链接前发出警告(企业版附加组件)。 - line_6: 提升了性能和用户体验,包括“活动”选项卡和“文档”模块。 + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "升级到企业版" postgres_migration: "将您的安装迁移到 PostgreSQL" @@ -3051,7 +3052,7 @@ zh-CN: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" diff --git a/config/locales/crowdin/zh-TW.yml b/config/locales/crowdin/zh-TW.yml index 9afe64ee75a..e4d85a617b7 100644 --- a/config/locales/crowdin/zh-TW.yml +++ b/config/locales/crowdin/zh-TW.yml @@ -125,7 +125,7 @@ zh-TW: new: "New configuration" banner: title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description), users (name, email, project membership), statuses, and types. It cannot import custom workflows, custom fields, attachments, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -143,7 +143,7 @@ zh-TW: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from Jira server. The server may not be a valid Jira instance." + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" @@ -167,7 +167,7 @@ zh-TW: title: "No import runs set up yet" description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after but not afterwards." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -216,8 +216,8 @@ zh-TW: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Click the button below to query the host to see what data is available to import." - button_fetch: "Check available data from host" + description: "Check what data is available for import in the host Jira instance." + button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: title: "Groups and Users" @@ -225,8 +225,8 @@ zh-TW: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host URL offers for import and what this tools is able to import right now." - description: "Select what data you want to import from the available data fetched from the host." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -238,11 +238,11 @@ zh-TW: label_importing: "Currently importing" elements: relations: "Relations between issues" - workflows: "Custom workflows" + workflows: "Project-level workflows" users: "Users" sprints: "Sprints" schemes: "Schemas" - permissions: "Permissions, roles" + permissions: "User, group and project permissions" confirm_import: title: "Import data" caption: "Review your import settings and start the import" @@ -3008,17 +3008,18 @@ zh-TW: learn_about: "進一步瞭解所有新功能" missing: "目前還沒有突出顯示的功能。" #We need to include the version to invalidate outdated translations in other locales - "17_1": + "17_2": new_features_title: > - 該版本包含多種新功能和改進,例如: + The release contains various new features and improvements, such as: new_features_list: - line_0: 自動化專案啟動(企業附加元件)。 - line_1: "會議:添加新的或現有的工作套件作為成果。" - line_2: "會議:在 OpenProject 中顯示 iCal 回應。" - line_3: "重複性會議:將議程項目重複至下次會議。" - line_4: "發佈到社群:高亮顯示屬性。" - line_5: 在使用者提供的內容中開啟外部連結前警告(企業附加元件)。 - line_6: 改善效能和使用者體驗,包括「活動」標籤和「文件」模組。 + line_0: AI workflows with a secure MCP server (Professional plan and higher) + line_1: Improved project home page with new widget for budgets and improved accessibility + line_2: "Meetings: Meeting templates (Basic plan and higher)" + line_3: Better transparency with project attribute comments. + line_4: PDF export enhancements + line_5: Increased security for external links (Premium plan and higher) + line_6: UI/UX improvements in the Backlogs module + line_7: Harmonized custom field forms links: upgrade_enterprise_edition: "升級到企業版" postgres_migration: "將您的安裝遷移到 PostgreSQL" @@ -3051,7 +3052,7 @@ zh-TW: field_changed: "%{field} changed from %{old_value} to %{new_value}" field_set: "%{field} set to %{value}" field_removed: "%{field} removed" - field_updated: "%{field}" + field_updated: "%{field} updated" deleted_with_diff: "%{field} deleted (%{link})" changed_with_diff: "%{field} changed (%{link})" set_with_diff: "%{field} set (%{link})" From d2acae7717ab0851a92d8ea7bf003529121035ed Mon Sep 17 00:00:00 2001 From: Jan Sandbrink Date: Tue, 3 Mar 2026 13:14:47 +0100 Subject: [PATCH 11/16] Apply suggestion from @NobodysNightmare --- docs/system-admin-guide/integrations/mcp-server/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/system-admin-guide/integrations/mcp-server/README.md b/docs/system-admin-guide/integrations/mcp-server/README.md index 8f888079f38..eb410df479c 100644 --- a/docs/system-admin-guide/integrations/mcp-server/README.md +++ b/docs/system-admin-guide/integrations/mcp-server/README.md @@ -69,7 +69,7 @@ the "Redirect URI" according to the instructions of your MCP client. You can customize the MCP server further under *Administration -> Artificial Intelligence (AI) -> Model Context Protocol (MCP)*. -Here you can enable or disable the entire MCP server. You can also change the MCP server titles and descriptions indicated towards MCP clients, and the response format. +Here you can enable or disable the entire MCP server and change the MCP server titles and descriptions indicated towards MCP clients. If you think that your MCP client is passing duplicated information to the language model, you can also change the response format, though for most purposes the default should work well. The available response format options are: From b4e56f3f096effe6bdccf591216581c4ea96fc2c Mon Sep 17 00:00:00 2001 From: as-op Date: Tue, 3 Mar 2026 13:20:56 +0100 Subject: [PATCH 12/16] support large animated WebP image conversion for PDF exports and add tests https://community.openproject.org/work_packages/70333 --- app/models/exports/pdf/common/attachments.rb | 60 ++- spec/fixtures/files/animated.webp | Bin 0 -> 36172 bytes .../exports/pdf/common/attachments_spec.rb | 443 ++++++++++++++++++ 3 files changed, 498 insertions(+), 5 deletions(-) create mode 100644 spec/fixtures/files/animated.webp create mode 100644 spec/models/exports/pdf/common/attachments_spec.rb diff --git a/app/models/exports/pdf/common/attachments.rb b/app/models/exports/pdf/common/attachments.rb index 3816fa3b5a9..adeae6a9958 100644 --- a/app/models/exports/pdf/common/attachments.rb +++ b/app/models/exports/pdf/common/attachments.rb @@ -66,8 +66,12 @@ module Exports::PDF::Common::Attachments return nil if local_file.nil? filename = local_file.path - filename = convert_gif_to_png(filename) if attachment.content_type == "image/gif" - filename = convert_webp_to_png(filename) if attachment.content_type == "image/webp" + if attachment.content_type == "image/gif" + filename = convert_gif_to_png(filename) + elsif attachment.content_type == "image/webp" + filename = convert_webp_to_png(filename) + end + return nil if filename.nil? resize_image(filename) end @@ -90,12 +94,58 @@ module Exports::PDF::Common::Attachments def convert_webp_to_png(filename) tmp_file = temp_image_file(".png") - image = MiniMagick::Image.open(filename) - image.format("png") - image.write(tmp_file) + # ImageMagick loads ALL frames of an animated WebP into its pixel cache even + # when only frame 0 is needed, which can exhaust memory or even cache for large animations. + # Instead, parse the RIFF/WEBP binary to extract the first ANMF frame as a + # standalone single-frame WebP, then convert only that. + source = extract_first_webp_frame(filename) || filename + + image = MiniMagick::Image.open(source) + image.frames.first.write(tmp_file) tmp_file end + # Parses the RIFF/WEBP container and extracts the first animation frame + # (ANMF chunk) as a standalone single-frame WebP written to a temp file. + # Returns nil if the file is not an animated WebP. + # + # Each ANMF frame in animated WebP is independently encoded (no inter-frame + # references), so the raw frame chunk is a valid standalone WebP image. + def extract_first_webp_frame(filename) # rubocop:disable Metrics/AbcSize, Metrics/PerceivedComplexity + data = File.binread(filename) + return nil unless data.bytesize > 12 && data[0, 4] == "RIFF".b && data[8, 4] == "WEBP".b + + webp_type = %W[VP8\x20 VP8L VP8X] + pos = 12 + while pos + 8 <= data.bytesize + chunk_id = data[pos, 4] + chunk_size = data[pos + 4, 4].unpack1("V") + break if pos + 8 + chunk_size > data.bytesize + + if chunk_id == "ANMF".b && chunk_size > 16 + # ANMF payload: 16 bytes of frame metadata (position, size, duration, flags) + # followed by the frame image data as a VP8 / VP8L / VP8X chunk. + # Wrap it in a minimal RIFF/WEBP container to create a single-frame WebP. + frame_chunk = data[pos + 8 + 16, chunk_size - 16] + # Reject frames whose payload isn't a recognised WebP bitstream type + next unless webp_type.map(&:b).include?(frame_chunk[0, 4]) + + riff_size = 4 + frame_chunk.bytesize # "WEBP" + frame data + tmp_frame = temp_image_file(".webp") + File.binwrite(tmp_frame, "RIFF".b + [riff_size].pack("V") + "WEBP".b + frame_chunk) + return tmp_frame + end + + # RIFF chunks are padded to even byte offsets; use & 1 to get the padding. + pos += 8 + chunk_size + (chunk_size & 1) + end + + nil + rescue StandardError => e + Rails.logger.error "Failed to extract first webp frame: #{e}" + nil + end + def attachment_by_api_content_src(src) return nil if src.empty? diff --git a/spec/fixtures/files/animated.webp b/spec/fixtures/files/animated.webp new file mode 100644 index 0000000000000000000000000000000000000000..36cf1e75048d35392e8d506ac519c230ca2496ab GIT binary patch literal 36172 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 o@&EJsj|Ki?f&W 0 + end + + it "writes a file with image/png MIME type" do + result = helper.resize_image(png_fixture) + expect(Marcel::MimeType.for(Pathname.new(result))).to eq("image/png") + end + end + + describe "#convert_gif_to_png" do + # Use the PNG fixture as a stand-in; MiniMagick handles it fine. + let(:source_fixture) { Rails.root.join("spec/fixtures/files/image.png").to_s } + + after { helper.delete_all_resized_images } + + it "returns a path ending with .png" do + result = helper.convert_gif_to_png(source_fixture) + expect(result).to end_with(".png") + end + + it "writes a non-empty file to the returned path" do + result = helper.convert_gif_to_png(source_fixture) + expect(File.exist?(result)).to be true + expect(File.size(result)).to be > 0 + end + + it "writes a file with image/png MIME type" do + result = helper.convert_gif_to_png(source_fixture) + expect(Marcel::MimeType.for(Pathname.new(result))).to eq("image/png") + end + end + + describe "#convert_webp_to_png" do + let(:webp_fixture) { Rails.root.join("spec/fixtures/files/image.webp").to_s } + + after { helper.delete_all_resized_images } + + it "returns a path ending with .png" do + result = helper.convert_webp_to_png(webp_fixture) + expect(result).to end_with(".png") + end + + it "writes a non-empty PNG file" do + result = helper.convert_webp_to_png(webp_fixture) + expect(File.exist?(result)).to be true + expect(File.size(result)).to be > 0 + end + + it "writes a file with image/png MIME type" do + result = helper.convert_webp_to_png(webp_fixture) + expect(Marcel::MimeType.for(Pathname.new(result))).to eq("image/png") + end + + it "falls back to the source file when extract_first_webp_frame returns nil" do + allow(helper).to receive(:extract_first_webp_frame).and_return(nil) + result = helper.convert_webp_to_png(webp_fixture) + expect(result).to end_with(".png") + expect(File.exist?(result)).to be true + expect(Marcel::MimeType.for(Pathname.new(result))).to eq("image/png") + end + end + + describe "#attachment_image_local_file" do + let(:attachment) { instance_double(Attachment, id: 42) } + let(:file_uploader) { instance_double(LocalFileUploader) } + let(:local_file) { instance_double(File, path: "/some/path/image.png") } + + context "when the file is accessible" do + before do + allow(attachment).to receive(:file).and_return(file_uploader) + allow(file_uploader).to receive(:local_file).and_return(local_file) + end + + it "returns the local file object" do + expect(helper.attachment_image_local_file(attachment)).to eq(local_file) + end + end + + context "when accessing the file raises an error" do + before do + allow(attachment).to receive(:file).and_return(file_uploader) + allow(file_uploader).to receive(:local_file).and_raise(StandardError, "disk error") + allow(Rails.logger).to receive(:error) + end + + it "returns nil" do + expect(helper.attachment_image_local_file(attachment)).to be_nil + end + + it "logs the error including the attachment id" do + helper.attachment_image_local_file(attachment) + expect(Rails.logger).to have_received(:error).with(/42/) + end + end + end + + describe "#attachment_by_api_content_src" do + # api_url_helpers returns the ApiV3Path class; stub root_path on the class itself. + before do + allow(API::V3::Utilities::PathHelper::ApiV3Path).to receive(:root_path).and_return("/") + end + + it "returns nil for an empty src" do + expect(helper.attachment_by_api_content_src("")).to be_nil + end + + it "returns nil when src does not start with root_path" do + expect(helper.attachment_by_api_content_src("https://evil.example.com/attachments/1/file.png")).to be_nil + end + + it "returns nil when src does not contain the attachments pattern" do + expect(helper.attachment_by_api_content_src("/api/v3/some_other_path")).to be_nil + end + + context "when src matches a valid attachment path" do + let(:attachment) { instance_double(Attachment, id: 7) } + + before { allow(Attachment).to receive(:find_by).with(id: 7).and_return(attachment) } + + context "when the attachment is visible" do + before { allow(attachment).to receive(:visible?).and_return(true) } + + it "returns the attachment for the api/v3 path" do + result = helper.attachment_by_api_content_src("/api/v3/attachments/7/content") + expect(result).to eq(attachment) + end + + it "returns the attachment for the drag-and-drop path format" do + result = helper.attachment_by_api_content_src("/attachments/7/filename.ext") + expect(result).to eq(attachment) + end + end + + context "when the attachment is not visible" do + before { allow(attachment).to receive(:visible?).and_return(false) } + + it "returns nil" do + result = helper.attachment_by_api_content_src("/api/v3/attachments/7/content") + expect(result).to be_nil + end + end + end + + context "when no attachment with that id exists" do + before { allow(Attachment).to receive(:find_by).and_return(nil) } + + it "returns nil" do + expect(helper.attachment_by_api_content_src("/attachments/999/file.png")).to be_nil + end + end + + context "when an unexpected error is raised" do + before do + allow(Attachment).to receive(:find_by).and_raise(StandardError, "db error") + allow(Rails.logger).to receive(:error) + end + + it "returns nil" do + expect(helper.attachment_by_api_content_src("/attachments/1/file.png")).to be_nil + end + + it "logs the error" do + helper.attachment_by_api_content_src("/attachments/1/file.png") + expect(Rails.logger).to have_received(:error) + end + end + end + + describe "#attachment_image_filepath" do + let(:src) { "/api/v3/attachments/1/content" } + let(:attachment) { instance_double(Attachment, id: 1, content_type: "image/jpeg") } + let(:local_file) { instance_double(File, path: "/tmp/image.jpg") } + + before do + allow(helper).to receive(:attachment_by_api_content_src).with(src).and_return(attachment) + allow(helper).to receive(:pdf_embeddable?).with("image/jpeg").and_return(true) + allow(helper).to receive(:attachment_image_local_file).with(attachment).and_return(local_file) + allow(helper).to receive(:resize_image).with("/tmp/image.jpg").and_return("/tmp/resized.jpg") + end + + it "returns a resized image path for a jpeg" do + expect(helper.attachment_image_filepath(src)).to eq("/tmp/resized.jpg") + end + + context "when attachment is nil" do + before { allow(helper).to receive(:attachment_by_api_content_src).with(src).and_return(nil) } + + it "returns nil" do + expect(helper.attachment_image_filepath(src)).to be_nil + end + end + + context "when content_type is not embeddable" do + before { allow(helper).to receive(:pdf_embeddable?).with("image/jpeg").and_return(false) } + + it "returns nil" do + expect(helper.attachment_image_filepath(src)).to be_nil + end + end + + context "when local_file is nil" do + before { allow(helper).to receive(:attachment_image_local_file).with(attachment).and_return(nil) } + + it "returns nil" do + expect(helper.attachment_image_filepath(src)).to be_nil + end + end + + context "when the attachment is a GIF" do + let(:attachment) { instance_double(Attachment, id: 1, content_type: "image/gif") } + let(:local_file) { instance_double(File, path: "/tmp/image.gif") } + + before do + allow(helper).to receive(:attachment_by_api_content_src).with(src).and_return(attachment) + allow(helper).to receive(:pdf_embeddable?).with("image/gif").and_return(true) + allow(helper).to receive(:attachment_image_local_file).with(attachment).and_return(local_file) + allow(helper).to receive(:convert_gif_to_png).with("/tmp/image.gif").and_return("/tmp/converted.png") + allow(helper).to receive(:resize_image).with("/tmp/converted.png").and_return("/tmp/resized.png") + end + + it "converts the GIF to PNG before resizing" do + result = helper.attachment_image_filepath(src) + expect(helper).to have_received(:convert_gif_to_png).with("/tmp/image.gif") + expect(result).to eq("/tmp/resized.png") + end + end + + context "when the attachment is a WebP" do + let(:attachment) { instance_double(Attachment, id: 1, content_type: "image/webp") } + let(:local_file) { instance_double(File, path: "/tmp/image.webp") } + + before do + allow(helper).to receive(:attachment_by_api_content_src).with(src).and_return(attachment) + allow(helper).to receive(:pdf_embeddable?).with("image/webp").and_return(true) + allow(helper).to receive(:attachment_image_local_file).with(attachment).and_return(local_file) + allow(helper).to receive(:convert_webp_to_png).with("/tmp/image.webp").and_return("/tmp/converted.png") + allow(helper).to receive(:resize_image).with("/tmp/converted.png").and_return("/tmp/resized.png") + end + + it "converts the WebP to PNG before resizing" do + result = helper.attachment_image_filepath(src) + expect(helper).to have_received(:convert_webp_to_png).with("/tmp/image.webp") + expect(result).to eq("/tmp/resized.png") + end + end + + context "when gif conversion returns nil" do + let(:attachment) { instance_double(Attachment, id: 1, content_type: "image/gif") } + let(:local_file) { instance_double(File, path: "/tmp/image.gif") } + + before do + allow(helper).to receive(:attachment_by_api_content_src).with(src).and_return(attachment) + allow(helper).to receive(:pdf_embeddable?).with("image/gif").and_return(true) + allow(helper).to receive(:attachment_image_local_file).with(attachment).and_return(local_file) + allow(helper).to receive(:convert_gif_to_png).with("/tmp/image.gif").and_return(nil) + end + + it "returns nil" do + expect(helper.attachment_image_filepath(src)).to be_nil + end + end + end + + describe "#extract_first_webp_frame" do + let(:animated_webp) { Rails.root.join("spec/fixtures/files/animated.webp").to_s } + let(:static_webp) { Rails.root.join("spec/fixtures/files/image.webp").to_s } + let(:non_webp) { Rails.root.join("spec/fixtures/files/image.png").to_s } + + after { helper.delete_all_resized_images } + + context "with an animated WebP" do + it "returns a non-nil path" do + expect(helper.extract_first_webp_frame(animated_webp)).not_to be_nil + end + + it "returns a path to an existing file" do + result = helper.extract_first_webp_frame(animated_webp) + expect(File.exist?(result)).to be true + end + + it "returns a file with image/webp MIME type" do + result = helper.extract_first_webp_frame(animated_webp) + expect(Marcel::MimeType.for(Pathname.new(result))).to eq("image/webp") + end + + it "returns a single-frame WebP" do + result = helper.extract_first_webp_frame(animated_webp) + expect(MiniMagick::Image.open(result).frames.count).to eq(1) + end + + it "returns a file with a valid RIFF/WEBP container header" do + result = helper.extract_first_webp_frame(animated_webp) + data = File.binread(result) + expect(data[0, 4]).to eq("RIFF".b) + expect(data[8, 4]).to eq("WEBP".b) + end + end + + context "with a static (non-animated) WebP" do + it "returns nil" do + expect(helper.extract_first_webp_frame(static_webp)).to be_nil + end + end + + context "with a non-WebP file" do + it "returns nil" do + expect(helper.extract_first_webp_frame(non_webp)).to be_nil + end + end + + context "when an error is raised while reading the file" do + before do + allow(File).to receive(:binread).and_raise(StandardError, "read error") + allow(Rails.logger).to receive(:error) + end + + it "returns nil" do + expect(helper.extract_first_webp_frame(animated_webp)).to be_nil + end + + it "logs the error" do + helper.extract_first_webp_frame(animated_webp) + expect(Rails.logger).to have_received(:error).with(/read error/) + end + end + end +end From fac6be010e760467bd64bdaed1e98cfbb8392873 Mon Sep 17 00:00:00 2001 From: Jan Sandbrink Date: Tue, 3 Mar 2026 15:33:14 +0100 Subject: [PATCH 13/16] Fix wording of MCP EE banner --- config/locales/en.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index 7870eef54fc..0b9a1f8a56b 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2808,7 +2808,7 @@ en: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2888,7 +2888,7 @@ en: title: "Custom actions" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: From b7f661f5afab91cdc06de00b52dc4a836369b372 Mon Sep 17 00:00:00 2001 From: Andrej <77627197+as-op@users.noreply.github.com> Date: Tue, 3 Mar 2026 15:36:50 +0100 Subject: [PATCH 14/16] Update app/models/exports/pdf/common/attachments.rb Co-authored-by: Tobias Dillmann --- app/models/exports/pdf/common/attachments.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/exports/pdf/common/attachments.rb b/app/models/exports/pdf/common/attachments.rb index adeae6a9958..06b41262848 100644 --- a/app/models/exports/pdf/common/attachments.rb +++ b/app/models/exports/pdf/common/attachments.rb @@ -78,7 +78,7 @@ module Exports::PDF::Common::Attachments def temp_image_file(extension) tmp_file = Tempfile.new(["temp_image", extension]) - @resized_images = [] if @resized_images.nil? + @resized_images ||= [] @resized_images << tmp_file tmp_file.path end From 41aa72a75157564412cb16f88e45a03d7c513ef3 Mon Sep 17 00:00:00 2001 From: as-op Date: Tue, 3 Mar 2026 16:22:18 +0100 Subject: [PATCH 15/16] use step-by-step code style, remove redundant nil in return https://github.com/opf/openproject/pull/22169#discussion_r2878473952 --- app/models/exports/pdf/common/attachments.rb | 25 ++++++++------------ 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/app/models/exports/pdf/common/attachments.rb b/app/models/exports/pdf/common/attachments.rb index 06b41262848..55607bec9cc 100644 --- a/app/models/exports/pdf/common/attachments.rb +++ b/app/models/exports/pdf/common/attachments.rb @@ -60,20 +60,15 @@ module Exports::PDF::Common::Attachments def attachment_image_filepath(src) # images are embedded into markup with the api-path as img.src attachment = attachment_by_api_content_src(src) - return nil if attachment.nil? || !pdf_embeddable?(attachment.content_type) + return if attachment.nil? || !pdf_embeddable?(attachment.content_type) local_file = attachment_image_local_file(attachment) - return nil if local_file.nil? + return if local_file.nil? filename = local_file.path - if attachment.content_type == "image/gif" - filename = convert_gif_to_png(filename) - elsif attachment.content_type == "image/webp" - filename = convert_webp_to_png(filename) - end - return nil if filename.nil? - - resize_image(filename) + filename = convert_gif_to_png(filename) if attachment.content_type == "image/gif" + filename = convert_webp_to_png(filename) if attachment.content_type == "image/webp" + filename ? resize_image(filename) : nil end def temp_image_file(extension) @@ -113,7 +108,7 @@ module Exports::PDF::Common::Attachments # references), so the raw frame chunk is a valid standalone WebP image. def extract_first_webp_frame(filename) # rubocop:disable Metrics/AbcSize, Metrics/PerceivedComplexity data = File.binread(filename) - return nil unless data.bytesize > 12 && data[0, 4] == "RIFF".b && data[8, 4] == "WEBP".b + return unless data.bytesize > 12 && data[0, 4] == "RIFF".b && data[8, 4] == "WEBP".b webp_type = %W[VP8\x20 VP8L VP8X] pos = 12 @@ -147,7 +142,7 @@ module Exports::PDF::Common::Attachments end def attachment_by_api_content_src(src) - return nil if src.empty? + return if src.empty? # we accept absolut linked images # (but not hot-linked from elsewhere: https://example.com/another_api/attachments/1/somefile.png) @@ -156,12 +151,12 @@ module Exports::PDF::Common::Attachments # #{api_url_helpers.root_path}attachments/:id/filename.ext (e.g. inserted by drag and drop from the files tab) attachment_regex = %r{/attachments/(\d+)/} - return nil unless src.start_with?(api_url_helpers.root_path) && src.match?(attachment_regex) + return unless src.start_with?(api_url_helpers.root_path) && src.match?(attachment_regex) attachments_id = src.scan(attachment_regex).first.first attachment = Attachment.find_by(id: attachments_id.to_i) - return nil if attachment.nil? - return nil unless attachment.visible? + return if attachment.nil? + return unless attachment.visible? attachment rescue StandardError From 4062aac3fb251b241fc4b6217dd3b7276a3ed338 Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Tue, 3 Mar 2026 15:44:41 +0000 Subject: [PATCH 16/16] update locales from crowdin [ci skip] --- config/locales/crowdin/af.yml | 10 +++++++--- config/locales/crowdin/ar.yml | 10 +++++++--- config/locales/crowdin/az.yml | 10 +++++++--- config/locales/crowdin/be.yml | 10 +++++++--- config/locales/crowdin/bg.yml | 10 +++++++--- config/locales/crowdin/ca.yml | 10 +++++++--- config/locales/crowdin/ckb-IR.yml | 10 +++++++--- config/locales/crowdin/cs.yml | 10 +++++++--- config/locales/crowdin/da.yml | 10 +++++++--- config/locales/crowdin/de.yml | 10 +++++++--- config/locales/crowdin/el.yml | 10 +++++++--- config/locales/crowdin/eo.yml | 10 +++++++--- config/locales/crowdin/es.yml | 10 +++++++--- config/locales/crowdin/et.yml | 10 +++++++--- config/locales/crowdin/eu.yml | 10 +++++++--- config/locales/crowdin/fa.yml | 10 +++++++--- config/locales/crowdin/fi.yml | 10 +++++++--- config/locales/crowdin/fil.yml | 10 +++++++--- config/locales/crowdin/fr.yml | 10 +++++++--- config/locales/crowdin/he.yml | 10 +++++++--- config/locales/crowdin/hi.yml | 10 +++++++--- config/locales/crowdin/hr.yml | 10 +++++++--- config/locales/crowdin/hu.yml | 10 +++++++--- config/locales/crowdin/id.yml | 10 +++++++--- config/locales/crowdin/it.yml | 10 +++++++--- config/locales/crowdin/ja.yml | 10 +++++++--- config/locales/crowdin/ka.yml | 10 +++++++--- config/locales/crowdin/kk.yml | 10 +++++++--- config/locales/crowdin/ko.yml | 10 +++++++--- config/locales/crowdin/lt.yml | 10 +++++++--- config/locales/crowdin/lv.yml | 10 +++++++--- config/locales/crowdin/mn.yml | 10 +++++++--- config/locales/crowdin/ms.yml | 10 +++++++--- config/locales/crowdin/ne.yml | 10 +++++++--- config/locales/crowdin/nl.yml | 10 +++++++--- config/locales/crowdin/no.yml | 10 +++++++--- config/locales/crowdin/pl.yml | 10 +++++++--- config/locales/crowdin/pt-BR.yml | 10 +++++++--- config/locales/crowdin/pt-PT.yml | 10 +++++++--- config/locales/crowdin/ro.yml | 10 +++++++--- config/locales/crowdin/ru.yml | 10 +++++++--- config/locales/crowdin/rw.yml | 10 +++++++--- config/locales/crowdin/si.yml | 10 +++++++--- config/locales/crowdin/sk.yml | 10 +++++++--- config/locales/crowdin/sl.yml | 10 +++++++--- config/locales/crowdin/sr.yml | 10 +++++++--- config/locales/crowdin/sv.yml | 10 +++++++--- config/locales/crowdin/th.yml | 10 +++++++--- config/locales/crowdin/tr.yml | 10 +++++++--- config/locales/crowdin/uk.yml | 10 +++++++--- config/locales/crowdin/uz.yml | 10 +++++++--- config/locales/crowdin/vi.yml | 10 +++++++--- config/locales/crowdin/zh-CN.yml | 10 +++++++--- config/locales/crowdin/zh-TW.yml | 10 +++++++--- 54 files changed, 378 insertions(+), 162 deletions(-) diff --git a/config/locales/crowdin/af.yml b/config/locales/crowdin/af.yml index 25fd7191cd5..099ee279b9a 100644 --- a/config/locales/crowdin/af.yml +++ b/config/locales/crowdin/af.yml @@ -286,7 +286,7 @@ af: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -597,6 +597,10 @@ af: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "or" errors: @@ -2676,7 +2680,7 @@ af: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2755,7 +2759,7 @@ af: title: "Pasgemaakte aksies" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/ar.yml b/config/locales/crowdin/ar.yml index 66b0387da8e..37ad95e554a 100644 --- a/config/locales/crowdin/ar.yml +++ b/config/locales/crowdin/ar.yml @@ -310,7 +310,7 @@ ar: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -621,6 +621,10 @@ ar: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "أو" errors: @@ -2896,7 +2900,7 @@ ar: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2975,7 +2979,7 @@ ar: title: "إجراءات مخصصة" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/az.yml b/config/locales/crowdin/az.yml index d1474945fd4..57a9b8aec68 100644 --- a/config/locales/crowdin/az.yml +++ b/config/locales/crowdin/az.yml @@ -286,7 +286,7 @@ az: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -597,6 +597,10 @@ az: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "or" errors: @@ -2676,7 +2680,7 @@ az: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2755,7 +2759,7 @@ az: title: "Custom actions" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/be.yml b/config/locales/crowdin/be.yml index 7f2261ff337..07f071d612d 100644 --- a/config/locales/crowdin/be.yml +++ b/config/locales/crowdin/be.yml @@ -298,7 +298,7 @@ be: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -609,6 +609,10 @@ be: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "or" errors: @@ -2786,7 +2790,7 @@ be: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2865,7 +2869,7 @@ be: title: "Custom actions" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/bg.yml b/config/locales/crowdin/bg.yml index a99b96a1c71..85cc33c3705 100644 --- a/config/locales/crowdin/bg.yml +++ b/config/locales/crowdin/bg.yml @@ -286,7 +286,7 @@ bg: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -597,6 +597,10 @@ bg: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "или" errors: @@ -2676,7 +2680,7 @@ bg: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2755,7 +2759,7 @@ bg: title: "Персонализирани действия" description: "Потребителските действия са преки пътища с едно кликване до набор от предварително дефинирани действия, които можете да направите достъпни за определени работни пакети въз основа на статус, роля, тип или проект." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/ca.yml b/config/locales/crowdin/ca.yml index d57564d777b..c616774b692 100644 --- a/config/locales/crowdin/ca.yml +++ b/config/locales/crowdin/ca.yml @@ -286,7 +286,7 @@ ca: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -594,6 +594,10 @@ ca: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "o" errors: @@ -2673,7 +2677,7 @@ ca: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2752,7 +2756,7 @@ ca: title: "Accions personalitzades" description: "Les accions personalitzades són accessos ràpids d'un sol clic que et permeten crear accions predefinides en els paquets de treball que desitgis basat en estat, rol, estil o projecte." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/ckb-IR.yml b/config/locales/crowdin/ckb-IR.yml index 1165d9c1698..5bfaf6550cc 100644 --- a/config/locales/crowdin/ckb-IR.yml +++ b/config/locales/crowdin/ckb-IR.yml @@ -286,7 +286,7 @@ ckb-IR: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -597,6 +597,10 @@ ckb-IR: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "or" errors: @@ -2676,7 +2680,7 @@ ckb-IR: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2755,7 +2759,7 @@ ckb-IR: title: "Custom actions" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/cs.yml b/config/locales/crowdin/cs.yml index 50a899dee53..f9ba6f6a422 100644 --- a/config/locales/crowdin/cs.yml +++ b/config/locales/crowdin/cs.yml @@ -298,7 +298,7 @@ cs: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -609,6 +609,10 @@ cs: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "nebo" errors: @@ -2786,7 +2790,7 @@ cs: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2865,7 +2869,7 @@ cs: title: "Vlastní akce" description: "Vlastní akce jsou zkratky jedním kliknutím na sadu předem definovaných akcí, které můžete zpřístupnit na základě stavu některých pracovních balíčků. role, typ nebo projekt." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/da.yml b/config/locales/crowdin/da.yml index eb8ea14934c..5c8af628778 100644 --- a/config/locales/crowdin/da.yml +++ b/config/locales/crowdin/da.yml @@ -286,7 +286,7 @@ da: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -595,6 +595,10 @@ da: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "eller" errors: @@ -2674,7 +2678,7 @@ da: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2753,7 +2757,7 @@ da: title: "Brugerdefinerede handlinger" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/de.yml b/config/locales/crowdin/de.yml index f53837ed1d6..ad9d84e5a93 100644 --- a/config/locales/crowdin/de.yml +++ b/config/locales/crowdin/de.yml @@ -286,7 +286,7 @@ de: title: "Projekte auswählen" mcp_configurations: index: - description: "Das Model Context Protocol ermöglicht es KI-Agenten, ihren Nutzern Tools und Ressourcen bereitzustellen, die diese OpenProject-Instanz zur Verfügung stellt." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Ressourcen" resources_description: "OpenProject stellt die folgenden Ressourcen bereit. Jede Ressource kann nach Wunsch aktiviert, umbenannt und beschrieben werden. Weitere Informationen finden sich in der [Dokumentation zu MCP-Ressourcen](docs_url)." resources_submit: "Ressourcen aktualisieren" @@ -594,6 +594,10 @@ de: danger_dialog: confirmation_live_message_checked: "Die Schaltfläche zum Fortfahren ist nun aktiv." confirmation_live_message_unchecked: "Die Schaltfläche zum Fortfahren ist inaktiv. Sie müssen das Kontrollkästchen ankreuzen, um fortzufahren." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "oder" errors: @@ -2668,7 +2672,7 @@ de: edit_attribute_groups: Attributgruppen bearbeiten gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP-Benutzer- und Gruppensynchronisation - mcp_server: MCP-Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On für Nextcloud-Speicher one_drive_sharepoint_file_storage: OneDrive/SharePoint-Datei-Speicher @@ -2747,7 +2751,7 @@ de: title: "Benutzerdefinierte Aktionen" description: "Selbstdefinierte Aktionen sind Verknüpfungen zu einer Reihe von vordefinierten Aktionen, die Sie für bestimmte Arbeitspakete je nach Status, Rolle, Typ oder Projekt mit nur einem Klick auf einen Button auslösen." mcp_server: - description: "Integrieren Sie KI-Agenten mit Ihrer OpenProject-Instanz über MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/el.yml b/config/locales/crowdin/el.yml index f0e0a157662..19455788bab 100644 --- a/config/locales/crowdin/el.yml +++ b/config/locales/crowdin/el.yml @@ -286,7 +286,7 @@ el: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -593,6 +593,10 @@ el: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "ή" errors: @@ -2672,7 +2676,7 @@ el: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2751,7 +2755,7 @@ el: title: "Προσαρμοσμένες ενέργειες" description: "Οι προσαρμοσμένες ενέργειες είναι συντομεύσεις με ένα κλικ προς ένα σύνολο προκαθορισμένων ενεργειών που μπορείτε να διαθέσετε σε συγκεκριμένα πακέτα εργασίας με βάση την κατάσταση, ρόλος, τύπος ή έργο." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/eo.yml b/config/locales/crowdin/eo.yml index 1a58f6bceaa..88a9a845951 100644 --- a/config/locales/crowdin/eo.yml +++ b/config/locales/crowdin/eo.yml @@ -286,7 +286,7 @@ eo: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -597,6 +597,10 @@ eo: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "aŭ" errors: @@ -2676,7 +2680,7 @@ eo: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2755,7 +2759,7 @@ eo: title: "Adaptitaj agoj" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/es.yml b/config/locales/crowdin/es.yml index 80d43be348d..7952d323620 100644 --- a/config/locales/crowdin/es.yml +++ b/config/locales/crowdin/es.yml @@ -286,7 +286,7 @@ es: title: "Select projects" mcp_configurations: index: - description: "El protocolo de contexto de modelo (MCP, por sus siglas en inglés) permite a los agentes de IA proporcionar a sus usuarios herramientas y recursos expuestos por esta instancia de OpenProject." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Recursos" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Actualizar recursos" @@ -595,6 +595,10 @@ es: danger_dialog: confirmation_live_message_checked: "El botón para continuar ya está activo." confirmation_live_message_unchecked: "El botón para continuar ya está inactivo. Debe marcar la casilla para continuar." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "o" errors: @@ -2673,7 +2677,7 @@ es: edit_attribute_groups: Editar grupos de atributos gantt_pdf_export: Exportación de Gantt a PDF ldap_groups: Usuarios de LDAP y sincronización de grupos - mcp_server: Servidor MCP + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Inicio de sesión único para almacenamiento en la nube one_drive_sharepoint_file_storage: Almacenamiento de archivos OneDrive/SharePoint @@ -2752,7 +2756,7 @@ es: title: "Acciones personalizadas" description: "Las acciones personalizadas son accesos directos con un solo clic a un conjunto de acciones predefinidas que puede mostrar en determinados paquetes de trabajo según el estado, rol, tipo o proyecto." mcp_server: - description: "Integre agentes de IA con su instancia de OpenProject a través del protocolo de contexto de modelo (MCP)." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/et.yml b/config/locales/crowdin/et.yml index f1c59715ea7..4936279127b 100644 --- a/config/locales/crowdin/et.yml +++ b/config/locales/crowdin/et.yml @@ -286,7 +286,7 @@ et: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -597,6 +597,10 @@ et: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "või" errors: @@ -2676,7 +2680,7 @@ et: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2755,7 +2759,7 @@ et: title: "Kohandatud toimingud" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/eu.yml b/config/locales/crowdin/eu.yml index 367dadf6f0f..1170f4e676a 100644 --- a/config/locales/crowdin/eu.yml +++ b/config/locales/crowdin/eu.yml @@ -286,7 +286,7 @@ eu: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -597,6 +597,10 @@ eu: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "or" errors: @@ -2676,7 +2680,7 @@ eu: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2755,7 +2759,7 @@ eu: title: "Custom actions" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/fa.yml b/config/locales/crowdin/fa.yml index 1e93cf8de4a..fd5b97c7a51 100644 --- a/config/locales/crowdin/fa.yml +++ b/config/locales/crowdin/fa.yml @@ -286,7 +286,7 @@ fa: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -597,6 +597,10 @@ fa: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "یا" errors: @@ -2676,7 +2680,7 @@ fa: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2755,7 +2759,7 @@ fa: title: "اقدامات سفارشی" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/fi.yml b/config/locales/crowdin/fi.yml index 7bce6c3a585..a1e0cc751bd 100644 --- a/config/locales/crowdin/fi.yml +++ b/config/locales/crowdin/fi.yml @@ -286,7 +286,7 @@ fi: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -597,6 +597,10 @@ fi: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "tai" errors: @@ -2676,7 +2680,7 @@ fi: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2755,7 +2759,7 @@ fi: title: "Mukautetut toiminnot" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/fil.yml b/config/locales/crowdin/fil.yml index 9e32a10b33d..4a6d9abab95 100644 --- a/config/locales/crowdin/fil.yml +++ b/config/locales/crowdin/fil.yml @@ -286,7 +286,7 @@ fil: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -597,6 +597,10 @@ fil: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "or" errors: @@ -2676,7 +2680,7 @@ fil: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2755,7 +2759,7 @@ fil: title: "Mga custom aksyon" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/fr.yml b/config/locales/crowdin/fr.yml index cffce883013..13a3a9245a4 100644 --- a/config/locales/crowdin/fr.yml +++ b/config/locales/crowdin/fr.yml @@ -286,7 +286,7 @@ fr: title: "Sélectionner des projets" mcp_configurations: index: - description: "Le protocole de contexte de modèle permet aux agents d'intelligence artificielle de fournir à leurs utilisateurs les outils et les ressources exposés par cette instance d'OpenProject." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Ressources" resources_description: "OpenProject met en œuvre les ressources suivantes. Chacune d'entre elles peut être activée, renommée et décrite comme vous le souhaitez. Pour plus d'informations, veuillez vous référer à la [documentation sur les ressources MCP](docs_url)." resources_submit: "Mettre à jour les ressources" @@ -597,6 +597,10 @@ fr: danger_dialog: confirmation_live_message_checked: "Le bouton pour continuer est maintenant actif." confirmation_live_message_unchecked: "Le bouton pour continuer est maintenant inactif. Vous devez cocher la case pour continuer." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "ou" errors: @@ -2674,7 +2678,7 @@ fr: edit_attribute_groups: Modifier les groupes d'attributs gantt_pdf_export: Exportation PDF de diagramme de Gantt ldap_groups: Synchronisation des utilisateurs LDAP et des groupes - mcp_server: Serveur MCP + mcp_server: Model Context Protocol (MCP) meeting_templates: Modèles de réunion réutilisables nextcloud_sso: Authentification unique pour le stockage Nextcloud one_drive_sharepoint_file_storage: Stockage de fichiers OneDrive/SharePoint @@ -2753,7 +2757,7 @@ fr: title: "Actions personnalisées" description: "Les actions personnalisées sont des raccourcis en un clic vers un ensemble d'actions prédéfinies que vous pouvez rendre disponibles sur certains lots de travaux en fonction de l'état, du rôle, du type ou du projet." mcp_server: - description: "Intégrez des agents d'intelligence artificielle à votre instance OpenProject grâce à MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Définissez des modèles de réunion avec une structure d'ordre du jour définie et gagnez du temps en les réutilisant lors de la création de nouvelles réunions." nextcloud_sso: diff --git a/config/locales/crowdin/he.yml b/config/locales/crowdin/he.yml index d19afe492b8..0f72cd2ff3a 100644 --- a/config/locales/crowdin/he.yml +++ b/config/locales/crowdin/he.yml @@ -298,7 +298,7 @@ he: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -609,6 +609,10 @@ he: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "או" errors: @@ -2786,7 +2790,7 @@ he: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2865,7 +2869,7 @@ he: title: "Custom actions" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/hi.yml b/config/locales/crowdin/hi.yml index 06cfb140e5b..8594f4f47f2 100644 --- a/config/locales/crowdin/hi.yml +++ b/config/locales/crowdin/hi.yml @@ -286,7 +286,7 @@ hi: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -597,6 +597,10 @@ hi: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "या" errors: @@ -2674,7 +2678,7 @@ hi: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2753,7 +2757,7 @@ hi: title: "विशेष या कस्टम क्रियाएँ" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/hr.yml b/config/locales/crowdin/hr.yml index f583c1dce69..72d2fb4c5ba 100644 --- a/config/locales/crowdin/hr.yml +++ b/config/locales/crowdin/hr.yml @@ -292,7 +292,7 @@ hr: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -603,6 +603,10 @@ hr: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "or" errors: @@ -2731,7 +2735,7 @@ hr: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2810,7 +2814,7 @@ hr: title: "Custom actions" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/hu.yml b/config/locales/crowdin/hu.yml index 18bb6a30a08..b54836b7fce 100644 --- a/config/locales/crowdin/hu.yml +++ b/config/locales/crowdin/hu.yml @@ -286,7 +286,7 @@ hu: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -596,6 +596,10 @@ hu: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "vagy" errors: @@ -2675,7 +2679,7 @@ hu: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2754,7 +2758,7 @@ hu: title: "Egyéni műveletek" description: "Az egyéni műveletek egy kattintással elérhető parancsikonok előre meghatározott műveletek csoportjához, amelyeket állapot, szerep, típus vagy projekt alapján elérhetővé tehet bizonyos munkacsomagokon." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/id.yml b/config/locales/crowdin/id.yml index 39221c9c473..c647c96a2fb 100644 --- a/config/locales/crowdin/id.yml +++ b/config/locales/crowdin/id.yml @@ -280,7 +280,7 @@ id: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -587,6 +587,10 @@ id: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "atau" errors: @@ -2617,7 +2621,7 @@ id: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2696,7 +2700,7 @@ id: title: "Tindakan khusus" description: "Tindakan kustom adalah pintasan sekali klik ke serangkaian tindakan yang ditentukan sebelumnya yang dapat Anda sediakan pada paket kerja tertentu berdasarkan status, peran, jenis, atau proyek." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/it.yml b/config/locales/crowdin/it.yml index 4833272b5e8..e2d92f84770 100644 --- a/config/locales/crowdin/it.yml +++ b/config/locales/crowdin/it.yml @@ -286,7 +286,7 @@ it: title: "Select projects" mcp_configurations: index: - description: "Il protocollo di contesto del modello consente agli agenti di intelligenza artificiale di fornire ai propri utenti strumenti e risorse esposti da questa istanza di OpenProject." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Risorse" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Aggiorna risorse" @@ -595,6 +595,10 @@ it: danger_dialog: confirmation_live_message_checked: "Il pulsante per procedere è ora attivo." confirmation_live_message_unchecked: "Il pulsante per procedere è ora inattivo. Devi spuntare la casella per continuare." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "oppure" errors: @@ -2673,7 +2677,7 @@ it: edit_attribute_groups: Modifica proprietà gruppo gantt_pdf_export: Esportazione PDF Gantt ldap_groups: Utenti LDAP e sincronizzazione di gruppo - mcp_server: Server MCP + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Accesso singolo per Nextcloud Storage one_drive_sharepoint_file_storage: Archiviazione file OneDrive/SharePoint @@ -2752,7 +2756,7 @@ it: title: "Azioni personalizzate" description: "Le azioni personalizzate sono scorciatoie che con un clic ti consentono di eseguire una serie di azioni predefinite che è possibile rendere disponibili su determinate macro-attività in base a stato, ruolo, tipo o progetto." mcp_server: - description: "Integra gli agenti IA con l'istanza OpenProject tramite MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/ja.yml b/config/locales/crowdin/ja.yml index 5ea6d7c67c1..90cb20d0d46 100644 --- a/config/locales/crowdin/ja.yml +++ b/config/locales/crowdin/ja.yml @@ -280,7 +280,7 @@ ja: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -589,6 +589,10 @@ ja: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "または" errors: @@ -2619,7 +2623,7 @@ ja: edit_attribute_groups: 属性グループを編集 gantt_pdf_export: ガントPDFをエクスポート ldap_groups: LDAP ユーザーとグループ同期 - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Nextcloudストレージのシングルサインオン。 one_drive_sharepoint_file_storage: OneDrive/SharePointファイルストレージ @@ -2698,7 +2702,7 @@ ja: title: "カスタムアクション" description: "カスタムアクションは、ステータスに基づいて特定のワークパッケージで利用できる、事前に定義されたアクションです。" mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/ka.yml b/config/locales/crowdin/ka.yml index d026d96d433..295489f61f3 100644 --- a/config/locales/crowdin/ka.yml +++ b/config/locales/crowdin/ka.yml @@ -286,7 +286,7 @@ ka: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -597,6 +597,10 @@ ka: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "ან" errors: @@ -2676,7 +2680,7 @@ ka: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2755,7 +2759,7 @@ ka: title: "მორგებული ქმედებები" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/kk.yml b/config/locales/crowdin/kk.yml index 7a771cea20b..3a0a2680dd8 100644 --- a/config/locales/crowdin/kk.yml +++ b/config/locales/crowdin/kk.yml @@ -286,7 +286,7 @@ kk: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -597,6 +597,10 @@ kk: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "or" errors: @@ -2676,7 +2680,7 @@ kk: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2755,7 +2759,7 @@ kk: title: "Custom actions" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/ko.yml b/config/locales/crowdin/ko.yml index 99dc8668f4f..268516da5d4 100644 --- a/config/locales/crowdin/ko.yml +++ b/config/locales/crowdin/ko.yml @@ -280,7 +280,7 @@ ko: title: "Select projects" mcp_configurations: index: - description: "모델 컨텍스트 프로토콜을 통해 AI 에이전트는 이 OpenProject 인스턴스에 의해 노출된 도구와 리소스를 사용자에게 제공할 수 있습니다." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "리소스" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "리소스 업데이트" @@ -591,6 +591,10 @@ ko: danger_dialog: confirmation_live_message_checked: "진행 버튼이 이제 활성화되었습니다." confirmation_live_message_unchecked: "진행 버튼이 이제 비활성화되었습니다. 계속하려면 확인란을 선택해야 합니다." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "또는" errors: @@ -2621,7 +2625,7 @@ ko: edit_attribute_groups: 특성 그룹 편집 gantt_pdf_export: Gantt PDF 내보내기 ldap_groups: LDAP 사용자 및 그룹 동기화 - mcp_server: MCP 서버 + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Nextcloud 저장소용 Single Sign-On one_drive_sharepoint_file_storage: OneDrive/SharePoint 파일 저장소 @@ -2700,7 +2704,7 @@ ko: title: "사용자 지정 작업" description: "사용자 지정 작업은 상태, 역할, 유형 또는 프로젝트를 기반으로 특정 작업 패키지에서 사용할 수 있도록 미리 정의된 작업 세트에 대한 원클릭 바로 가기입니다." mcp_server: - description: "MCP를 통해 AI 에이전트를 OpenProject 인스턴스와 통합합니다." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/lt.yml b/config/locales/crowdin/lt.yml index cd14443f84f..f1360526961 100644 --- a/config/locales/crowdin/lt.yml +++ b/config/locales/crowdin/lt.yml @@ -298,7 +298,7 @@ lt: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -606,6 +606,10 @@ lt: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "arba" errors: @@ -2783,7 +2787,7 @@ lt: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2862,7 +2866,7 @@ lt: title: "Pasirinktiniai veiksmai" description: "Savo veiksmai yra vieno paspaudimo kombinacijos, leidžiančios nustatyti veiksmus, kuriuos galite padaryti preinamais kai kuriuose darbo paketuose pagal jų būseną, rolę, tipą ar projektą." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/lv.yml b/config/locales/crowdin/lv.yml index ab7cc006903..e284d001089 100644 --- a/config/locales/crowdin/lv.yml +++ b/config/locales/crowdin/lv.yml @@ -292,7 +292,7 @@ lv: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -603,6 +603,10 @@ lv: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "vai" errors: @@ -2731,7 +2735,7 @@ lv: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2810,7 +2814,7 @@ lv: title: "Custom actions" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/mn.yml b/config/locales/crowdin/mn.yml index e2574f42910..213df5dc647 100644 --- a/config/locales/crowdin/mn.yml +++ b/config/locales/crowdin/mn.yml @@ -286,7 +286,7 @@ mn: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -597,6 +597,10 @@ mn: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "эсвэл" errors: @@ -2676,7 +2680,7 @@ mn: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2755,7 +2759,7 @@ mn: title: "Custom actions" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/ms.yml b/config/locales/crowdin/ms.yml index d4085320040..a7ddd501931 100644 --- a/config/locales/crowdin/ms.yml +++ b/config/locales/crowdin/ms.yml @@ -280,7 +280,7 @@ ms: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -590,6 +590,10 @@ ms: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "atau" errors: @@ -2619,7 +2623,7 @@ ms: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2698,7 +2702,7 @@ ms: title: "Tindakan tersuai" description: "Tindakan tersuai adalah pintasan satu klik ke satu set tindakan yang telah ditetapkan yang anda boleh sediakan untuk pakej kerja tertentu berdasarkan status, peranan, jenis atau projek." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/ne.yml b/config/locales/crowdin/ne.yml index bc9bf97a475..897a21a46ad 100644 --- a/config/locales/crowdin/ne.yml +++ b/config/locales/crowdin/ne.yml @@ -286,7 +286,7 @@ ne: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -597,6 +597,10 @@ ne: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "or" errors: @@ -2676,7 +2680,7 @@ ne: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2755,7 +2759,7 @@ ne: title: "Custom actions" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/nl.yml b/config/locales/crowdin/nl.yml index 68abeb5efe2..ff3f042bf9c 100644 --- a/config/locales/crowdin/nl.yml +++ b/config/locales/crowdin/nl.yml @@ -286,7 +286,7 @@ nl: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -594,6 +594,10 @@ nl: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "of" errors: @@ -2672,7 +2676,7 @@ nl: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2751,7 +2755,7 @@ nl: title: "Aangepaste acties" description: "Aangepaste acties zijn met één klik snelkoppelingen naar een aantal vooraf gedefinieerde acties die u op bepaalde werkpakketten op basis van status beschikbaar kunt maken rol, type of project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/no.yml b/config/locales/crowdin/no.yml index 4deb88659f3..452bff47cad 100644 --- a/config/locales/crowdin/no.yml +++ b/config/locales/crowdin/no.yml @@ -286,7 +286,7 @@ title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -597,6 +597,10 @@ danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "eller" errors: @@ -2675,7 +2679,7 @@ edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2754,7 +2758,7 @@ title: "Tilpassede handlinger" description: "Egendefinerte handlinger er snarveier med ett klikk til en rekke forhåndsdefinerte handlinger som du kan gjøre tilgjengelige på visse arbeidspakker basert på status, rolle, type eller prosjekt." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/pl.yml b/config/locales/crowdin/pl.yml index 69f5e331c12..0ded9115be4 100644 --- a/config/locales/crowdin/pl.yml +++ b/config/locales/crowdin/pl.yml @@ -298,7 +298,7 @@ pl: title: "Select projects" mcp_configurations: index: - description: "Protokół kontekstu modelu umożliwia agentom AI dostarczanie użytkownikom narzędzi i zasobów udostępnianych przez to wystąpienie OpenProject." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Zasoby" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Zaktualizuj zasoby" @@ -606,6 +606,10 @@ pl: danger_dialog: confirmation_live_message_checked: "Przycisk kontynuowania jest już aktywny." confirmation_live_message_unchecked: "Przycisk kontynuowania jest teraz nieaktywny. Aby kontynuować, zaznacz pole wyboru." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "lub" errors: @@ -2782,7 +2786,7 @@ pl: edit_attribute_groups: Edytuj grupy atrybutów gantt_pdf_export: Eksport wykresu Gantta w formacie PDF ldap_groups: Synchronizacja użytkowników i grup LDAP - mcp_server: Serwer MCP + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Logowanie jednokrotne do magazynu Nextcloud one_drive_sharepoint_file_storage: Magazyn plików OneDrive/SharePoint @@ -2861,7 +2865,7 @@ pl: title: "Działania niestandardowe" description: "Akcje niestandardowe są skrótami do zestawu predefiniowanych akcji, które można udostępnić w określonych pakietach roboczych na podstawie statusu, roli, typu lub projektu." mcp_server: - description: "Zintegruj agentów AI ze swoim wystąpieniem OpenProject za pomocą usługi MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/pt-BR.yml b/config/locales/crowdin/pt-BR.yml index bcf6b6f1adb..24b8da72048 100644 --- a/config/locales/crowdin/pt-BR.yml +++ b/config/locales/crowdin/pt-BR.yml @@ -286,7 +286,7 @@ pt-BR: title: "Select projects" mcp_configurations: index: - description: "O protocolo de contexto do modelo permite que agentes de IA forneçam aos seus usuários ferramentas e recursos disponibilizados por esta instância do OpenProject." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Recursos" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Atualizar recursos" @@ -596,6 +596,10 @@ pt-BR: danger_dialog: confirmation_live_message_checked: "O botão para prosseguir agora está ativo." confirmation_live_message_unchecked: "O botão para prosseguir está desativado. É necessário marcar a caixa de seleção para continuar." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "ou" errors: @@ -2673,7 +2677,7 @@ pt-BR: edit_attribute_groups: Editar atributo de grupos gantt_pdf_export: Exportar diagrama de Gantt para PDF ldap_groups: Sincronização de usuários e grupos LDAP - mcp_server: Servidor MCP + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Autenticação única para o armazenamento do Nextcloud one_drive_sharepoint_file_storage: Armazenamento de Arquivos OneDrive/SharePoint @@ -2752,7 +2756,7 @@ pt-BR: title: "Ações personalizadas" description: "As ações personalizadas são atalhos de clique único para um conjunto de ações pré-definidas que você pode disponibilizar em certos pacotes de trabalho com base no estado, função, tipo ou projeto." mcp_server: - description: "Integre agentes de IA à sua instância do OpenProject por meio do MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/pt-PT.yml b/config/locales/crowdin/pt-PT.yml index 9ad5c4d9850..40047c07af3 100644 --- a/config/locales/crowdin/pt-PT.yml +++ b/config/locales/crowdin/pt-PT.yml @@ -286,7 +286,7 @@ pt-PT: title: "Select projects" mcp_configurations: index: - description: "O protocolo de contexto do modelo permite que os agentes de IA forneçam aos seus utilizadores ferramentas e recursos expostos por esta instância do OpenProject." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Recursos" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Atualizar recursos" @@ -595,6 +595,10 @@ pt-PT: danger_dialog: confirmation_live_message_checked: "O botão para prosseguir está agora ativo." confirmation_live_message_unchecked: "O botão para prosseguir está agora inativo. Tem de assinalar a caixa de verificação para continuar." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "ou" errors: @@ -2673,7 +2677,7 @@ pt-PT: edit_attribute_groups: Editar grupos de atributos gantt_pdf_export: Exportação de PDF de Gantt ldap_groups: Sincronização de utilizadores e grupos LDAP - mcp_server: Servidor MCP + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Início de sessão único para armazenamento Nextcloud one_drive_sharepoint_file_storage: Armazenamento de ficheiros no OneDrive/SharePoint @@ -2752,7 +2756,7 @@ pt-PT: title: "Ações personalizadas" description: "As ações personalizadas são atalhos de um clique para um conjunto de ações predefinidas que pode disponibilizar em determinados pacotes de trabalho com base no estado, função, tipo ou projeto." mcp_server: - description: "Integre agentes de IA com a sua instância do OpenProject através de MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/ro.yml b/config/locales/crowdin/ro.yml index 3560f500d80..72ea1b67da3 100644 --- a/config/locales/crowdin/ro.yml +++ b/config/locales/crowdin/ro.yml @@ -292,7 +292,7 @@ ro: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -603,6 +603,10 @@ ro: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "sau" errors: @@ -2731,7 +2735,7 @@ ro: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2810,7 +2814,7 @@ ro: title: "Acțiuni personalizate" description: "Acțiunile personalizate sunt comenzi rapide cu un singur clic către un set de acțiuni predefinite pe care le puteți face disponibile pentru anumite pachete de lucru în funcție de statut, rol, tip sau proiect." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/ru.yml b/config/locales/crowdin/ru.yml index 1de83a7e3b5..9d1ec0f9910 100644 --- a/config/locales/crowdin/ru.yml +++ b/config/locales/crowdin/ru.yml @@ -298,7 +298,7 @@ ru: title: "Select projects" mcp_configurations: index: - description: "Протокол модели контекста позволяет агентам ИИ предоставлять своим пользователям инструменты и ресурсы, открытые данным экземпляром OpenProject." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Ресурсы" resources_description: "OpenProject реализует следующие ресурсы. Каждый из них может быть включен, переименован и описан по Вашему желанию. Для получения дополнительной информации обратитесь к [документации по ресурсам MCP](docs_url)." resources_submit: "Обновить ресурсы" @@ -608,6 +608,10 @@ ru: danger_dialog: confirmation_live_message_checked: "Кнопка для продолжения активна." confirmation_live_message_unchecked: "Кнопка для продолжения неактивна. Чтобы продолжить, поставьте галочку." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "или" errors: @@ -2784,7 +2788,7 @@ ru: edit_attribute_groups: Редактирование атрибутов групп gantt_pdf_export: Экспорт диаграммы Ганта в PDF ldap_groups: Синхронизация пользователей LDAP и групп - mcp_server: MCP-сервер + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Единый вход для Nextcloud хранения one_drive_sharepoint_file_storage: Файловое хранилище OneDrive/SharePoint @@ -2863,7 +2867,7 @@ ru: title: "Пользовательские действия" description: "Пользовательские действия являются ярлыками к набору заранее определенных действий, которые вы можете сделать доступными для определенных пакетов работ на основе статуса, роли, типа или проекта." mcp_server: - description: "Интегрируйте агентов искусственного интеллекта в Ваш OpenProject с помощью MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/rw.yml b/config/locales/crowdin/rw.yml index 91273c28d75..142f021645f 100644 --- a/config/locales/crowdin/rw.yml +++ b/config/locales/crowdin/rw.yml @@ -286,7 +286,7 @@ rw: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -597,6 +597,10 @@ rw: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "or" errors: @@ -2676,7 +2680,7 @@ rw: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2755,7 +2759,7 @@ rw: title: "Custom actions" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/si.yml b/config/locales/crowdin/si.yml index 11c68c707d5..67844e1d0c1 100644 --- a/config/locales/crowdin/si.yml +++ b/config/locales/crowdin/si.yml @@ -286,7 +286,7 @@ si: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -597,6 +597,10 @@ si: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "හෝ" errors: @@ -2676,7 +2680,7 @@ si: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2755,7 +2759,7 @@ si: title: "අභිරුචි ක්‍රියාමාර්ග" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/sk.yml b/config/locales/crowdin/sk.yml index 4a584ef22a5..98831d34b4f 100644 --- a/config/locales/crowdin/sk.yml +++ b/config/locales/crowdin/sk.yml @@ -298,7 +298,7 @@ sk: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -609,6 +609,10 @@ sk: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "alebo" errors: @@ -2786,7 +2790,7 @@ sk: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2865,7 +2869,7 @@ sk: title: "Vlastné akcie" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/sl.yml b/config/locales/crowdin/sl.yml index b5a18d1d714..ff23b85ee58 100644 --- a/config/locales/crowdin/sl.yml +++ b/config/locales/crowdin/sl.yml @@ -298,7 +298,7 @@ sl: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -608,6 +608,10 @@ sl: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "ali" errors: @@ -2785,7 +2789,7 @@ sl: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2864,7 +2868,7 @@ sl: title: "Dejanja po meri" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/sr.yml b/config/locales/crowdin/sr.yml index 4765b28dca5..3c79e7ce777 100644 --- a/config/locales/crowdin/sr.yml +++ b/config/locales/crowdin/sr.yml @@ -292,7 +292,7 @@ sr: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -603,6 +603,10 @@ sr: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "or" errors: @@ -2731,7 +2735,7 @@ sr: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2810,7 +2814,7 @@ sr: title: "Custom actions" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/sv.yml b/config/locales/crowdin/sv.yml index fe43eef0be6..accc21dbbee 100644 --- a/config/locales/crowdin/sv.yml +++ b/config/locales/crowdin/sv.yml @@ -286,7 +286,7 @@ sv: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -597,6 +597,10 @@ sv: danger_dialog: confirmation_live_message_checked: "Knappen för att fortsätta är nu aktiv." confirmation_live_message_unchecked: "Knappen för att fortsätta är nu inaktiv. Du måste markera kryssrutan för att fortsätta." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "eller" errors: @@ -2676,7 +2680,7 @@ sv: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2755,7 +2759,7 @@ sv: title: "Anpassade åtgärder" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/th.yml b/config/locales/crowdin/th.yml index 81a0c77de26..01c5d122fbb 100644 --- a/config/locales/crowdin/th.yml +++ b/config/locales/crowdin/th.yml @@ -280,7 +280,7 @@ th: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -591,6 +591,10 @@ th: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "or" errors: @@ -2621,7 +2625,7 @@ th: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2700,7 +2704,7 @@ th: title: "การกระทำ กำหนดเอง" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/tr.yml b/config/locales/crowdin/tr.yml index 63566d1a7b1..38d3e6b6dc4 100644 --- a/config/locales/crowdin/tr.yml +++ b/config/locales/crowdin/tr.yml @@ -286,7 +286,7 @@ tr: title: "Select projects" mcp_configurations: index: - description: "MCP (Model Bağlam Protokolü), AI ajanlarının bu OpenProject sisteminde sunulan araç ve kaynakları kullanıcılara erişilebilir kılmasını sağlar." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Kaynaklar" resources_description: "OpenProject aşağıdaki araçları destekler. Her biri etkinleştirilebilir, adı ve açıklaması değiştirilebilir. Daha fazla bilgi için [documentation on MCP tools](docs_url)." resources_submit: "Kaynakları güncelle" @@ -598,6 +598,10 @@ tr: danger_dialog: confirmation_live_message_checked: "Devam etmek için düğme artık aktif." confirmation_live_message_unchecked: "Devam etmek için düğme artık aktif değil. Devam etmek için işratlemeniz gerekli." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "ya da" errors: @@ -2676,7 +2680,7 @@ tr: edit_attribute_groups: Özellik Grubunu Düzenleme gantt_pdf_export: Gantt PDF Dışa Aktarma ldap_groups: LDAP kullanıcıları ve grup senkronizasyonu - mcp_server: + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Nextcloud Storage için Tek Oturum Açma one_drive_sharepoint_file_storage: OneDrive/SharePoint Dosya Depolama @@ -2755,7 +2759,7 @@ tr: title: "Özel eylemler" description: "Özel eylemler, duruma, role, türe veya projeye göre belirli iş paketlerinde kullanıma sunabileceğiniz bir dizi önceden tanımlanmış eylemin tek tıkla kısayollarıdır." mcp_server: - description: "Yapay zeka aracılarını MCP aracılığıyla OpenProject örneğinizle entegre edin." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/uk.yml b/config/locales/crowdin/uk.yml index 15e9b4b4d69..fd3d1ac4183 100644 --- a/config/locales/crowdin/uk.yml +++ b/config/locales/crowdin/uk.yml @@ -298,7 +298,7 @@ uk: title: "Select projects" mcp_configurations: index: - description: "Протокол контексту моделі дає змогу агентам ШІ надавати своїм користувачам інструменти й ресурси, доступні в цьому екземплярі OpenProject." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Ресурси" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Оновити ресурси" @@ -606,6 +606,10 @@ uk: danger_dialog: confirmation_live_message_checked: "Кнопка для продовження активна." confirmation_live_message_unchecked: "Кнопка для продовження зараз неактивна. Щоб продовжити, поставте прапорець." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "або" errors: @@ -2780,7 +2784,7 @@ uk: edit_attribute_groups: Редагування груп атрибутів gantt_pdf_export: Експорт діаграми Ґантта в PDF ldap_groups: Синхронізація користувачів і груп LDAP - mcp_server: Сервер MCP + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Єдиний вхід для сховища Nextcloud one_drive_sharepoint_file_storage: Сховище файлів OneDrive / SharePoint @@ -2859,7 +2863,7 @@ uk: title: "Користувацькі дії" description: "Користувацькі дії – це ярлики набору попередньо визначених дій, які ви можете включати в певні пакети робіт залежно від статусу, ролі, типу або проєкту." mcp_server: - description: "Інтегруйте ШІ-агентів у свій екземпляр OpenProject за допомогою MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/uz.yml b/config/locales/crowdin/uz.yml index 9f405c414c5..715a6deec43 100644 --- a/config/locales/crowdin/uz.yml +++ b/config/locales/crowdin/uz.yml @@ -286,7 +286,7 @@ uz: title: "Select projects" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" @@ -597,6 +597,10 @@ uz: danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "or" errors: @@ -2676,7 +2680,7 @@ uz: edit_attribute_groups: Edit Attribute Groups gantt_pdf_export: Gantt PDF Export ldap_groups: LDAP users and group sync - mcp_server: MCP Server + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Single Sign-On for Nextcloud Storage one_drive_sharepoint_file_storage: OneDrive/SharePoint File Storage @@ -2755,7 +2759,7 @@ uz: title: "Custom actions" description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: - description: "Integrate AI agents with your OpenProject instance through MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/vi.yml b/config/locales/crowdin/vi.yml index 106153ace2f..990e15e03d7 100644 --- a/config/locales/crowdin/vi.yml +++ b/config/locales/crowdin/vi.yml @@ -280,7 +280,7 @@ vi: title: "Select projects" mcp_configurations: index: - description: "Giao thức bối cảnh mô hình cho phép các tác nhân AI cung cấp cho người dùng của mình các công cụ và tài nguyên được cung cấp bởi phiên bản OpenProject này." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Tài nguyên" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Cập nhật tài nguyên" @@ -591,6 +591,10 @@ vi: danger_dialog: confirmation_live_message_checked: "Nút để tiếp tục hiện đang hoạt động." confirmation_live_message_unchecked: "Nút để tiếp tục hiện không hoạt động. Bạn cần đánh dấu vào hộp kiểm để tiếp tục." + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "hoặc" errors: @@ -2619,7 +2623,7 @@ vi: edit_attribute_groups: Chỉnh sửa nhóm thuộc tính gantt_pdf_export: Xuất PDF Gantt ldap_groups: Đồng bộ hóa nhóm và người dùng LDAP - mcp_server: Máy chủ MCP + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Đăng nhập một lần để lưu trữ Nextcloud one_drive_sharepoint_file_storage: Lưu trữ tệp OneDrive/SharePoint @@ -2698,7 +2702,7 @@ vi: title: "Hành động tùy chỉnh" description: "Hành động tùy chỉnh là các phím tắt bằng một cú nhấp chuột tới một tập hợp các hành động được xác định trước mà bạn có thể cung cấp trên các gói công việc nhất định dựa trên trạng thái, vai trò, loại hoặc dự án." mcp_server: - description: "Tích hợp các tác nhân AI với phiên bản OpenProject của bạn thông qua MCP." + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/zh-CN.yml b/config/locales/crowdin/zh-CN.yml index a14625c129f..3ac010f2ae4 100644 --- a/config/locales/crowdin/zh-CN.yml +++ b/config/locales/crowdin/zh-CN.yml @@ -280,7 +280,7 @@ zh-CN: title: "Select projects" mcp_configurations: index: - description: "Model Context Protocol 允许 AI 智能体向其用户提供此 OpenProject 实例所公开的工具和资源。" + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "资源" resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "更新资源" @@ -588,6 +588,10 @@ zh-CN: danger_dialog: confirmation_live_message_checked: "继续按钮现已激活。" confirmation_live_message_unchecked: "继续按钮现已失效。您需要勾选复选框才能继续。" + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "或" errors: @@ -2617,7 +2621,7 @@ zh-CN: edit_attribute_groups: 编辑属性组 gantt_pdf_export: 甘特图 PDF 导出 ldap_groups: LDAP 用户和群组同步 - mcp_server: MCP 服务器 + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Nextcloud存储的单点登录(SSO) one_drive_sharepoint_file_storage: OneDrive/SharePoint 文件存储 @@ -2696,7 +2700,7 @@ zh-CN: title: "自定义操作" description: "自定义操作是一键快捷方式,指向一组预定义的操作,您可以根据状态、角色、类型或项目在某些工作包上使用这些操作。" mcp_server: - description: "通过 MCP 将 AI 智能体与 OpenProject 实例集成。" + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: diff --git a/config/locales/crowdin/zh-TW.yml b/config/locales/crowdin/zh-TW.yml index e4d85a617b7..fe7336d52fc 100644 --- a/config/locales/crowdin/zh-TW.yml +++ b/config/locales/crowdin/zh-TW.yml @@ -280,7 +280,7 @@ zh-TW: title: "Select projects" mcp_configurations: index: - description: "模型上下文協定允許 AI 代理向其使用者提供此 OpenProject 實體所揭露的工具與資源。" + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "資源" resources_description: "OpenProject 實作下列資源。每個資源都可以依您的需求啟用、重新命名及描述。如需詳細資訊,請參閱 [關於 MCP 資源的文件](docs_url)。" resources_submit: "更新資源" @@ -590,6 +590,10 @@ zh-TW: danger_dialog: confirmation_live_message_checked: "繼續的按鈕現已啟用。" confirmation_live_message_unchecked: "繼續的按鈕現在沒有作用。您需要勾選核取方塊才能繼續。" + mcp_configurations: + server_url_component: + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + label: "Server URL" op_dry_validation: or: "或" errors: @@ -2617,7 +2621,7 @@ zh-TW: edit_attribute_groups: 編輯群組屬性 gantt_pdf_export: 以PDF匯出甘特圖 ldap_groups: 同步LDAP使用者與群組 - mcp_server: MCP 伺服器 + mcp_server: Model Context Protocol (MCP) meeting_templates: Reusable meeting templates nextcloud_sso: Nextcloud 儲存空間的單一登入(SSO) one_drive_sharepoint_file_storage: OneDrive/SharePoint 檔案儲存 @@ -2696,7 +2700,7 @@ zh-TW: title: "自訂動作" description: "自訂動作是一系列預先定義動作的單鍵捷徑,您可以根據狀態、角色、類型或專案,在特定工作套件上使用這些動作。" mcp_server: - description: "透過 MCP 將 AI 代理與您的 OpenProject 實例整合。" + description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: