diff --git a/Dockerfile b/Dockerfile index f8a98bdf0e..c220b40799 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,36 +1,56 @@ FROM ruby:2.6-stretch +MAINTAINER operations@openproject.com -ENV NODE_VERSION="10.15.0" -ENV BUNDLER_VERSION="2.0.1" +ENV NODE_VERSION "10.15.0" +ENV BUNDLER_VERSION "2.0.1" ENV APP_USER app -ENV APP_PATH /usr/src/app -ENV APP_DATA /var/db/openproject -ENV ATTACHMENTS_STORAGE_PATH /var/db/openproject/files +ENV APP_PATH /app +ENV APP_DATA_PATH /var/openproject/assets +ENV APP_DATA_PATH_LEGACY /var/db/openproject +ENV PGDATA /var/openproject/pgdata +ENV PGDATA_LEGACY /var/lib/postgresql/9.6/main + +ENV DATABASE_URL postgres://openproject:openproject@127.0.0.1/openproject +ENV RAILS_ENV production +ENV HEROKU true +ENV RAILS_CACHE_STORE memcache +ENV OPENPROJECT_INSTALLATION__TYPE docker +ENV NEW_RELIC_AGENT_ENABLED false +ENV ATTACHMENTS_STORAGE_PATH $APP_DATA_PATH/files # Set a default key base, ensure to provide a secure value in production environments! -ENV SECRET_KEY_BASE=OVERWRITE_ME +ENV SECRET_KEY_BASE OVERWRITE_ME # install node + npm RUN curl https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz | tar xzf - -C /usr/local --strip-components=1 RUN apt-get update -qq && \ - DEBIAN_FRONTEND=noninteractive apt-get install -y \ - postgresql-client \ - mysql-client \ - sqlite \ - poppler-utils \ - unrtf \ - tesseract-ocr \ - catdoc && \ - apt-get clean && rm -rf /var/lib/apt/lists/* + DEBIAN_FRONTEND=noninteractive apt-get install -y \ + postgresql-client \ + poppler-utils \ + unrtf \ + tesseract-ocr \ + catdoc \ + memcached \ + postfix \ + postgresql \ + apache2 \ + supervisor && \ + apt-get clean && rm -rf /var/lib/apt/lists/* + +# Set up pg defaults +RUN echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.6/main/pg_hba.conf +RUN echo "listen_addresses='*'" >> /etc/postgresql/9.6/main/postgresql.conf +RUN echo "data_directory='$PGDATA'" >> /etc/postgresql/9.6/main/postgresql.conf +RUN rm -rf "$PGDATA_LEGACY" && rm -rf "$PGDATA" && mkdir -p "$PGDATA" && chown -R postgres:postgres "$PGDATA" +RUN a2enmod proxy proxy_http && rm -f /etc/apache2/sites-enabled/000-default.conf # using /home/app since npm cache and other stuff will be put there when running npm install # we don't want to pollute any locally-mounted directory RUN useradd -d /home/$APP_USER -m $APP_USER -RUN mkdir -p $APP_PATH $APP_DATA -RUN gem install bundler --version "${bundler_version}" --no-document WORKDIR $APP_PATH +RUN gem install bundler --version "${bundler_version}" --no-document COPY Gemfile ./Gemfile COPY Gemfile.* ./ @@ -38,34 +58,27 @@ COPY modules ./modules # OpenProject::Version is required by module versions in gemspecs RUN mkdir -p lib/open_project COPY lib/open_project/version.rb ./lib/open_project/ -RUN bundle install --deployment --with="docker opf_plugins" --without="test development" --jobs=8 --retry=3 - -# Then, npm install node modules -COPY package.json /tmp/npm/package.json -COPY frontend/*.json /tmp/npm/frontend/ -RUN cd /tmp/npm/frontend/ && RAILS_ENV=production npm install && mv /tmp/npm/frontend /usr/src/app/ +RUN bundle install --deployment --with="docker opf_plugins" --without="test development mysql2" --jobs=8 --retry=3 # Finally, copy over the whole thing -COPY . /usr/src/app -RUN cp docker/Procfile . +COPY . $APP_PATH + RUN sed -i "s|Rails.groups(:opf_plugins)|Rails.groups(:opf_plugins, :docker)|" config/application.rb # Ensure we can write in /tmp/op_uploaded_files (cf. #29112) -RUN mkdir -p /tmp/op_uploaded_files/ -RUN chown -R $APP_USER:$APP_USER /tmp/op_uploaded_files/ - -# Allow uploading avatars w/ postgres -RUN chown -R $APP_USER:$APP_USER $APP_DATA +RUN mkdir -p /tmp/op_uploaded_files/ && chown -R $APP_USER:$APP_USER /tmp/op_uploaded_files/ # Re-use packager database.yml COPY packaging/conf/database.yml ./config/database.yml # Run the npm postinstall manually after it was copied -RUN DATABASE_URL=sqlite3:///tmp/db.sqlite3 RAILS_ENV=production bundle exec rake assets:precompile +# Then, npm install node modules +RUN bash docker/precompile-assets.sh -# Include pandoc -RUN DATABASE_URL=sqlite3:///tmp/db.sqlite3 RAILS_ENV=production bundle exec rails runner "puts ::OpenProject::TextFormatting::Formats::Markdown::PandocDownloader.check_or_download!" +# ports +EXPOSE 80 5432 -CMD ["./docker/web"] +# volumes to export +VOLUME ["$PGDATA", "$APP_DATA_PATH"] ENTRYPOINT ["./docker/entrypoint.sh"] -VOLUME ["$APP_DATA"] +CMD ["./docker/supervisord"] diff --git a/Dockerfile.public b/Dockerfile.public deleted file mode 100644 index 3fd8f294ef..0000000000 --- a/Dockerfile.public +++ /dev/null @@ -1,39 +0,0 @@ -FROM openproject/community:8-base -MAINTAINER operations@openproject.com - -ENV DATABASE_URL=postgres://openproject:openproject@127.0.0.1/openproject -ENV RAILS_ENV=production -ENV HEROKU=true -ENV ATTACHMENTS_STORAGE_PATH=/var/db/openproject/files -ENV RAILS_CACHE_STORE=memcache -ENV SECRET_KEY_BASE=OVERWRITE_ME -ENV OPENPROJECT_INSTALLATION__TYPE=docker - -USER root -RUN apt-get update -qq && \ - DEBIAN_FRONTEND=noninteractive apt-get install -y \ - memcached \ - postfix \ - postgresql \ - apache2 \ - supervisor \ - pandoc && \ - apt-get clean && rm -rf /var/lib/apt/lists/* - -RUN a2enmod proxy proxy_http && rm -f /etc/apache2/sites-enabled/000-default.conf - -RUN echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.6/main/pg_hba.conf -RUN echo "listen_addresses='*'" >> /etc/postgresql/9.6/main/postgresql.conf -RUN rm -rf /var/lib/postgresql/9.6/main && mkdir -p /var/lib/postgresql/9.6/main && chown -R postgres:postgres /var/lib/postgresql/9.6 -RUN mkdir -p /var/db/openproject/{files,git,svn} && chown -R app:app /var/db/openproject - -COPY docker /usr/src/app/docker -COPY docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf - -# ports -EXPOSE 80 5432 - -# volumes to export -VOLUME ["/var/lib/postgresql/9.6/main", "/var/db/openproject"] - -ENTRYPOINT ["/usr/src/app/docker/entrypoint-all-in-one.sh"] diff --git a/Gemfile b/Gemfile index c2c0280edc..c6008a113e 100644 --- a/Gemfile +++ b/Gemfile @@ -172,7 +172,7 @@ gem 'sprockets', '~> 3.7.0' # also, better than thin since we can control worker concurrency. gem 'unicorn' -gem 'nokogiri', '~> 1.10.0' +gem 'nokogiri', '~> 1.10.3' gem 'carrierwave', '~> 1.3.1' gem 'fog-aws' @@ -289,6 +289,9 @@ platforms :mri, :mingw, :x64_mingw do group :postgres do gem 'pg', '~> 1.1.0' end + + # Support application loading when no database exists yet. + gem 'activerecord-nulldb-adapter', '~> 0.3.9' end group :opf_plugins do @@ -299,11 +302,8 @@ group :docker, optional: true do gem 'passenger', '~> 6.0.1' # Used to easily precompile assets - gem 'health_check', require: !!ENV['HEROKU'] gem 'newrelic_rpm', require: !!ENV['HEROKU'] gem 'rails_12factor', require: !!ENV['HEROKU'] - # Require specific version of sqlite3 for rails - gem 'sqlite3', '~> 1.3.6', require: false end # Load Gemfile.local, Gemfile.plugins, plugins', and custom Gemfiles diff --git a/Gemfile.lock b/Gemfile.lock index e69607e7f7..1655b36b67 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -101,75 +101,75 @@ GIT PATH remote: modules/auth_plugins specs: - openproject-auth_plugins (8.3.1) + openproject-auth_plugins (8.3.2) omniauth (~> 1.0) PATH remote: modules/auth_saml specs: - openproject-auth_saml (8.3.1) + openproject-auth_saml (8.3.2) omniauth-saml (~> 1.10.1) PATH remote: modules/avatars specs: - openproject-avatars (8.3.1) + openproject-avatars (8.3.2) fastimage (~> 2.1.0) gravatar_image_tag (~> 1.2.0) PATH remote: modules/backlogs specs: - openproject-backlogs (8.3.1) + openproject-backlogs (8.3.2) acts_as_silent_list (~> 3.0.0) - openproject-pdf_export (= 8.3.1) + openproject-pdf_export (= 8.3.2) PATH remote: modules/costs specs: - openproject-costs (8.3.1) + openproject-costs (8.3.2) PATH remote: modules/documents specs: - openproject-documents (8.3.1) + openproject-documents (8.3.2) PATH remote: modules/github_integration specs: - openproject-github_integration (8.3.1) + openproject-github_integration (8.3.2) openproject-webhooks PATH remote: modules/global_roles specs: - openproject-global_roles (8.3.1) + openproject-global_roles (8.3.2) PATH remote: modules/grids specs: - grids (8.3.1) + grids (8.3.2) PATH remote: modules/ldap_groups specs: - openproject-ldap_groups (8.3.1) + openproject-ldap_groups (8.3.2) PATH remote: modules/meeting specs: - openproject-meeting (8.3.1) + openproject-meeting (8.3.2) icalendar (~> 2.5.0) PATH remote: modules/my_project_page specs: - openproject-my_project_page (8.3.1) + openproject-my_project_page (8.3.2) PATH remote: modules/openid_connect specs: - openproject-openid_connect (8.3.1) + openproject-openid_connect (8.3.2) lobby_boy (~> 0.1.3) omniauth-openid_connect-providers (~> 0.1) openproject-auth_plugins (~> 8.0) @@ -177,28 +177,28 @@ PATH PATH remote: modules/pdf_export specs: - openproject-pdf_export (8.3.1) + openproject-pdf_export (8.3.2) pdf-inspector (~> 1.3.0) prawn (~> 2.2) PATH remote: modules/reporting_engine specs: - reporting_engine (8.3.1) + reporting_engine (8.3.2) json PATH remote: modules/reporting specs: - openproject-reporting (8.3.1) + openproject-reporting (8.3.2) jquery-tablesorter (~> 1.25.5) - openproject-costs (= 8.3.1) + openproject-costs (= 8.3.2) reporting_engine (>= 1.1.0) PATH remote: modules/two_factor_authentication specs: - openproject-two_factor_authentication (8.3.1) + openproject-two_factor_authentication (8.3.2) aws-sdk-sns (~> 1.1.0) messagebird-rest (~> 1.3.2) rotp (~> 3.3) @@ -206,12 +206,12 @@ PATH PATH remote: modules/webhooks specs: - openproject-webhooks (8.3.1) + openproject-webhooks (8.3.2) PATH remote: modules/xls_export specs: - openproject-xls_export (8.3.1) + openproject-xls_export (8.3.2) spreadsheet (~> 0.8.9) GEM @@ -257,6 +257,8 @@ GEM activemodel (= 5.2.2.1) activesupport (= 5.2.2.1) arel (>= 9.0) + activerecord-nulldb-adapter (0.3.9) + activerecord (>= 2.0.0) activerecord-session_store (1.1.1) actionpack (>= 4.0) activerecord (>= 4.0) @@ -478,8 +480,6 @@ GEM hashdiff (0.3.8) hashery (2.1.2) hashie (3.6.0) - health_check (3.0.0) - railties (>= 5.0) html-pipeline (2.8.3) activesupport (>= 2) nokogiri (>= 1.4) @@ -491,7 +491,7 @@ GEM concurrent-ruby (~> 1.0) i18n-js (3.2.1) i18n (>= 0.6.6) - icalendar (2.5.2) + icalendar (2.5.3) ice_cube (~> 0.16) ice_cube (0.16.3) ice_nine (0.11.2) @@ -564,7 +564,7 @@ GEM netrc (0.11.0) newrelic_rpm (6.0.0.351) nio4r (2.3.1) - nokogiri (1.10.1) + nokogiri (1.10.3) mini_portile2 (~> 2.4.0) nokogumbo (2.0.1) nokogiri (~> 1.8, >= 1.8.4) @@ -758,7 +758,7 @@ GEM iso8601 ruby-enum (0.7.2) i18n - ruby-ole (1.2.12.1) + ruby-ole (1.2.12.2) ruby-prof (0.17.0) ruby-progressbar (1.10.0) ruby-rc4 (0.1.5) @@ -817,7 +817,6 @@ GEM actionpack (>= 4.0) activesupport (>= 4.0) sprockets (>= 3.0.0) - sqlite3 (1.3.13) stackprof (0.2.12) stringex (2.8.5) svg-graph (2.1.3) @@ -893,6 +892,7 @@ PLATFORMS DEPENDENCIES actionpack-xml_parser (~> 2.0.0) activemodel-serializers-xml (~> 1.0.1) + activerecord-nulldb-adapter (~> 0.3.9) activerecord-session_store (~> 1.1.0) acts_as_list (~> 0.9.9) acts_as_tree (~> 2.8.0) @@ -934,7 +934,6 @@ DEPENDENCIES gon (~> 6.2.1) grape (~> 1.2.3) grids! - health_check html-pipeline (~> 2.8.0) htmldiff i18n-js (~> 3.2.0) @@ -949,7 +948,7 @@ DEPENDENCIES mysql2 (~> 0.5.0) net-ldap (~> 0.16.0) newrelic_rpm - nokogiri (~> 1.10.0) + nokogiri (~> 1.10.3) oj (~> 3.7.0) okcomputer (~> 1.17.3) omniauth! @@ -1029,7 +1028,6 @@ DEPENDENCIES spring spring-commands-rspec sprockets (~> 3.7.0) - sqlite3 (~> 1.3.6) stackprof stringex (~> 2.8.5) svg-graph (~> 2.1.0) diff --git a/app/controllers/concerns/omniauth_login.rb b/app/controllers/concerns/omniauth_login.rb index 1686843f80..817e39613d 100644 --- a/app/controllers/concerns/omniauth_login.rb +++ b/app/controllers/concerns/omniauth_login.rb @@ -111,7 +111,7 @@ def show_error(error) # in our database) will be created using this method. def create_user_from_omniauth(user, auth_hash) # Self-registration off - return self_registration_disabled unless Setting.self_registration? + return self_registration_disabled unless Setting.self_registration? || user.invited? fill_user_fields_from_omniauth user, auth_hash diff --git a/app/models/journal/aggregated_journal.rb b/app/models/journal/aggregated_journal.rb index 20b829c151..1f59a7f225 100644 --- a/app/models/journal/aggregated_journal.rb +++ b/app/models/journal/aggregated_journal.rb @@ -56,7 +56,7 @@ def with_notes_id(notes_id) # Therefore we have to provide the notes_id to the aggregation on top of it being used # in the where clause to pick the desired AggregatedJournal. raw_journal = query_aggregated_journals(journal_id: notes_id) - .where("#{table_name}.id = #{notes_id}") + .where("#{table_name}.id = ?", notes_id) .first raw_journal ? Journal::AggregatedJournal.new(raw_journal) : nil diff --git a/config/initializers/05-null_db_fallback.rb b/config/initializers/05-null_db_fallback.rb new file mode 100644 index 0000000000..db0119e05d --- /dev/null +++ b/config/initializers/05-null_db_fallback.rb @@ -0,0 +1,36 @@ +#-- encoding: UTF-8 + +#-- copyright +# OpenProject is a project management system. +# Copyright (C) 2012-2018 the OpenProject Foundation (OPF) +# +# 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-2017 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 docs/COPYRIGHT.rdoc for more details. +#++ + +# Since Rails 5, rake commands like db:create load the whole application. +# As initializers and other parts of the boot sequence rely on calls accessing +# the DB, the null db gem is used to fake the existence of a database in cases where +# the db has not been created yet. + +OpenProject::NullDbFallback.fallback diff --git a/config/initializers/30-open_project_loading.rb b/config/initializers/30-open_project_loading.rb new file mode 100644 index 0000000000..936c0a0835 --- /dev/null +++ b/config/initializers/30-open_project_loading.rb @@ -0,0 +1,31 @@ +#-- encoding: UTF-8 + +#-- copyright +# OpenProject is a project management system. +# Copyright (C) 2012-2018 the OpenProject Foundation (OPF) +# +# 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-2017 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 docs/COPYRIGHT.rdoc for more details. +#++ + +require 'open_project' diff --git a/config/initializers/health_checks.rb b/config/initializers/health_checks.rb index e9774bb9cc..8863977111 100644 --- a/config/initializers/health_checks.rb +++ b/config/initializers/health_checks.rb @@ -17,9 +17,6 @@ def check end end -# Mount at /health_checks -OkComputer.mount_at = 'health_checks' - # Register delayed_job backed up test dj_max = OpenProject::Configuration.health_checks_jobs_queue_count_threshold OkComputer::Registry.register "delayed_jobs_backed_up", @@ -32,6 +29,24 @@ def check # Make dj backed up optional due to bursts OkComputer.make_optional %w(delayed_jobs_backed_up) +# Register web worker check for web + database +OkComputer::CheckCollection.new('web').tap do |collection| + collection.register :default, OkComputer::Registry.fetch('default') + collection.register :database, OkComputer::Registry.fetch('database') + OkComputer::Registry.default_collection.register 'web', collection +end + +# Register full check for web + database + dj worker +OkComputer::CheckCollection.new('full').tap do |collection| + collection.register :default, OkComputer::Registry.fetch('default') + collection.register :database, OkComputer::Registry.fetch('database') + collection.register :mail, OkComputer::ActionMailerCheck.new + collection.register :delayed_jobs_backed_up, OkComputer::Registry.fetch('delayed_jobs_backed_up') + collection.register :delayed_jobs_never_ran, OkComputer::Registry.fetch('delayed_jobs_never_ran') + OkComputer::Registry.default_collection.register 'full', collection +end + + # Check if authentication required authentication_password = OpenProject::Configuration.health_checks_authentication_password if authentication_password.present? diff --git a/config/initializers/30-redmine.rb b/config/initializers/locale_fallbacks.rb similarity index 98% rename from config/initializers/30-redmine.rb rename to config/initializers/locale_fallbacks.rb index c01ce8a427..8010e3ff49 100644 --- a/config/initializers/30-redmine.rb +++ b/config/initializers/locale_fallbacks.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2018 the OpenProject Foundation (OPF) @@ -37,5 +38,3 @@ defaults = Set.new I18n.fallbacks.defaults + Setting.available_languages.map(&:to_sym) I18n.fallbacks.defaults = defaults end - -require 'open_project' diff --git a/config/locales/crowdin/af.yml b/config/locales/crowdin/af.yml index 47c65ce819..4eafe53229 100644 --- a/config/locales/crowdin/af.yml +++ b/config/locales/crowdin/af.yml @@ -2932,7 +2932,3 @@ af: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Enable incoming email web service - setting_mail_handler_api_description: The email web handler enables OpenProject - to receive emails containing specific commands as an instrumentation mechanism - (e.g., to create and update work packages). diff --git a/config/locales/crowdin/ar.yml b/config/locales/crowdin/ar.yml index 9d0617a338..b3757e7a96 100644 --- a/config/locales/crowdin/ar.yml +++ b/config/locales/crowdin/ar.yml @@ -2995,7 +2995,3 @@ ar: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: تمكين خدمة ويب البريد الإلكتروني الوارد - setting_mail_handler_api_description: معالج ويب البريد الإلكتروني يتيح لOPEN Project - أن يتلقى رسائل البريد الإلكتروني التي تحتوي على أوامر محددة كآلية لأجهزة (مثلاً، - لإنشاء وتحديث حزم العمل). diff --git a/config/locales/crowdin/az.yml b/config/locales/crowdin/az.yml index 5cab6aa266..4060a9bcbc 100644 --- a/config/locales/crowdin/az.yml +++ b/config/locales/crowdin/az.yml @@ -2919,7 +2919,3 @@ az: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Enable incoming email web service - setting_mail_handler_api_description: The email web handler enables OpenProject - to receive emails containing specific commands as an instrumentation mechanism - (e.g., to create and update work packages). diff --git a/config/locales/crowdin/bg.yml b/config/locales/crowdin/bg.yml index 79d82d3ba5..13ea1b5eb4 100644 --- a/config/locales/crowdin/bg.yml +++ b/config/locales/crowdin/bg.yml @@ -2928,7 +2928,3 @@ bg: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Enable incoming email web service - setting_mail_handler_api_description: Имейл уеб манипулаторът позволява на OpenProject - да получава имейли, съдържащи конкретни команди като инструментален механизъм - (например, за да създава и актуализира работни пакети). diff --git a/config/locales/crowdin/ca.yml b/config/locales/crowdin/ca.yml index 0c08ab0f22..7fcf3a7109 100644 --- a/config/locales/crowdin/ca.yml +++ b/config/locales/crowdin/ca.yml @@ -2986,9 +2986,3 @@ ca: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Habilitar el servei web de correus electrònics - entrants - setting_mail_handler_api_description: El controlador de correu web permet a OpenProject - rebre missatges de correu electrònic que continguin ordres específiques com un - mecanisme d'instrumentació (per exemple, per crear i actualitzar els paquets de - treball). diff --git a/config/locales/crowdin/cs.yml b/config/locales/crowdin/cs.yml index 5a029b5777..fb4db96178 100644 --- a/config/locales/crowdin/cs.yml +++ b/config/locales/crowdin/cs.yml @@ -2980,7 +2980,3 @@ cs: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Enable incoming email web service - setting_mail_handler_api_description: The email web handler enables OpenProject - to receive emails containing specific commands as an instrumentation mechanism - (e.g., to create and update work packages). diff --git a/config/locales/crowdin/da.yml b/config/locales/crowdin/da.yml index 0a690da9fc..80d448dbbb 100644 --- a/config/locales/crowdin/da.yml +++ b/config/locales/crowdin/da.yml @@ -2922,7 +2922,3 @@ da: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Aktivér indgående e-mailwebtjeneste - setting_mail_handler_api_description: E-mail webhåndteringen muliggør, at OpenProject - kan modtage e-mails indeholdende specifikke kommandoer, som en mekanisme til instrumentering - (f.eks., at oprette og opdatere arbejdspakker). diff --git a/config/locales/crowdin/de.yml b/config/locales/crowdin/de.yml index 0db634697a..94b8028d23 100644 --- a/config/locales/crowdin/de.yml +++ b/config/locales/crowdin/de.yml @@ -58,19 +58,20 @@ de: no_results_content_title: Derzeit gibt es keine Authentifizierungsmodi. no_results_content_text: Erstellen Sie einen neuen Authentifizierungsmodus ldap_auth_sources: - connection_encryption: Connection encryption + connection_encryption: Verbindungsverschlüsselung tls_mode: plain: kein simple_tls: simple_tls start_tls: start_tls - plain_description: Plain unencrypted connection, no TLS negotiation. - simple_tls_description: Implicit TLS encryption, but no certificate validation. - Use with caution and implicit trust of the LDAP connection. - start_tls_description: Explicit TLS encryption with full validation. Use for - LDAP over TLS/SSL. - section_more_info_link_html: 'This section concerns the connection security - of this LDAP authentication source. For more information, visit the - Net::LDAP documentation. + plain_description: Unverschlüsselte Verbindung. + simple_tls_description: Implizite TLS-Verschlüsselung ohne Verifikation. Mit + Bedacht verwenden, da diese Option in impliziten Vertrauen in die LDAP-Verbindung + resultiert. + start_tls_description: Explizite TLS-Verschlüsselung mit Verifikation der Zertifikatskette. + Für LDAP over TLS/SSL verwenden. + section_more_info_link_html: 'Dieser Abschnitt betrifft die Verbindungssicherheit + dieser LDAP-Authentifizierungsquelle. Besuchen Sie für weitere Informationen + die Net::LDAP Dokumentation. ' boards: @@ -396,9 +397,9 @@ de: encoded_token: Enterprise-Edition Support Token active_user_count_restriction: Maximale aktive Nutzer grids/grid: - page: Page - row_count: Number of rows - column_count: Number of columns + page: Seite + row_count: Anzahl der Zeilen + column_count: Anzahl der Spalten widgets: Widgets relation: delay: Pufferzeit @@ -572,9 +573,9 @@ de: unreadable: kann nicht gelesen werden. Ist dies ein Enterprise-Edition Support Token? grids/grid: - overlaps: overlap. - outside: is outside of the grid. - end_before_start: end value needs to be larger than the start value. + overlaps: überlappen. + outside: ist außerhalb des Rasters. + end_before_start: der Endwert muss größer sein als der Startwert. parse_schema_filter_params_service: attributes: base: @@ -1559,7 +1560,7 @@ de: label_previous_week: Woche zurück label_principal_invite_via_email: " oder Nutzer per E-Mail einladen" label_principal_search: Vorhandene Benutzer / Gruppen hinzufügen - label_privacy_policy: Data privacy and security policy + label_privacy_policy: Datenschutz- und Sicherheitsrichtlinien label_product_version: Produktversion label_professional_support: Professionelle Unterstützung label_profile: Profil @@ -1885,8 +1886,8 @@ de: notice_account_update_failed: Konto konnte nicht aktualisiert werden. Bitte besuchen Sie ihre Profilseite und überprüfen Sie die Einstellungen. notice_account_updated: Konto wurde erfolgreich aktualisiert. - notice_account_other_session_expired: All other sessions tied to your account have - been invalidated. + notice_account_other_session_expired: Alle anderen Sitzungen, die mit Ihrem Konto + verbunden sind, wurden beendet. notice_account_wrong_password: Falsches Kennwort. notice_account_registered_and_logged_in: Willkommen, ihr Benutzerkonto wurde aktiviert. Sie sind nun angemeldet. @@ -3021,7 +3022,3 @@ de: revoke_my_application_confirmation: Möchten Sie diese Anwendung wirklich entfernen? Dies wird %{token_count} aktive Token widerrufen. my_registered_applications: Registrierte OAuth-Anwendungen - setting_mail_handler_api_enabled: Web-Service für eingehende E-Mails aktivieren - setting_mail_handler_api_description: Der E-Mail Web-Service erlaubt es OpenProject, - E-Mails mit speziellen Anweisungen zu erhalten und darauf zu reagieren (z.B. zum - Anlegen und Aktualisieren von Arbeitspaketen). diff --git a/config/locales/crowdin/el.yml b/config/locales/crowdin/el.yml index c3ec5c9ad2..21082bd0d9 100644 --- a/config/locales/crowdin/el.yml +++ b/config/locales/crowdin/el.yml @@ -384,9 +384,9 @@ el: encoded_token: Enterprise support token active_user_count_restriction: Maximum active users grids/grid: - page: Page - row_count: Number of rows - column_count: Number of columns + page: Σελίδα + row_count: Πλήθος γραμμών + column_count: Πλήθοςστηλών widgets: Widgets relation: delay: Καθυστέρηση @@ -2919,7 +2919,3 @@ el: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Enable incoming email web service - setting_mail_handler_api_description: The email web handler enables OpenProject - to receive emails containing specific commands as an instrumentation mechanism - (e.g., to create and update work packages). diff --git a/config/locales/crowdin/es.yml b/config/locales/crowdin/es.yml index 4e133ad3e7..44be17fdb2 100644 --- a/config/locales/crowdin/es.yml +++ b/config/locales/crowdin/es.yml @@ -1423,7 +1423,7 @@ es: label_hierarchy_leaf: Hoja de jerarquía label_home: Inicio label_subject_or_id: Asunto o ID - label_impressum: Impressum + label_impressum: Aviso legal label_in: en label_in_less_than: en menos de label_in_more_than: en más de @@ -1556,7 +1556,7 @@ es: label_previous_week: Semana anterior label_principal_invite_via_email: " o invitar nuevos usuarios vía email" label_principal_search: Añadir usuarios o grupos existentes - label_privacy_policy: Data privacy and security policy + label_privacy_policy: Política de privacidad y seguridad de datos label_product_version: Versión del producto label_professional_support: Soporte profesional label_profile: Perfil @@ -3025,9 +3025,3 @@ es: revoke_my_application_confirmation: "¿Seguro que quieres eliminar esta aplicación? Eso suspenderá %{token_count} activos para realizarse." my_registered_applications: Aplicaciones OAuth Registradas - setting_mail_handler_api_enabled: Habilitar el servicio web de correo electrónico - entrante - setting_mail_handler_api_description: El controlador de correo electrónico web permite - a OpenProject recibir correos electrónicos que contienen comandos específicos - como un mecanismo de instrumentación (por ejemplo, para crear y actualizar los - paquetes de trabajo). diff --git a/config/locales/crowdin/et.yml b/config/locales/crowdin/et.yml index 6641749dd0..bc3baad4c2 100644 --- a/config/locales/crowdin/et.yml +++ b/config/locales/crowdin/et.yml @@ -2910,7 +2910,3 @@ et: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Enable incoming email web service - setting_mail_handler_api_description: The email web handler enables OpenProject - to receive emails containing specific commands as an instrumentation mechanism - (e.g., to create and update work packages). diff --git a/config/locales/crowdin/fa.yml b/config/locales/crowdin/fa.yml index 94b2cd3620..fb8654a91b 100644 --- a/config/locales/crowdin/fa.yml +++ b/config/locales/crowdin/fa.yml @@ -343,7 +343,7 @@ fa: filesize: اندازه‌ attribute_help_text: attribute_name: Attribute - help_text: Help text + help_text: متن راهنما auth_source: account: حساب کاربری attr_firstname: مشخصه نام @@ -2917,7 +2917,3 @@ fa: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Enable incoming email web service - setting_mail_handler_api_description: The email web handler enables OpenProject - to receive emails containing specific commands as an instrumentation mechanism - (e.g., to create and update work packages). diff --git a/config/locales/crowdin/fi.yml b/config/locales/crowdin/fi.yml index dc062a8cba..9939c8cf8a 100644 --- a/config/locales/crowdin/fi.yml +++ b/config/locales/crowdin/fi.yml @@ -985,13 +985,13 @@ fi: default_type_bug: Virhe default_type_deliverable: Suorite default_type_epic: Epic - default_type_feature: Feature + default_type_feature: Ominaisuus default_type_milestone: Milestone - default_type_phase: Phase + default_type_phase: Vaihe default_type_task: Tehtävä - default_type_user_story: User story + default_type_user_story: Käyttäjän tarina description_active: Aktiivinen? - description_attachment_toggle: Show/Hide attachments + description_attachment_toggle: Näytä tai Piilota liitteet description_autocomplete: 'Tämä kenttä käyttää automaattisen täydennyksen. Kun näppäily otsikon työtä paketin saat listan mahdollisista ehdokkaista. Valitse yksi käyttäen nuoli ylös ja nuoli alas näppäintä ja valitse sarkain tai näppäile näppäintä. @@ -2911,6 +2911,3 @@ fi: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Ota käyttöön WS saapuville sähköposteille - setting_mail_handler_api_description: Sähköpostipalvelu mahdollistaa tietynlaisten - komentojen (esim. työpaketin luonti ja päivitys) vastaanottamisen sähköpostitse. diff --git a/config/locales/crowdin/fil.yml b/config/locales/crowdin/fil.yml index 1ffde0af52..ec51e4a992 100644 --- a/config/locales/crowdin/fil.yml +++ b/config/locales/crowdin/fil.yml @@ -3034,7 +3034,3 @@ fil: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Paganahin ang paparating na email web service - setting_mail_handler_api_description: Ang email web handler ay pinagana ang OpenProject - upang makatanggap ng mga mail na naglalaman ng tiyak na command bilang isang intstrumentasyon - mechanism ( hal. upang lumikha at i-update ang mga work package). diff --git a/config/locales/crowdin/fr.yml b/config/locales/crowdin/fr.yml index 25d257f66c..2fe6982140 100644 --- a/config/locales/crowdin/fr.yml +++ b/config/locales/crowdin/fr.yml @@ -58,7 +58,7 @@ fr: no_results_content_title: Il n'y a actuellement aucun mode d'authentification. no_results_content_text: Créer un nouveau mode d'authentification ldap_auth_sources: - connection_encryption: Connection encryption + connection_encryption: Cryptage de la connexion tls_mode: plain: aucun(e) simple_tls: simple_tls @@ -68,9 +68,9 @@ fr: Use with caution and implicit trust of the LDAP connection. start_tls_description: Explicit TLS encryption with full validation. Use for LDAP over TLS/SSL. - section_more_info_link_html: 'This section concerns the connection security - of this LDAP authentication source. For more information, visit the - Net::LDAP documentation. + section_more_info_link_html: 'Cette section concerne la sécurité de connexion + de cette source d''authentification LDAP. Pour plus d''informations, visitez + the Net::LDAP documentation. ' boards: @@ -148,8 +148,8 @@ fr: failed: La suppression du projet %{name} a échoué failed_text: The request to delete project %{name} has failed. The project was left archived. - completed: Deletion of project %{name} completed - completed_text: The request to delete project '%{name}' has been completed. + completed: Suppression du projet %{name} terminée + completed_text: La demande de suppression du projet '%{name}' a été terminée. index: no_results_title_text: Aucun projet pour le moment no_results_content_text: Créer un nouveau projet @@ -393,8 +393,8 @@ fr: active_user_count_restriction: Nombre maximal d’utilisateurs actif grids/grid: page: Page - row_count: Number of rows - column_count: Number of columns + row_count: Nombre de lignes + column_count: Nombre de colonnes widgets: Widgets relation: delay: Délai @@ -488,8 +488,8 @@ fr: type: Type watcher: Observateur doorkeeper/application: - uid: Client ID - secret: Client secret + uid: Id du client + secret: Clé secrète du client owner: Propriétaire redirect_uri: URL de redirection client_credentials_user_id: Client Credentials User ID @@ -566,8 +566,8 @@ fr: Entreprise ? grids/grid: overlaps: overlap. - outside: is outside of the grid. - end_before_start: end value needs to be larger than the start value. + outside: est hors de la grille. + end_before_start: la valeur finale doit être supérieure à la valeur de départ. parse_schema_filter_params_service: attributes: base: @@ -783,7 +783,7 @@ fr: button_change_password: Changer de mot de passe button_check_all: Tout cocher button_clear: Effacer - button_click_to_reveal: Click to reveal + button_click_to_reveal: Cliquez pour révéler button_close: Fermer button_collapse_all: Tout replier button_configure: Configurer @@ -1418,8 +1418,8 @@ fr: label_history: Historique label_hierarchy_leaf: Feuille de hiérarchie label_home: Accueil - label_subject_or_id: Subject or ID - label_impressum: Impressum + label_subject_or_id: Objet ou ID + label_impressum: Mentions légales label_in: dans label_in_less_than: en moins de label_in_more_than: en plus de @@ -1552,7 +1552,7 @@ fr: label_previous_week: Semaine précédente label_principal_invite_via_email: " ou inviter de nouveaux utilisateurs par courriel" label_principal_search: Ajouter des utilisateurs ou groupes existant - label_privacy_policy: Data privacy and security policy + label_privacy_policy: Politique de confidentialité et de sécurité des données label_product_version: Version du produit label_professional_support: Support professionnel label_profile: Profil @@ -1884,8 +1884,8 @@ fr: notice_account_update_failed: Le paramètre de compte n'a pas pu être enregistré. Veuillez consulter la page de votre compte. notice_account_updated: Le compte a été mis à jour avec succès. - notice_account_other_session_expired: All other sessions tied to your account have - been invalidated. + notice_account_other_session_expired: Toutes les autres sessions liées à votre compte + ont été invalidées. notice_account_wrong_password: Mot de passe incorrect notice_account_registered_and_logged_in: Bienvenue, votre compte a été activé. Vous êtes maintenant connecté. @@ -2315,7 +2315,7 @@ fr: setting_per_page_options: Options des objets par page setting_plain_text_mail: Courriel au format texte (pas de HTML) setting_protocol: Protocole - setting_security_badge_displayed: Display security badge + setting_security_badge_displayed: Afficher le badge de sécurité setting_registration_footer: Pied de page d’inscription setting_repositories_automatic_managed_vendor: Type de fournisseur de dépôt automatique setting_repositories_encodings: Encodages de référentiels @@ -2906,7 +2906,7 @@ fr: schema: Schéma doorkeeper: pre_authorization: - status: Pre-authorization + status: Préautorisation errors: messages: invalid_request: Il manque à la requête un paramètre requis, inclut une valeur @@ -2928,36 +2928,38 @@ fr: due to Doorkeeper.configure.resource_owner_from_credentials being unconfigured. resource_owner_authenticator_not_configured: Resource Owner find failed due to Doorkeeper.configure.resource_owner_authenticator being unconfigured. - admin_authenticator_not_configured: Access to admin panel is forbidden due - to Doorkeeper.configure.admin_authenticator being unconfigured. - unsupported_response_type: The authorization server does not support this - response type. - invalid_client: Client authentication failed due to unknown client, no client - authentication included, or unsupported authentication method. - invalid_grant: The provided authorization grant is invalid, expired, revoked, - does not match the redirection URI used in the authorization request, or - was issued to another client. - unsupported_grant_type: The authorization grant type is not supported by the - authorization server. + admin_authenticator_not_configured: L'accès au panneau d'administration est + interdit en raison de l'absence de configuration de Doorkeeper.configure.admin_authenticator. + unsupported_response_type: Le serveur d'autorisation ne supporte pas ce type + de réponse. + invalid_client: L'authentification du client a échoué en raison d'un client + inconnu, d'une authentification du client non supportée ou d'une méthode + d'authentification non supportée. + invalid_grant: L'autorisation accordée est invalide, expirée, révoquée, ne + correspond pas à l'URI de redirection utilisée dans la demande d'autorisation + ou a été accordée à un autre client. + unsupported_grant_type: Le type de subvention d'autorisation n'est pas supporté + par le serveur d'autorisation. invalid_token: - revoked: The access token was revoked - expired: The access token expired - unknown: The access token is invalid + revoked: Le jeton d'accès a été révoqué + expired: Le jeton d'accès a expiré + unknown: Le jeton d'accès est invalide unsupported_browser: - title: Your browser is outdated and unsupported. - message: You may run into errors and degraded experience on this page. + title: Votre navigateur est obsolète et non pris en charge. + message: Vous pouvez rencontrer des erreurs et une expérience dégradée sur cette + page. update_message: Veuillez mettre à jour votre navigateur. close_warning: Ignorer cet avertissement. oauth: application: singular: Applications OAuth - plural: OAuth applications - named: OAuth application '%{name}' - new: New OAuth application - default_scopes: "(Default scopes)" + plural: Applications OAuth + named: Application OAuth '%{name}' + new: Nouvelle application Oauth + default_scopes: "(Portée par défaut)" instructions: - name: The name of your application. This will be displayed to other users - upon authorization. + name: Le nom de votre application. Ceci sera affiché aux autres utilisateurs + sur autorisation. redirect_uri_html: 'The allowed URLs authorized users can be redirected to. One entry per line.
If you''re registering a desktop application, use the following URL. @@ -2971,25 +2973,25 @@ fr: register_intro: If you are developing an OAuth API client application for OpenProject, you can register it using this form for all users to use. default_scopes: '' - client_id: Client ID + client_id: Id du client client_secret_notice: 'This is the only time we can print the client secret, please note it down and keep it secure. It should be treated as a password and cannot be retrieved by OpenProject at a later time. ' authorization_dialog: - authorize: Authorize - cancel: Cancel and deny authorization. - prompt_html: Authorize %{application_name} to use your account - %{login}? - title: Authorize %{application_name} + authorize: Autoriser + cancel: Annuler et refuser l'autorisation. + prompt_html: Autoriser %{application_name} à utiliser votre + compte %{login} ? + title: Autoriser %{application_name} wants_to_access_html: 'Cette application demande l''accès à votre compte OpenProject.
Il a demandé les autorisations suivantes:Il a demandé les autorisations suivantes ' scopes: - api_v3: Full API access + api_v3: Accès API complet api_v3_text: L'application recevra un accès complet en lecture et écriture à l'API OpenProject pour effectuer des actions en votre nom. grants: @@ -3000,8 +3002,8 @@ fr: none_given: Aucune application OAuth n'a été autorisée à accéder à votre compte utilisateur. x_active_tokens: - one: one active token - other: "%{count} active token" + one: un jeton actif + other: un jeton actif %{count} flows: authorization_code: Authorization code flow client_credentials: Client credentials flow @@ -3019,7 +3021,3 @@ fr: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Activer le service web de courrier entrant - setting_mail_handler_api_description: Le service web de courrier entrant permet - à OpenProject de recevoir des courriels contenant des commandes spécifiques à - exécuter (e.g. pour créer et mettre à jour des lots de travaux). diff --git a/config/locales/crowdin/he.yml b/config/locales/crowdin/he.yml index a6f4146b1f..8900c4bb5c 100644 --- a/config/locales/crowdin/he.yml +++ b/config/locales/crowdin/he.yml @@ -2957,7 +2957,3 @@ he: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Enable incoming email web service - setting_mail_handler_api_description: The email web handler enables OpenProject - to receive emails containing specific commands as an instrumentation mechanism - (e.g., to create and update work packages). diff --git a/config/locales/crowdin/hi.yml b/config/locales/crowdin/hi.yml index cb7a441fda..fef46231d8 100644 --- a/config/locales/crowdin/hi.yml +++ b/config/locales/crowdin/hi.yml @@ -2933,7 +2933,3 @@ hi: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Enable incoming email web service - setting_mail_handler_api_description: The email web handler enables OpenProject - to receive emails containing specific commands as an instrumentation mechanism - (e.g., to create and update work packages). diff --git a/config/locales/crowdin/hr.yml b/config/locales/crowdin/hr.yml index 494d5caad8..1043fa02a9 100644 --- a/config/locales/crowdin/hr.yml +++ b/config/locales/crowdin/hr.yml @@ -2967,7 +2967,3 @@ hr: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Omogućiti dolaznu e-poštu web-usluga - setting_mail_handler_api_description: The email web handler enables OpenProject - to receive emails containing specific commands as an instrumentation mechanism - (e.g., to create and update work packages). diff --git a/config/locales/crowdin/hu.yml b/config/locales/crowdin/hu.yml index 355589ad4c..84a660fb87 100644 --- a/config/locales/crowdin/hu.yml +++ b/config/locales/crowdin/hu.yml @@ -197,10 +197,10 @@ hu: no_results_content_text: Állapot jelentés hozzáadása statuses: edit: - status_readonly_html: "Válaszd ki ezt az opciót a Feladatcsoport csak olvashatóvá - tételéhez.\nNo attributes can be changed with the exception of the status. - \n
\nNote: Örökölt értékek (pl. a gyermektől, vagy kapcsolatoktól) - meg fognak maradni.\n" + status_readonly_html: | + Jelölje be ezt az opciót, ha ezt az állapotot tartalmazó munkacsomagokat csak olvashatóvá kívánja jelölni. Az állapot kivételével semmilyen attribútum nem módosítható. +
+ Megjegyzés: az örökölt értékek (például a gyermekobjektum vagy a kapcsolatok) továbbra is érvényesek. status_color_text: | Ide kattintva rendelhet vagy változtathatja meg a színét az állapotnak. Az állapot gomb látható és kiemelhető a feladatcsoport táblázatban. @@ -217,9 +217,9 @@ hu: projects: Projektek enabled_projects: Engedélyezett projektek add_group: Tulajdonságcsoport - add_table: Add table of related work packages - edit_query: Edit table - query_group_placeholder: Give the table a name + add_table: Táblázat hozzáadása a kapcsolódó munkacsomagokhoz + edit_query: Táblázat szerkesztése + query_group_placeholder: Adja meg a tábla nevét reset: Alapbeállítások visszaállítása type_color_text: 'Kattintson az adott típus színének hozzárendeléséhez vagy megváltoztatásához. A kiválasztott szín különbözteti meg a feladatcsoportokat @@ -390,7 +390,7 @@ hu: to: Kapcsolódó feladatcsoport status: is_closed: Lezárt feladatcsoport - is_readonly: Feladatcsoport csak olvasható + is_readonly: Munkacsomag csak olvasható journal: notes: Jegyzet member: @@ -1239,7 +1239,7 @@ hu: label_authentication: Hitelesítés label_available_project_work_package_categories: Rendelkezésre álló munkacsomag kategóriák - label_available_project_work_package_types: Available work package types + label_available_project_work_package_types: Rendelkezésre álló munkacsomag típusok label_available_project_boards: Rendelkezésre álló táblák label_available_project_versions: Rendelkezésre álló verziók label_available_project_repositories: Rendelkezésre álló tárolók @@ -2265,7 +2265,7 @@ hu: setting_per_page_options: Objektum per oldal opció setting_plain_text_mail: Egyszerű szöveges e-mail (nem HTML) setting_protocol: Protokol - setting_security_badge_displayed: Display security badge + setting_security_badge_displayed: Biztonsági állapot kijelzés setting_registration_footer: Regisztráció lábléc setting_repositories_automatic_managed_vendor: Automatikus tároló típus setting_repositories_encodings: Tárolók kódolásai @@ -2946,7 +2946,3 @@ hu: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Bejövő e-mail szolgáltatás engedélyezése - setting_mail_handler_api_description: Az e-mail web kezelő lehetővé teszi, hogy - az OpenProject különböző utasításokat tartalmazó e-maileket fogadjon és végrehajtson - (úgy mint feladatcsoport készítés, frissítés). diff --git a/config/locales/crowdin/id.yml b/config/locales/crowdin/id.yml index f6f3e2171d..13f6bbc58e 100644 --- a/config/locales/crowdin/id.yml +++ b/config/locales/crowdin/id.yml @@ -2914,6 +2914,3 @@ id: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Aktifkan web service untuk email masuk - setting_mail_handler_api_description: Email web handler memungkinkan OpenProject - untuk mengolah perintah (seperti membuat dan update work packages). diff --git a/config/locales/crowdin/it.yml b/config/locales/crowdin/it.yml index 37aeeb1be4..4dc1884018 100644 --- a/config/locales/crowdin/it.yml +++ b/config/locales/crowdin/it.yml @@ -59,7 +59,7 @@ it: no_results_content_title: Al momento non vi è alcuna modalità di autenticazione. no_results_content_text: Crea una nuova modalità di autenticazione ldap_auth_sources: - connection_encryption: Connection encryption + connection_encryption: Crittografia connessione tls_mode: plain: nessuno simple_tls: simple_tls @@ -389,10 +389,10 @@ it: encoded_token: Token di assistenza Enterprise active_user_count_restriction: Numero massimo di utenti attivi grids/grid: - page: Page - row_count: Number of rows - column_count: Number of columns - widgets: Widgets + page: Pagina + row_count: Numero di righe + column_count: Numero di colonne + widgets: Widget relation: delay: Ritardo from: Macro-attività @@ -562,8 +562,8 @@ it: unreadable: non può essere letto. Sei sicuro che si tratta di un token di assistenza? grids/grid: - overlaps: overlap. - outside: is outside of the grid. + overlaps: sovrapposizione. + outside: è fuori dalla griglia. end_before_start: end value needs to be larger than the start value. parse_schema_filter_params_service: attributes: @@ -3018,8 +3018,3 @@ it: revoke_my_application_confirmation: Vuoi davvero rimuovere questa applicazione? Questo revocherà %{token_count} attivo per essa. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Abilitare il servizio web di posta elettronica - in arrivo - setting_mail_handler_api_description: Il gestore di posta elettronica web consente - ad OpenProject di ricevere e-mail contenenti comandi specifici come strumento - di automazione (ad esempio, per creare e aggiornare pacchetti di lavoro). diff --git a/config/locales/crowdin/ja.yml b/config/locales/crowdin/ja.yml index 33aa7c0bfb..cfe59ffcf1 100644 --- a/config/locales/crowdin/ja.yml +++ b/config/locales/crowdin/ja.yml @@ -1283,7 +1283,7 @@ ja: label_hierarchy_leaf: 階層枚 label_home: ホーム label_subject_or_id: 件名またはID - label_impressum: Impressum + label_impressum: 免責事項 label_in: 今日から○日後 label_in_less_than: 今日から○日後以前 label_in_more_than: 今日から○日後以降 @@ -1416,7 +1416,7 @@ ja: label_previous_week: 先週 label_principal_invite_via_email: " またはメールで新しいユーザを招待" label_principal_search: 既存のユーザーまたはグループを追加する - label_privacy_policy: Data privacy and security policy + label_privacy_policy: データのプライバシーとセキュリティポリシー label_product_version: 製品バージョ​​ン label_professional_support: プロフェッショナルサポート label_profile: プロファイル @@ -2642,6 +2642,3 @@ ja: revoke_my_application_confirmation: 本当にこのアプリケーションを削除しますか? これにより %{token_count} が無効になります。 my_registered_applications: 登録済みのOAuthアプリケーション - setting_mail_handler_api_enabled: 受信メールWebサービスを有効にする - setting_mail_handler_api_description: メールWebハンドラーにより、OpenProjectは機械的な仕組みで特定のコマンドが含まれているメールを受信することができます - (例えば、作業項目の作成と更新)。 diff --git a/config/locales/crowdin/js-ar.yml b/config/locales/crowdin/js-ar.yml index 4bc482db54..652de04ab7 100644 --- a/config/locales/crowdin/js-ar.yml +++ b/config/locales/crowdin/js-ar.yml @@ -152,7 +152,7 @@ ar: choose_widget: Choose widget widgets: documents: - title: Documents + title: الوثائق no_results: No documents yet. news: title: الأخبار diff --git a/config/locales/crowdin/js-bg.yml b/config/locales/crowdin/js-bg.yml index 30367a2181..0de9641e81 100644 --- a/config/locales/crowdin/js-bg.yml +++ b/config/locales/crowdin/js-bg.yml @@ -152,7 +152,7 @@ bg: choose_widget: Choose widget widgets: documents: - title: Documents + title: Документи no_results: No documents yet. news: title: Новини diff --git a/config/locales/crowdin/js-da.yml b/config/locales/crowdin/js-da.yml index b30a338cbb..c0c920bf61 100644 --- a/config/locales/crowdin/js-da.yml +++ b/config/locales/crowdin/js-da.yml @@ -152,7 +152,7 @@ da: choose_widget: Choose widget widgets: documents: - title: Documents + title: Dokumenter no_results: No documents yet. news: title: Nyheder diff --git a/config/locales/crowdin/js-de.yml b/config/locales/crowdin/js-de.yml index 47d58aac5f..356bfe805a 100644 --- a/config/locales/crowdin/js-de.yml +++ b/config/locales/crowdin/js-de.yml @@ -157,26 +157,26 @@ de: general_text_Yes: Ja grid: add_modal: - choose_widget: Choose widget + choose_widget: Widget auswählen widgets: documents: - title: Documents - no_results: No documents yet. + title: Dokumente + no_results: Keine Dokumente. news: title: Neuigkeiten - at: at + at: um no_results: Nichts Neues zu berichten. time_entries_current_user: - title: Spent time (last 7 days) - no_results: No time entries for the last 7 days. + title: Verbrachte Zeit (letzte 7 Tage) + no_results: Keine Zeiteinträge der letzten 7 Tage. work_packages_accountable: title: Von mir verantwortete Arbeitspakete work_packages_assigned: title: Mir zugewiesene Arbeitspakete work_packages_created: - title: Work packages created by me + title: Von mir erstellte Arbeitspakete work_packages_watched: - title: Work packages watched by me + title: Von mir beobachtete Arbeitspakete work_packages_calendar: title: Kalender label_activate: Aktivieren diff --git a/config/locales/crowdin/js-el.yml b/config/locales/crowdin/js-el.yml index 3f6f4ecc70..8f9d026a67 100644 --- a/config/locales/crowdin/js-el.yml +++ b/config/locales/crowdin/js-el.yml @@ -152,11 +152,11 @@ el: choose_widget: Choose widget widgets: documents: - title: Documents - no_results: No documents yet. + title: Έγγραφα + no_results: Δεν υπάρχουν έγγραφα. news: title: News - at: at + at: στο no_results: Nothing new to report. time_entries_current_user: title: Spent time (last 7 days) @@ -166,9 +166,9 @@ el: work_packages_assigned: title: Work packages assigned to me work_packages_created: - title: Work packages created by me + title: Εργασίες που δημιούργησα work_packages_watched: - title: Work packages watched by me + title: Εργασίες που παρακολουθώ work_packages_calendar: title: Calendar label_activate: Activate diff --git a/config/locales/crowdin/js-es.yml b/config/locales/crowdin/js-es.yml index fbd12189c1..18e78af0e1 100644 --- a/config/locales/crowdin/js-es.yml +++ b/config/locales/crowdin/js-es.yml @@ -153,26 +153,26 @@ es: general_text_Yes: Sí grid: add_modal: - choose_widget: Choose widget + choose_widget: Seleccione el widget widgets: documents: - title: Documents - no_results: No documents yet. + title: Documentos + no_results: No hay documentos. news: title: Noticias - at: at + at: en no_results: Nada nuevo sobre lo que informar. time_entries_current_user: - title: Spent time (last 7 days) - no_results: No time entries for the last 7 days. + title: Tiempo de gastos (últimos 7 días) + no_results: Sin entradas temporales en los últimos 7 días. work_packages_accountable: title: Paquetes de trabajo de los que soy responsable work_packages_assigned: title: Paquetes de trabajo asignados a mí work_packages_created: - title: Work packages created by me + title: Paquetes de trabajo creados por mí work_packages_watched: - title: Work packages watched by me + title: Paquetes de trabajo vigilados por mí work_packages_calendar: title: Calendario label_activate: Activar @@ -892,7 +892,7 @@ es: global_search: all_projects: En todos los proyectos search: Buscar - close_search: Close search + close_search: Cerrar búsqueda current_project: En este proyecto current_project_and_all_descendants: En este proyecto + subproyectos title: diff --git a/config/locales/crowdin/js-et.yml b/config/locales/crowdin/js-et.yml index cf4dd1c36d..897ecc5c7c 100644 --- a/config/locales/crowdin/js-et.yml +++ b/config/locales/crowdin/js-et.yml @@ -152,7 +152,7 @@ et: choose_widget: Choose widget widgets: documents: - title: Documents + title: Dokumendid no_results: No documents yet. news: title: Uudised diff --git a/config/locales/crowdin/js-fi.yml b/config/locales/crowdin/js-fi.yml index eb6c616785..e2365647cf 100644 --- a/config/locales/crowdin/js-fi.yml +++ b/config/locales/crowdin/js-fi.yml @@ -152,7 +152,7 @@ fi: choose_widget: Choose widget widgets: documents: - title: Documents + title: Asiakirjat no_results: No documents yet. news: title: Uutiset diff --git a/config/locales/crowdin/js-fil.yml b/config/locales/crowdin/js-fil.yml index ecf6913df3..f80edd1a83 100644 --- a/config/locales/crowdin/js-fil.yml +++ b/config/locales/crowdin/js-fil.yml @@ -151,7 +151,7 @@ fil: choose_widget: Choose widget widgets: documents: - title: Documents + title: Mga dokumento no_results: No documents yet. news: title: Mga balita diff --git a/config/locales/crowdin/js-fr.yml b/config/locales/crowdin/js-fr.yml index 6eda276b08..5a537d122e 100644 --- a/config/locales/crowdin/js-fr.yml +++ b/config/locales/crowdin/js-fr.yml @@ -179,13 +179,13 @@ fr: label_activity_no: Entrée d'activité numéro %{activityNo} label_activity_with_comment_no: Entrée d'activité numéro %{activityNo}. A un commentaire utilisateur. - label_add_column_after: Add column after - label_add_column_before: Add column before + label_add_column_after: Ajouter une colonne après + label_add_column_before: Ajouter une colonne avant label_add_columns: Ajouter des colonnes label_add_comment: Ajouter un commentaire label_add_comment_title: Commentez et utilisez @ pour informer d’autres personnes. - label_add_row_after: Add row after - label_add_row_before: Add row before + label_add_row_after: Ajouter une ligne après + label_add_row_before: Ajouter une ligne avant label_add_selected_columns: Ajouter les colonnes sélectionnées label_added_by: Ajouté par label_added_time_by: Ajouté par %{author} %{age} @@ -262,9 +262,9 @@ fr: label_visibility_settings: Paramètres de visibilité label_quote_comment: Citer ce commentaire label_reset: Réinitialiser - label_remove_column: Remove column + label_remove_column: Supprimer la colonne label_remove_columns: Enlever les colonnes sélectionnées - label_remove_row: Remove row + label_remove_row: Supprimer la ligne label_save_as: Enregistrer sous label_select_watcher: Sélectionner un observateur… label_selected_filter_list: Filtres sélectionnés @@ -287,7 +287,7 @@ fr: seulement label_activity_show_all: Afficher toutes les activités label_total_progress: "%{percent}% de progression totale" - label_total_amount: 'Total: %{amount}' + label_total_amount: 'Total : %{amount}' label_updated_on: mis à jour le label_warning: Attention label_work_package: Lot de travaux @@ -646,7 +646,7 @@ fr: label_enable_multi_select: Activer la sélection multiple label_disable_multi_select: Désactiver la sélection multiple label_filter_add: Ajouter le filtre - label_filter_by_text: Filter by text + label_filter_by_text: Filtrer par texte label_options: Options label_column_multiselect: 'Champ liste déroulante combinée : sélectionner avec les touches fléchées, confirmer la sélection avec la touche enter, supprimer @@ -660,7 +660,7 @@ fr: message_work_package_read_only: Paquet de travail est verrouillé. Aucun attribut autre que l’État ne peut être modifié. no_value: Aucune valeur - placeholder_filter_by_text: Subject, description, comments, ... + placeholder_filter_by_text: Objet, description, commentaires, ... inline_create: title: Cliquez ici pour ajouter un nouveau lot de travaux à cette liste create: @@ -880,7 +880,7 @@ fr: messages_on_field: 'Ce champ n’est pas valide : %{messages}' error_could_not_resolve_version_name: Ne peut résoudre le nom de version error_could_not_resolve_user_name: Impossible de trouver l'utilisateur - error_attachment_upload: 'File failed to upload: %{error}' + error_attachment_upload: 'Erreur de chargement du fichier : %{error}' error_attachment_upload_permission: Vous n’avez pas l'autorisation de charger des fichiers sur cette ressource. units: @@ -898,12 +898,12 @@ fr: button_activate: Activer le mode zen button_deactivate: Désactiver le mode zen global_search: - all_projects: In all projects + all_projects: Pour tous les projets search: Recherche - close_search: Close search - current_project: In this project - current_project_and_all_descendants: In this project + subprojects + close_search: Fermer la recherche + current_project: Pour ce projet + current_project_and_all_descendants: Dans ce projet + sous-projets title: - all_projects: all projects - project_and_subprojects: and all subprojects - search_for: Search for + all_projects: tous les projets + project_and_subprojects: et tous les sous-projets + search_for: Rechercher diff --git a/config/locales/crowdin/js-hr.yml b/config/locales/crowdin/js-hr.yml index 45fa80d17b..765fa8d920 100644 --- a/config/locales/crowdin/js-hr.yml +++ b/config/locales/crowdin/js-hr.yml @@ -152,7 +152,7 @@ hr: choose_widget: Choose widget widgets: documents: - title: Documents + title: Dokumenti no_results: No documents yet. news: title: Vijesti diff --git a/config/locales/crowdin/js-hu.yml b/config/locales/crowdin/js-hu.yml index ded89aecfe..bfa2e13fe4 100644 --- a/config/locales/crowdin/js-hu.yml +++ b/config/locales/crowdin/js-hu.yml @@ -100,15 +100,17 @@ hu: text: "[Placeholder] tartalmazza a wiki oldalt" page: Wiki oldal not_set: "(Nincs beállítva oldal)" - hint: | - Include the content of another wiki page by specifying its title or slug. - You can include the wiki page of another project by separating them with a colon like the following example. + hint: 'Adja meg egy másik wiki oldal tartalmát annak címének vagy elérési + út megadásával. A másik projekt wiki oldalát úgy is elhelyezheti, hogy + elválasztja őket egy kettősponttal, mint a következő példa. + +' work_package_button: button: Feladatcsoport létrehozása gomb beszúrása type: Feladatcsoport típusok button_style: Stílus gomb használata - button_style_hint: 'Optional: Check to make macro appear as a button, not - as a link.' + button_style_hint: 'Lehetőség: Ellenőrizze, hogy a makró gombként jelenik + meg, nem pedig linkként.' without_type: Feladatcsoport létrehozása with_type: 'Feladatcsoport létrehozása (típus: %{typename})' embedded_table: @@ -153,7 +155,7 @@ hu: choose_widget: Choose widget widgets: documents: - title: Documents + title: Dokumentumok no_results: No documents yet. news: title: Hírek @@ -329,48 +331,47 @@ hu: buttons: skip: Skip next: " Következő" - got_it: Got it + got_it: Rendben steps: welcome: Take a three minutes introduction tour to learn the most important features.
We recommend completing the steps until the end. You can restart the tour any time. - project_selection: Please select one of the projects with useful demo data - to get started.
The Demo project suits best for classical project - management, while the Scrum project is better for Agile project management. - sidebar_arrow: With the arrow you can navigate back to the project's Main - menu. - members: Invite new Members to join your project. - wiki: Within the Wiki you can document and share knowledge together - with your team. + project_selection: Kérjük, válasszon egyet a projektek közül, amelyek használható + példa adatokat tartalmaznak az induláshoz.
A Demo projekt + a legjobban megfelel a klasszikus projektmenedzsmentnek, míg a Scrum + projekt jobb az agilis projektmenedzsment számára. + sidebar_arrow: A nyíl segítségével visszatérhet a projekt főmenüjébe. + members: Új tagok meghívása, hogy a projekthez csatlakozzanak. + wiki: A Wiki modulban tudását dokumentálhatja és megoszthatja a csapatával. backlogs_overview: Manage your work in the Backlogs view.
On the right you have the Product Backlog or a Bug Backlog, on the left you will have the respective sprints. Here you can create epics, user stories, and bugs, prioritize via drag'n'drop and add them to a sprint. backlogs_task_board_arrow: To see your Task board, open the Sprint drop-down... - backlogs_task_board_select: "... and select the Task board entry." - backlogs_task_board: The Task board visualizes the progress for this - sprint. Add new tasks or impediments with the + icon next to a user story. - Via drag'n'drop you can update the status. + backlogs_task_board_select: "... és válassza ki a Feladatlap bejegyzést." + backlogs_task_board: A Feladatlap megjeleníti a sprint előrehaladását. + Új feladatok vagy akadályok hozzáadása a + ikonhoz a felhasználói történet + mellett. A drag'n'drop segítségével frissítheti az állapotot. wp_toggler: Most vessünk egy pillantást a Feladatcsoport kiválasztására, amely részletesebb képet ad a munkáról. - wp_list: Ez a Feladatcsoport a fontos munkát a projektben, mint például - a feladatok, szolgáltatások, mérföldkövek, hibák, és több.
létrehozása - vagy szerkesztése a feladatcsoport közvetlenül a listán belül. Megtekintheti - a vonatkozó adatokat is dupla kattintással. + wp_list: Ez a Munkacsomag listázza a projekten belüli fontos munkákat, + mint például task, feature, milestones, bug és így tovább.
A csomagban + közvetlenül is létrehozhat vagy szerkeszthet egy munkacsomagot. A részletek + megtekintéséhez kattintson duplán egy sorra. wp_full_view: Within the Work package details you find all relevant information, such as description, status and priority, activities, dependencies or comments. - wp_back_button: With the arrow you can navigate back to the work package list. + wp_back_button: A nyíl segítségével visszatérhet a munkacsomagok listájához. wp_create_button: A Létrehoz gombbal tudsz új feladatot hozzáadni a projekthez. - wp_timeline_button: You can activate the Gantt chart to create a timeline - for your project. - wp_timeline: Here you can edit your project plan. Create new phases, milestones, - and add dependencies. All team members can see and update the latest plan - at any time. - help_menu: In the Help menu you will find a user guide and additional - help resources.
Enjoy your work with OpenProject! + wp_timeline_button: Aktiválhatja a Gantt-diagramot, hogy létrehozzon + egy idővonalat a projekthez. + wp_timeline: Itt szerkesztheti a projekt tervét. Hozzon létre új fázisokat, + mérföldköveket és hozzon létre függőségeket. A csapat minden tagja bármikor + megtekintheti és frissítheti a legújabb tervet. + help_menu: A Súgó menüben találja a felhasználói útmutatót és további + segítséget.
Élvezze az OpenProject munkáját! password_confirmation: field_description: A változás megerősítéséhez adja meg jelszavát. title: Adja meg a jelszavát a folytatáshoz diff --git a/config/locales/crowdin/js-id.yml b/config/locales/crowdin/js-id.yml index f0955787ea..2276f22b9b 100644 --- a/config/locales/crowdin/js-id.yml +++ b/config/locales/crowdin/js-id.yml @@ -152,11 +152,11 @@ id: choose_widget: Choose widget widgets: documents: - title: Documents + title: Dokumen no_results: No documents yet. news: title: News - at: at + at: di no_results: Nothing new to report. time_entries_current_user: title: Spent time (last 7 days) diff --git a/config/locales/crowdin/js-it.yml b/config/locales/crowdin/js-it.yml index 19327e43bb..3ff6553c4a 100644 --- a/config/locales/crowdin/js-it.yml +++ b/config/locales/crowdin/js-it.yml @@ -154,26 +154,26 @@ it: general_text_Yes: Si grid: add_modal: - choose_widget: Choose widget + choose_widget: Scegli widget widgets: documents: - title: Documents - no_results: No documents yet. + title: Documenti + no_results: Nessun documento ancora. news: title: Notizie - at: at + at: a no_results: Niente di nuovo da segnalare. time_entries_current_user: - title: Spent time (last 7 days) - no_results: No time entries for the last 7 days. + title: Tempo trascorso (ultimi 7 giorni) + no_results: Nessuna voce sul tempo per gli ultimi 7 giorni. work_packages_accountable: title: Macro-attività di cui sono responsabile del risultato work_packages_assigned: title: Pacchetti di lavoro assegnati a me work_packages_created: - title: Work packages created by me + title: Pacchetti di lavoro creati da me work_packages_watched: - title: Work packages watched by me + title: Pacchetti di lavoro visti da me work_packages_calendar: title: Calendario label_activate: Attiva diff --git a/config/locales/crowdin/js-ko.yml b/config/locales/crowdin/js-ko.yml index 27538fbaf5..8bd4b4c780 100644 --- a/config/locales/crowdin/js-ko.yml +++ b/config/locales/crowdin/js-ko.yml @@ -147,7 +147,7 @@ ko: choose_widget: Choose widget widgets: documents: - title: Documents + title: 문서 no_results: No documents yet. news: title: 뉴스 diff --git a/config/locales/crowdin/js-lt.yml b/config/locales/crowdin/js-lt.yml index 3f6ce48513..40602f37bd 100644 --- a/config/locales/crowdin/js-lt.yml +++ b/config/locales/crowdin/js-lt.yml @@ -153,7 +153,7 @@ lt: choose_widget: Choose widget widgets: documents: - title: Documents + title: Dokumentai no_results: No documents yet. news: title: Naujienos diff --git a/config/locales/crowdin/js-ne-NP.yml b/config/locales/crowdin/js-ne-NP.yml new file mode 100644 index 0000000000..4403fd7974 --- /dev/null +++ b/config/locales/crowdin/js-ne-NP.yml @@ -0,0 +1,885 @@ +--- +ne-NP: + js: + ajax: + hide: Hide + loading: Loading ... + attachments: + draggable_hint: 'Drag on editor field to inline image or reference attachment. + Closed editor fields will be opened while you keep dragging. + +' + autocomplete_select: + placeholder: + multi: Add "%{name}" + single: Select "%{name}" + remove: Remove %{name} + active: Active %{label} %{name} + close_popup_title: Close popup + close_filter_title: Close filter + close_form_title: Close form + clipboard: + browser_error: Your browser doesn't support copying to clipboard. Please copy + the selected text manually. + copied_successful: Sucessfully copied to clipboard! + button_add_watcher: Add watcher + button_back_to_list_view: Back to list view + button_cancel: Cancel + button_close: Close + button_check_all: Check all + button_configure-form: Configure form + button_confirm: Confirm + button_continue: Continue + button_copy: Copy + button_custom-fields: Custom fields + button_delete: Delete + button_delete_watcher: Delete watcher + button_details_view: Details view + button_duplicate: Duplicate + button_edit: Edit + button_filter: Filter + button_advanced_filter: Advanced filter + button_list_view: List view + button_show_view: Fullscreen view + button_log_time: Log time + button_more: More + button_move: Move + button_open_details: Open details view + button_close_details: Close details view + button_open_fullscreen: Open fullscreen view + button_quote: Quote + button_save: Save + button_settings: Settings + button_uncheck_all: Uncheck all + button_update: Update + button_export-pdf: Download PDF + button_export-atom: Download Atom + calendar: + title: Calendar + too_many: There are more work packages (%{count}) than can be displayed by the + calendar (%{max}). Add filters to focus on the relevant ones. + description_available_columns: Available Columns + description_current_position: 'You are here:' + description_select_work_package: 'Select work package #%{id}' + description_selected_columns: Selected Columns + description_subwork_package: 'Child of work package #%{id}' + editor: + preview: Toggle preview mode + source_code: Toggle Markdown source mode + error_saving_failed: 'Saving the document failed with the following error: %{error}' + error_initialization_failed: Failed to initialize CKEditor! + mode: + manual: Switch to Markdown source + wysiwyg: Switch to WYSIWYG editor + macro: + child_pages: + button: Links to child pages + include_parent: Include parent + text: "[Placeholder] Links to child pages of" + page: Wiki page + this_page: this page + hint: 'Leave this field empty to list all child pages of the current page. + If you want to reference a different page, provide its title or slug. + +' + code_block: + button: Insert code snippet + title: Insert / edit Code snippet + language: Formatting language + language_hint: Enter the formatting language that will be used for highlighting + (if supported). + dropdown: + macros: Macros + chose_macro: Chose macro + toc: Table of contents + toolbar_help: Click to select widget and show the toolbar. Double-click to + edit widget + wiki_page_include: + button: Include content of another wiki page + text: "[Placeholder] Included wiki page of" + page: Wiki page + not_set: "(Page not yet set)" + hint: | + Include the content of another wiki page by specifying its title or slug. + You can include the wiki page of another project by separating them with a colon like the following example. + work_package_button: + button: Insert create work package button + type: Work package type + button_style: Use button style + button_style_hint: 'Optional: Check to make macro appear as a button, not + as a link.' + without_type: Create work package + with_type: 'Create work package (Type: %{typename})' + embedded_table: + button: Embed work package table + text: "[Placeholder] Embedded work package table" + embedded_calendar: + text: "[Placeholder] Embedded calendar" + custom_actions: + date: + specific: 'on' + current_date: Current date + error: + internal: An internal error has occurred. + cannot_save_changes_with_message: 'Cannot save your changes due to the following + error: %{error}' + query_saving: The view could not be saved. + embedded_table_loading: 'The embedded view could not be loaded: %{message}' + filter: + description: + text_open_filter: Open this filter with 'ALT' and arrow keys. + text_close_filter: To select an entry leave the focus for example by pressing + enter. To leave without filter select the first (empty) entry. + noneElement: "(none)" + time_zone_converted: + two_values: "%{from} - %{to} in your local time." + only_start: From %{from} in your local time. + only_end: Till %{to} in your local time. + value_spacer: "-" + sorting: + criteria: + one: First sorting criteria + two: Second sorting criteria + three: Third sorting criteria + upsale_for_more: For more advanced filters, check out the + upsale_link: Enterprise Edition. + general_text_no: 'no' + general_text_yes: 'yes' + general_text_No: 'No' + general_text_Yes: 'Yes' + grid: + add_modal: + choose_widget: Choose widget + widgets: + documents: + title: Documents + no_results: No documents yet. + news: + title: News + at: at + no_results: Nothing new to report. + time_entries_current_user: + title: Spent time (last 7 days) + no_results: No time entries for the last 7 days. + work_packages_accountable: + title: Work packages I am accountable for + work_packages_assigned: + title: Work packages assigned to me + work_packages_created: + title: Work packages created by me + work_packages_watched: + title: Work packages watched by me + work_packages_calendar: + title: Calendar + label_activate: Activate + label_activity_no: Activity entry number %{activityNo} + label_activity_with_comment_no: Activity entry number %{activityNo}. Has a user + comment. + label_add_column_after: Add column after + label_add_column_before: Add column before + label_add_columns: Add columns + label_add_comment: Add comment + label_add_comment_title: Comment and type @ to notify other people + label_add_row_after: Add row after + label_add_row_before: Add row before + label_add_selected_columns: Add selected columns + label_added_by: added by + label_added_time_by: Added by %{author} %{age} + label_ago: days ago + label_all: all + label_all_work_packages: all work packages + label_and: and + label_ascending: Ascending + label_author: 'Author: %{user}' + label_between: between + label_board_locked: Locked + label_board_sticky: Sticky + label_create_work_package: Create new work package + label_created_by: Created by + label_date: Date + label_date_with_format: 'Enter the %{date_attribute} using the following format: + %{format}' + label_deactivate: Deactivate + label_descending: Descending + label_description: Description + label_cancel_comment: Cancel comment + label_closed_work_packages: closed + label_collapse: Collapse + label_collapsed: collapsed + label_collapse_all: Collapse all + label_comment: Comment + label_committed_at: "%{committed_revision_link} at %{date}" + label_committed_link: committed revision %{revision_identifier} + label_contains: contains + label_created_on: created on + label_edit_comment: Edit this comment + label_edit_status: Edit the status of the work package + label_equals: is + label_expand: Expand + label_expanded: expanded + label_expand_all: Expand all + label_expand_project_menu: Expand project menu + label_export: Export + label_filename: फाइल + label_filesize: साइज + label_greater_or_equal: ">=" + label_group_by: Group by + label_hide_attributes: Show less + label_hide_column: Hide column + label_hide_project_menu: Collapse project menu + label_in: in + label_in_less_than: in less than + label_in_more_than: in more than + label_latest_activity: Latest activity + label_last_updated_on: Last updated on + label_less_or_equal: "<=" + label_less_than_ago: less than days ago + label_loading: Loading... + label_me: me + label_menu_collapse: collapse + label_menu_expand: expand + label_more_than_ago: more than days ago + label_my_page: My page + label_next: Next + label_no_data: No data to display + label_no_due_date: no end date + label_no_start_date: no start date + label_none: none + label_not_contains: doesn't contain + label_not_equals: is not + label_on: 'on' + label_open_menu: Open menu + label_open_context_menu: Open context menu + label_open_work_packages: open + label_password: Password + label_previous: Previous + label_per_page: 'Per page:' + label_please_wait: Please wait + label_visibility_settings: Visibility settings + label_quote_comment: Quote this comment + label_reset: Reset + label_remove_column: Remove column + label_remove_columns: Remove selected columns + label_remove_row: Remove row + label_save_as: Save as + label_select_watcher: Select a watcher... + label_selected_filter_list: Selected filters + label_show_attributes: Show all attributes + label_show_in_menu: Show view in menu + label_sort_by: Sort by + label_sorted_by: sorted by + label_sort_higher: Move up + label_sort_lower: Move down + label_sorting: Sorting + label_star_query: Favored + label_press_enter_to_save: Press enter to save. + label_public_query: Public + label_sum_for: Sum for + label_subject: Subject + label_this_week: this week + label_today: today + label_up: Up + label_activity_show_only_comments: Show activities with comments only + label_activity_show_all: Show all activities + label_total_progress: "%{percent}% Total progress" + label_total_amount: 'Total: %{amount}' + label_updated_on: updated on + label_warning: Warning + label_work_package: Work package + label_work_package_plural: Work packages + label_watch: Watch + label_watch_work_package: Watch work package + label_watcher_added_successfully: Watcher successfully added! + label_watcher_deleted_successfully: Watcher successfully deleted! + label_work_package_details_you_are_here: You're on the %{tab} tab for %{type} + %{subject}. + label_unwatch: Unwatch + label_unwatch_work_package: Unwatch work package + label_uploaded_by: Uploaded by + label_default_queries: Default views + label_starred_queries: Favorite views + label_global_queries: Public views + label_custom_queries: Private views + label_columns: Columns + label_attachments: Files + label_drop_files: Drop files here + label_drop_files_hint: or click to add files + label_drop_folders_hint: You cannot upload folders as an attachment. Please select + single files. + label_add_attachments: Add attachments + label_formattable_attachment_hint: Attach and link files by dropping on this field, + or pasting from the clipboard. + label_remove_file: Delete %{fileName} + label_remove_watcher: Remove watcher %{name} + label_remove_all_files: Delete all files + label_add_description: Add a description for %{file} + label_upload_notification: Uploading files... + label_work_package_upload_notification: 'Uploading files for Work package #%{id}: + %{subject}' + label_files_to_upload: 'These files will be uploaded:' + label_rejected_files: 'These files cannot be uploaded:' + label_rejected_files_reason: These files cannot be uploaded as their size is greater + than %{maximumFilesize} + label_wait: Please wait for configuration... + label_upload_counter: "%{done} of %{count} files finished" + label_validation_error: 'The work package could not be saved due to the following + errors:' + help_texts: + show_modal: Show attribute help text entry + onboarding: + buttons: + skip: Skip + next: Next + got_it: Got it + steps: + welcome: Take a three minutes introduction tour to learn the most important + features.
We recommend completing the steps until the end. You + can restart the tour any time. + project_selection: Please select one of the projects with useful demo data + to get started.
The Demo project suits best for classical project + management, while the Scrum project is better for Agile project management. + sidebar_arrow: With the arrow you can navigate back to the project's Main + menu. + members: Invite new Members to join your project. + wiki: Within the Wiki you can document and share knowledge together + with your team. + backlogs_overview: Manage your work in the Backlogs view.
On the + right you have the Product Backlog or a Bug Backlog, on the left you will + have the respective sprints. Here you can create epics, user stories, + and bugs, prioritize via drag'n'drop and add them to a sprint. + backlogs_task_board_arrow: To see your Task board, open the Sprint + drop-down... + backlogs_task_board_select: "... and select the Task board entry." + backlogs_task_board: The Task board visualizes the progress for this + sprint. Add new tasks or impediments with the + icon next to a user story. + Via drag'n'drop you can update the status. + wp_toggler: Now let's have a look at the Work package section, which + gives you a more detailed view of your work. + wp_list: This is the Work package list with the important work within + your project, such as tasks, features, milestones, bugs, and more.
+ You can create or edit a work package directly within this list. To see + its details you can double click on a row. + wp_full_view: Within the Work package details you find all relevant + information, such as description, status and priority, activities, dependencies + or comments. + wp_back_button: With the arrow you can navigate back to the work package list. + wp_create_button: The Create button will add a new work package to + your project. + wp_timeline_button: You can activate the Gantt chart to create a timeline + for your project. + wp_timeline: Here you can edit your project plan. Create new phases, milestones, + and add dependencies. All team members can see and update the latest plan + at any time. + help_menu: In the Help menu you will find a user guide and additional + help resources.
Enjoy your work with OpenProject! + password_confirmation: + field_description: You need to enter your account password to confirm this change. + title: Confirm your password to continue + pagination: + no_other_page: You are on the only page. + pages: + next: Forward to the next page + previous: Back to the previous page + placeholders: + default: "-" + subject: Enter subject here + selection: कृपया छान्नुहोस् + relation_description: Click to add description for this relation + project: + required_outside_context: You are not within a project context. Please choose + the project context first in order to select type and status + context: Project context + work_package_belongs_to: This work package belongs to project %{projectname}. + click_to_switch_context: Open this work package in that project. + autocompleter: + label: Project autocompletion + text_are_you_sure: Are you sure? + types: + attribute_groups: + error_duplicate_group_name: The name %{group} is used more than once. Group + names must be unique. + error_no_table_configured: Please configure a table for %{group}. + reset_title: Reset form configuration + confirm_reset: 'Warning: Are you sure you want to reset the form configuration? + This will reset the attributes to their default group and disable ALL custom + fields. + +' + upgrade_to_ee: Upgrade to Enterprise Edition + upgrade_to_ee_text: Wow! If you need this feature you are a super pro! Would + you mind supporting us OpenSource developers by becoming an Enterprise Edition + client? + more_information: More information + nevermind: Nevermind + filter_types: + parent: being child of + precedes: preceding + follows: following + relates: relating to + duplicates: duplicating + duplicated: duplicated by + blocks: blocking + blocked: blocked by + partof: being part of + includes: including + requires: requiring + required: required by + time_entry: + activity: Activity + comment: Comment + hours: Hours + watchers: + label_loading: loading watchers... + label_error_loading: An error occurred while loading the watchers + label_search_watchers: Search watchers + label_add: Add watchers + label_discard: Discard selection + typeahead_placeholder: Search for possible watchers + relation_labels: + parent: Parent + children: Children + relates: Related To + duplicates: Duplicates + duplicated: Duplicated by + blocks: Blocks + blocked: Blocked by + precedes: Precedes + follows: Follows + includes: Includes + partof: Part of + requires: Requires + required: Required by + relation_type: relation type + relations_hierarchy: + parent_headline: Parent + hierarchy_headline: Hierarchy + children_headline: Children + relation_buttons: + set_parent: Set parent + change_parent: Change parent + remove_parent: Remove parent + group_by_wp_type: Group by work package type + group_by_relation_type: Group by relation type + add_parent: Add existing parent + add_new_child: Create new child + create_new: Create new + add_existing: Add existing + add_existing_child: Add existing child + remove_child: Remove child + add_new_relation: Create new relation + add_existing_relation: Add existing relation + update_description: Set or update description of this relation + toggle_description: Toggle relation description + update_relation: Click to change the relation type + add_follower: Add follower + add_predecessor: Add predecessor + remove: Remove relation + save: Save relation + abort: Abort + relations_autocomplete: + placeholder: Enter the related work package id + parent_placeholder: Choose new parent, press enter to unset, escape to cancel. + repositories: + select_tag: Select tag + select_branch: Select branch + field_value_enter_prompt: Enter a value for '%{field}' + select2: + input_too_short: + one: Please enter one more character + other: Please enter {{count}} more characters + zero: Please enter more characters + load_more: Loading more results ... + no_matches: No matches found + searching: Searching ... + selection_too_big: + one: You can only select one item + other: You can only select {{limit}} items + zero: You cannot select any items + project_menu_details: Details + sort: + sorted_asc: 'Ascending sort applied, ' + sorted_dsc: 'Descending sort applied, ' + sorted_no: 'No sort applied, ' + sorting_disabled: sorting is disabled + activate_asc: activate to apply an ascending sort + activate_dsc: activate to apply a descending sort + activate_no: activate to remove the sort + text_work_packages_destroy_confirmation: Are you sure you want to delete the selected + work package(s)? + text_query_destroy_confirmation: Are you sure you want to delete the selected + view? + text_attachment_destroy_confirmation: Are you sure you want to delete the attachment? + timelines: + quarter_label: Q%{quarter_number} + gantt_chart: Gantt chart + labels: + title: Label configuration + bar: Bar labels + left: Left + right: Right + farRight: Far right + showNone: "-- No label --" + description: 'Select the attributes you want to be shown in the respective + positions of the Gantt chart at all times. Note that when hovering an element, + its date labels will be shown instead of these attributes. + +' + button_activate: Show Gantt chart + button_deactivate: Hide Gantt chart + cancel: Cancel + change: Change in planning + due_date: Finish date + empty: "(empty)" + error: An error has occurred. + errors: + not_implemented: The timeline could not be rendered because it uses a feature + that is not yet implemented. + report_comparison: The timeline could not render the configured comparisons. + Please check the appropriate section in the configuration, resetting it + can help solve this problem. + report_epicfail: The timeline could not be loaded due to an unexpected error. + report_timeout: The timeline could not be loaded in a reasonable amount of + time. + filter: + grouping_other: Other + noneSelection: "(none)" + name: Name + outline: Reset Outline + outlines: + aggregation: Show aggregations only + level1: Expand level 1 + level2: Expand level 2 + level3: Expand level 3 + level4: Expand level 4 + level5: Expand level 5 + all: Show all + project_status: Project status + really_close_dialog: Do you really want to close the dialog and lose the entered + data? + responsible: Responsible + save: Save + start_date: Start date + tooManyProjects: More than %{count} Projects. Please use a better filter! + selection_mode: + notification: Click on any highlighted work package to create the relation. + Press escape to cancel. + zoom: + in: Zoom in + out: Zoom out + auto: Auto zoom + days: Days + weeks: Weeks + months: Months + quarters: Quarters + years: Years + slider: Zoom slider + description: 'Select the initial zoom level that should be shown when autozoom + is not available. + +' + tl_toolbar: + zooms: Zoom level + outlines: Hierarchy level + upsale: + ee_only: Enterprise Edition only feature + wiki_formatting: + strong: Strong + italic: Italic + underline: Underline + deleted: Deleted + code: Inline Code + heading1: Heading 1 + heading2: Heading 2 + heading3: Heading 3 + unordered_list: Unordered List + ordered_list: Ordered List + quote: Quote + unquote: Unquote + preformatted_text: Preformatted Text + wiki_link: Link to a Wiki page + image: Image + work_packages: + bulk_actions: + move: Bulk move + edit: Bulk edit + copy: Bulk copy + delete: Bulk delete + button_clear: Clear + comment_added: The comment was successfully added. + comment_send_failed: An error has occurred. Could not submit the comment. + comment_updated: The comment was successfully updated. + confirm_edit_cancel: Are you sure you want to cancel editing the work package? + description_filter: Filter + description_enter_text: Enter text + description_options_hide: Hide options + description_options_show: Show options + error: + update_conflict_refresh: Click here to refresh the work package and update + to the newest version. + edit_prohibited: Editing %{attribute} is blocked for this work package. Either + this attribute is derived from relations (e.g, children) or otherwise not + configurable. + format: + date: "%{attribute} is no valid date - YYYY-MM-DD expected." + general: An error has occurred. + edit_attribute: "%{attribute} - Edit" + key_value: "%{key}: %{value}" + label_enable_multi_select: Enable multiselect + label_disable_multi_select: Disable multiselect + label_filter_add: Add filter + label_filter_by_text: Filter by text + label_options: Options + label_column_multiselect: 'Combined dropdown field: Select with arrow keys, + confirm selection with enter, delete with backspace' + message_error_during_bulk_delete: An error occurred while trying to delete work + packages. + message_successful_bulk_delete: Successfully deleted work packages. + message_successful_show_in_fullscreen: Click here to open this work package + in fullscreen view. + message_view_spent_time: Show spent time for this work package + message_work_package_read_only: Work package is locked in this status. No attribute + other than status can be altered. + no_value: No value + placeholder_filter_by_text: Subject, description, comments, ... + inline_create: + title: Click here to add a new work package to this list + create: + title: New work package + header: New %{type} + header_no_type: New work package (Type not yet set) + header_with_parent: 'New %{type} (Child of %{parent_type} #%{id})' + button: Create + copy: + title: Copy work package + hierarchy: + show: Show hierarchy mode + hide: Hide hierarchy mode + toggle_button: Click to toggle hierarchy mode. + leaf: Work package leaf at level %{level}. + children_collapsed: Hierarchy level %{level}, collapsed. Click to show the + filtered children + children_expanded: Hierarchy level %{level}, expanded. Click to collapse the + filtered children + faulty_query: + title: Work packages could not be loaded. + description: Your view is erroneous and could not be processed. + no_results: + title: No work packages to display. + description: Either none have been created or all work packages are filtered + out. + property_groups: + details: Details + people: People + estimatesAndTime: Estimates & Time + other: Other + properties: + assignee: Assignee + author: Author + createdAt: Created on + description: Description + date: Date + dueDate: Finish date + estimatedTime: Estimated time + spentTime: Spent time + category: Category + percentageDone: Percentage done + priority: Priority + projectName: Project + responsible: Responsible + startDate: Start date + status: Status + subject: Subject + title: Title + type: Type + updatedAt: Updated on + versionName: Version + version: Version + default_queries: + latest_activity: Latest activity + created_by_me: Created by me + assigned_to_me: Assigned to me + recently_created: Recently created + all_open: All open + summary: Summary + jump_marks: + pagination: Jump to table pagination + label_pagination: Click here to skip over the work packages table and go to + pagination + content: Jump to content + label_content: Click here to skip over the menu and go to the content + placeholders: + default: "-" + description: Click to enter description... + query: + column_names: Columns + group_by: Group results by + group: Group by + group_by_disabled_by_hierarchy: Group by is disabled due to the hierarchy + mode being active. + hierarchy_disabled_by_group_by: Hierarchy mode is disabled due to results + being grouped by %{column}. + sort_ascending: Sort ascending + sort_descending: Sort descending + move_column_left: Move column left + move_column_right: Move column right + hide_column: Hide column + insert_columns: Insert columns ... + filters: Filters + display_sums: Display Sums + confirm_edit_cancel: Are you sure you want to cancel editing the name of this + view? Title will be set back to previous value. + click_to_edit_query_name: Click to edit title of this view. + rename_query_placeholder: Name of this view + errors: + unretrievable_query: Unable to retrieve view from URL + not_found: There is no such view + duplicate_query_title: Name of this view already exists. Change anyway? + text_no_results: No matching views were found. + table: + configure_button: Configure work package table + summary: Table with rows of work package and columns of work package attributes. + text_inline_edit: Most cells of this table are buttons that activate inline-editing + functionality of that attribute. + text_sort_hint: With the links in the table headers you can sort, group, reorder, + remove and add table columns. + text_select_hint: Select boxes should be opened with 'ALT' and arrow keys. + table_configuration: + button: Configure this work package table + choose_display_mode: Display work packages as + modal_title: Work package table configuration + embedded_tab_disabled: This configuration tab is not available for the embedded + view you're editing. + default: default + display_settings: Display settings + default_mode: Flat list + hierarchy_mode: Hierarchy + hierarchy_hint: All filtered table results will be augmented with their ancestors. + Hierarchies can be expanded and collapsed. + display_sums_hint: Display sums of all summable attributes in a row below + the table results. + show_timeline_hint: Show an interactive gantt chart on the right side of the + table. You can change its width by dragging the divider between table and + gantt chart. + highlighting: Highlighting + highlighting_mode: + description: Highlight with color + none: No highlighting + inline: Highlighted attribute(s) + inline_all: All attributes + entire_row_by: Entire row by + status: Status + priority: Priority + type: Type + columns_help_text: Use the input above to add or remove columns to your table + view. You can drag and drop the columns to reorder them. + upsale: + attribute_highlighting: Need certain work packages to stand out from the + mass? + relation_columns: Need to see relations in the work package list? + check_out_link: Check out the Enterprise Edition. + relation_filters: + first_part: Show all work packages + second_part: the current work package + tabs: + overview: Overview + activity: Activity + relations: Relations + watchers: Watchers + attachments: Attachments + time_relative: + days: days + weeks: weeks + months: months + toolbar: + settings: + configure_view: Configure view ... + columns: Columns ... + sort_by: Sort by ... + group_by: Group by ... + display_sums: Display sums + display_hierarchy: Display hierarchy + hide_hierarchy: Hide hierarchy + hide_sums: Hide sums + save: Save + save_as: Save as ... + export: Export ... + visibility_settings: Visibility settings ... + page_settings: Rename view ... + delete: Delete + filter: Filter + unselected_title: Work package + search_query_label: Search saved views + search_query_title: Click to search saved views + placeholder_query_title: Set a title for this view + modals: + label_settings: Rename view + label_name: Name + label_delete_page: Delete current page + button_apply: Apply + button_save: Save + button_submit: Submit + button_cancel: Cancel + form_submit: + title: Confirm to continue + text: Are you sure you want to perform this action? + destroy_work_package: + title: Confirm deletion of %{label} + text: Are you sure you want to delete the following %{label} ? + has_children: 'The work package has %{childUnits}:' + confirm_deletion_children: I acknowledge that ALL descendants of the listed + work packages will be recursively removed. + deletes_children: All child work packages and their descendants will also + be recursively deleted. + notice_successful_create: Successful creation. + notice_successful_delete: Successful deletion. + notice_successful_update: Successful update. + notice_bad_request: Bad Request. + relations: + empty: No relation exists + remove: Remove relation + inplace: + button_edit: "%{attribute}: Edit" + button_save: "%{attribute}: Save" + button_cancel: "%{attribute}: Cancel" + button_save_all: Save + button_cancel_all: Cancel + link_formatting_help: Text formatting help + btn_preview_enable: Preview + btn_preview_disable: Disable preview + null_value_label: No value + clear_value_label: "-" + errors: + required: "%{field} cannot be empty" + number: "%{field} is not a valid number" + maxlength: "%{field} cannot contain more than %{maxLength} digit(s)" + minlength: "%{field} cannot contain less than %{minLength} digit(s)" + messages_on_field: 'This field is invalid: %{messages}' + error_could_not_resolve_version_name: Couldn't resolve version name + error_could_not_resolve_user_name: Couldn't resolve user name + error_attachment_upload: 'File failed to upload: %{error}' + error_attachment_upload_permission: You don't have the permission to upload files + on this resource. + units: + workPackage: + one: work package + other: work packages + child_work_packages: + one: one child work package + other: "%{count} work package children" + hour: + one: 1 hour + other: "%{count} hours" + zero: 0 hours + zen_mode: + button_activate: Activate zen mode + button_deactivate: Deactivate zen mode + global_search: + all_projects: In all projects + search: Search + close_search: Close search + current_project: In this project + current_project_and_all_descendants: In this project + subprojects + title: + all_projects: all projects + project_and_subprojects: and all subprojects + search_for: Search for diff --git a/config/locales/crowdin/js-nl.yml b/config/locales/crowdin/js-nl.yml index 6768916e29..db6fc959cf 100644 --- a/config/locales/crowdin/js-nl.yml +++ b/config/locales/crowdin/js-nl.yml @@ -152,26 +152,26 @@ nl: general_text_Yes: Ja grid: add_modal: - choose_widget: Choose widget + choose_widget: Widget kiezen widgets: documents: - title: Documents - no_results: No documents yet. + title: Documenten + no_results: Geen documenten. news: title: Nieuws - at: at + at: bij no_results: Niets nieuws om te rapporteren. time_entries_current_user: - title: Spent time (last 7 days) - no_results: No time entries for the last 7 days. + title: Besteed tijd (laatste 7 dagen) + no_results: Geen tijd items voor de afgelopen 7 dagen. work_packages_accountable: title: Werkpakketten waar ik verantwoordelijk voor ben work_packages_assigned: title: Werkpakketten toegewezen aan mij work_packages_created: - title: Work packages created by me + title: Werkpakketten gemaakt door mij werk werk work_packages_watched: - title: Work packages watched by me + title: Werkpakketten bekeken door mij work_packages_calendar: title: Agenda label_activate: Activeren diff --git a/config/locales/crowdin/js-no.yml b/config/locales/crowdin/js-no.yml index 832f3950c5..75bb7667d0 100644 --- a/config/locales/crowdin/js-no.yml +++ b/config/locales/crowdin/js-no.yml @@ -152,7 +152,7 @@ choose_widget: Choose widget widgets: documents: - title: Documents + title: Dokumenter no_results: No documents yet. news: title: Nyheter diff --git a/config/locales/crowdin/js-pl.yml b/config/locales/crowdin/js-pl.yml index a45e26f565..5861655857 100644 --- a/config/locales/crowdin/js-pl.yml +++ b/config/locales/crowdin/js-pl.yml @@ -150,26 +150,26 @@ pl: general_text_Yes: Tak grid: add_modal: - choose_widget: Choose widget + choose_widget: Wybierz widżet widgets: documents: - title: Documents - no_results: No documents yet. + title: Dokumenty + no_results: Nie ma jeszcze dokumentów. news: title: Aktualności - at: at + at: w no_results: Utwórz nowy raport. time_entries_current_user: - title: Spent time (last 7 days) - no_results: No time entries for the last 7 days. + title: Poświęcony czas (ostatnie 7 dni) + no_results: Brak zarejestrowanego czasu pracy w ostatnich 7 dniach. work_packages_accountable: title: Pakiety robocze, za które odpowiadam work_packages_assigned: title: Zadania przypisane do mnie work_packages_created: - title: Work packages created by me + title: Pakiety robocze stworzone przeze mnie work_packages_watched: - title: Work packages watched by me + title: Pakiety robocze obserwowane przeze mnie work_packages_calendar: title: Kalendarz label_activate: Aktywuj @@ -510,7 +510,7 @@ pl: text_query_destroy_confirmation: Czy na pewno chcesz usunąć zaznaczony widok? text_attachment_destroy_confirmation: Jesteś pewien, że chcesz usunąć ten załącznik? timelines: - quarter_label: Q%{quarter_number} + quarter_label: Kwartał%{quarter_number} gantt_chart: Wykres Gantta labels: title: Konfiguracja etykiety @@ -883,7 +883,7 @@ pl: search: Szukaj close_search: Zakończ wyszukiwanie current_project: W tym projekcie - current_project_and_all_descendants: W tym projekcie + podprojekcie + current_project_and_all_descendants: W tym projekcie + pod projekcie title: all_projects: Wszystkie projekty project_and_subprojects: i wszystkie podprojekty diff --git a/config/locales/crowdin/js-pt-BR.yml b/config/locales/crowdin/js-pt-BR.yml index 46d049c0d2..c58eb14606 100644 --- a/config/locales/crowdin/js-pt-BR.yml +++ b/config/locales/crowdin/js-pt-BR.yml @@ -154,26 +154,26 @@ pt-BR: general_text_Yes: Sim grid: add_modal: - choose_widget: Choose widget + choose_widget: Escolher widget widgets: documents: - title: Documents - no_results: No documents yet. + title: Documentos + no_results: Nenhum documento ainda. news: title: Notícias - at: at + at: em no_results: Nada de novo para relatar. time_entries_current_user: - title: Spent time (last 7 days) - no_results: No time entries for the last 7 days. + title: Tempo gasto (últimos 7 dias) + no_results: Não há entradas de tempo nos últimos 7 dias. work_packages_accountable: title: Pacotes de trabalho sob minha responsabilidade work_packages_assigned: title: Pacotes de trabalho atribuídos a mim work_packages_created: - title: Work packages created by me + title: Pacotes de trabalho criados por mim work_packages_watched: - title: Work packages watched by me + title: Pacotes de trabalho observados por mim work_packages_calendar: title: Calendário label_activate: Ativar diff --git a/config/locales/crowdin/js-pt.yml b/config/locales/crowdin/js-pt.yml index c16b9bb96b..973b280e8a 100644 --- a/config/locales/crowdin/js-pt.yml +++ b/config/locales/crowdin/js-pt.yml @@ -151,24 +151,24 @@ pt: general_text_Yes: Sim grid: add_modal: - choose_widget: Choose widget + choose_widget: Escolher widget widgets: documents: - title: Documents + title: Documentos no_results: No documents yet. news: title: Noticias at: at no_results: Nada de novo no relatório. time_entries_current_user: - title: Spent time (last 7 days) - no_results: No time entries for the last 7 days. + title: Tempo gasto (últimos 7 dias) + no_results: Não há entradas de tempo nos últimos 7 dias. work_packages_accountable: title: Pacotes de trabalho pelos quais sou responsável work_packages_assigned: title: Tarefas atribuídas a mim work_packages_created: - title: Work packages created by me + title: Pacotes de trabalho criados por mim work_packages_watched: title: Work packages watched by me work_packages_calendar: diff --git a/config/locales/crowdin/js-sk.yml b/config/locales/crowdin/js-sk.yml index 2210179641..916a1acbd9 100644 --- a/config/locales/crowdin/js-sk.yml +++ b/config/locales/crowdin/js-sk.yml @@ -151,26 +151,26 @@ sk: general_text_Yes: Áno grid: add_modal: - choose_widget: Choose widget + choose_widget: Vyberte miniaplikáciu widgets: documents: - title: Documents - no_results: No documents yet. + title: Dokumenty + no_results: Zatiaľ žiadne dokumenty. news: title: Novinky - at: at + at: o no_results: Nič nové pre nahlásenie. time_entries_current_user: - title: Spent time (last 7 days) - no_results: No time entries for the last 7 days. + title: Strávený čas (posledných 7 dní) + no_results: Žiadne časové záznamy za posledných 7 dní. work_packages_accountable: title: Pracovné balíčky, za ktoré som zodpovedný(a) work_packages_assigned: title: Mne priradené pracovné balíčky work_packages_created: - title: Work packages created by me + title: Pracovné balíčky vytvorené mnou work_packages_watched: - title: Work packages watched by me + title: Pracovné balíčky sledované mnou work_packages_calendar: title: Kalendár label_activate: Aktivovať diff --git a/config/locales/crowdin/js-sv-SE.yml b/config/locales/crowdin/js-sv-SE.yml index 44f10834d0..f19b1e8009 100644 --- a/config/locales/crowdin/js-sv-SE.yml +++ b/config/locales/crowdin/js-sv-SE.yml @@ -155,7 +155,7 @@ sv-SE: choose_widget: Choose widget widgets: documents: - title: Documents + title: Dokument no_results: No documents yet. news: title: Nyheter diff --git a/config/locales/crowdin/js-th.yml b/config/locales/crowdin/js-th.yml index 5d56c483ea..8a6a7d1d4a 100644 --- a/config/locales/crowdin/js-th.yml +++ b/config/locales/crowdin/js-th.yml @@ -198,7 +198,7 @@ th: label_date: วันที่ label_date_with_format: 'Enter the %{date_attribute} using the following format: %{format}' - label_deactivate: Deactivate + label_deactivate: ปิดใช้งาน label_descending: มากไปน้อย label_description: คำอธิบาย label_cancel_comment: Cancel comment @@ -241,8 +241,8 @@ th: label_my_page: หน้าของฉัน label_next: ถัดไป label_no_data: ไม่มีข้อมูลให้แสดง - label_no_due_date: no end date - label_no_start_date: no start date + label_no_due_date: ไม่มีวันสิ้นสุด + label_no_start_date: ไม่มีวันเริ่มต้น label_none: ไม่มี label_not_contains: ไม่ประกอบด้วยการ label_not_equals: ไม่ @@ -252,7 +252,7 @@ th: label_open_work_packages: เปิด label_password: รหัสผ่าน label_previous: ก่อนหน้านี้ - label_per_page: 'Per page:' + label_per_page: ต่อหน้า label_please_wait: กรุณารอสักครู่ label_visibility_settings: Visibility settings label_quote_comment: Quote this comment @@ -266,14 +266,14 @@ th: label_show_attributes: Show all attributes label_show_in_menu: Show view in menu label_sort_by: เรียงลำดับโดย - label_sorted_by: sorted by + label_sorted_by: เรียงลำดับตาม label_sort_higher: เลื่อนขึ้น label_sort_lower: เลื่อนลง - label_sorting: Sorting + label_sorting: การเรียงลำดับ label_star_query: Favored label_press_enter_to_save: Press enter to save. label_public_query: สาธารณะ - label_sum_for: Sum for + label_sum_for: ผลรวมสำหรับ label_subject: หัวข้อ label_this_week: สัปดาห์นี้ label_today: วันนี้ @@ -294,7 +294,7 @@ th: %{subject}. label_unwatch: ไม่เข้าชม label_unwatch_work_package: Unwatch work package - label_uploaded_by: Uploaded by + label_uploaded_by: อัปโหลดโดย label_default_queries: Default views label_starred_queries: Favorite views label_global_queries: Public views @@ -437,7 +437,7 @@ th: relation_labels: parent: ค่าหลัก children: Children - relates: Related To + relates: ที่เกี่ยวข้องกับ duplicates: Duplicates duplicated: Duplicated by blocks: บล็อก @@ -635,7 +635,7 @@ th: message_view_spent_time: Show spent time for this work package message_work_package_read_only: Work package is locked in this status. No attribute other than status can be altered. - no_value: No value + no_value: ไม่มีค่า placeholder_filter_by_text: Subject, description, comments, ... inline_create: title: Click here to add a new work package to this list @@ -831,27 +831,27 @@ th: notice_successful_update: ปรับปรุงข้อมูลเรียบร้อยแล้ว notice_bad_request: คำขอไม่ถูกต้อง relations: - empty: No relation exists + empty: ไม่มีความสัมพันธ์ remove: Remove relation inplace: - button_edit: "%{attribute}: Edit" - button_save: "%{attribute}: Save" - button_cancel: "%{attribute}: Cancel" + button_edit: "%{attribute}: แก้ไข" + button_save: "%{attribute}: บันทึก" + button_cancel: "%{attribute}: ยกเลิก" button_save_all: บันทึก button_cancel_all: ยกเลิก link_formatting_help: Text formatting help btn_preview_enable: แสดงตัวอย่าง - btn_preview_disable: Disable preview - null_value_label: No value + btn_preview_disable: ปิดใช้งานตัวอย่าง + null_value_label: ไม่มีค่า clear_value_label: "-" errors: - required: "%{field} cannot be empty" - number: "%{field} is not a valid number" + required: ฟิลด์ %{field} ต้องไม่ว่างเปล่า + number: "%{field} ไม่ใช่หมายเลขที่ถูกต้อง" maxlength: "%{field} cannot contain more than %{maxLength} digit(s)" minlength: "%{field} cannot contain less than %{minLength} digit(s)" messages_on_field: 'This field is invalid: %{messages}' - error_could_not_resolve_version_name: Couldn't resolve version name - error_could_not_resolve_user_name: Couldn't resolve user name + error_could_not_resolve_version_name: ไม่สามารถแก้ไขเวอร์ชัน + error_could_not_resolve_user_name: ไม่สามารถแก้ไขชื่อผู้ใช้ error_attachment_upload: 'File failed to upload: %{error}' error_attachment_upload_permission: You don't have the permission to upload files on this resource. @@ -864,7 +864,7 @@ th: other: "%{count} work package children" hour: one: 1 hour - other: "%{count} hours" + other: "%{count} ชั่วโมง" zero: 0 hours zen_mode: button_activate: Activate zen mode diff --git a/config/locales/crowdin/js-tr.yml b/config/locales/crowdin/js-tr.yml index caf0237a51..80d50d4b1e 100644 --- a/config/locales/crowdin/js-tr.yml +++ b/config/locales/crowdin/js-tr.yml @@ -5,8 +5,8 @@ tr: hide: Gizle loading: Yükleniyor ... attachments: - draggable_hint: 'Drag on editor field to inline image or reference attachment. - Closed editor fields will be opened while you keep dragging. + draggable_hint: 'Editör alanında, satır içi görüntüye veya referans ekine sürükleyin. + Sürüklemeye devam ederken kapalı editör alanları açılacaktır. ' autocomplete_select: @@ -74,45 +74,45 @@ tr: macro: child_pages: button: Alt sayfalara bağlantılar - include_parent: Include parent + include_parent: Üst öğeyi dahil et text: "[Placeholder] Alt sayfalara bağlantılar" page: Viki sayfası this_page: bu sayfa - hint: 'Leave this field empty to list all child pages of the current page. - If you want to reference a different page, provide its title or slug. + hint: 'Geçerli sayfanın tüm alt sayfalarını listelemek için bu alanı boş + bırakın. Farklı bir sayfaya referans vermek istiyorsanız, başlığını veya + fişini belirtin. ' code_block: button: Kod parçacığı ekle title: Kod parçacığını ekle / düzenle language: Biçimlendirme dili - language_hint: Enter the formatting language that will be used for highlighting - (if supported). + language_hint: Vurgulamak için kullanılacak formatlama dilini girin (destekleniyorsa). dropdown: macros: Makrolar chose_macro: Makro seçin toc: İçindekiler - toolbar_help: Click to select widget and show the toolbar. Double-click to - edit widget + toolbar_help: Widget'ı seçmek ve araç çubuğunu göstermek için tıklayın. Widget'ı + düzenlemek için çift tıklayın wiki_page_include: - button: Include content of another wiki page - text: "[Placeholder] Included wiki page of" + button: Başka bir wiki sayfasının içeriğini ekle + text: "[Placeholder] Dahil edilen wiki sayfası" page: Viki sayfası not_set: "(Sayfa ayarlanmadı)" hint: | - Include the content of another wiki page by specifying its title or slug. - You can include the wiki page of another project by separating them with a colon like the following example. + Başlığını veya sümüklü böcek belirterek başka bir wiki sayfasının içeriğini ekleyin. + Başka bir projenin wiki sayfasını, aşağıdaki örnekte olduğu gibi iki nokta ile ayırarak ekleyebilirsiniz. work_package_button: - button: Insert create work package button + button: Çalışma paketi yarat düğmesi ekle type: İş paketi tipi button_style: Düğme biçimini kullan - button_style_hint: 'Optional: Check to make macro appear as a button, not - as a link.' + button_style_hint: 'İsteğe bağlı: Makronun bağlantı olarak değil, düğme + olarak görünmesini sağlayın.' without_type: İş paketini oluştur with_type: İş paketini oluştur (Tür %{typename}) embedded_table: button: Gömülü iş paketi tablosu - text: "[Placeholder] Embedded work package table" + text: "[Yer Tutucu] Gömülü iş paketi tablosu" embedded_calendar: text: "[Placeholder] Göümülü takvim" custom_actions: @@ -124,7 +124,7 @@ tr: cannot_save_changes_with_message: 'Değişikliklerinizin kaydedilememesine sebep olan hata: %{error}' query_saving: Görünüm kaydedilemedi. - embedded_table_loading: 'The embedded view could not be loaded: %{message}' + embedded_table_loading: 'Gömülü görünüm yüklenemedi: %{message}' filter: description: text_open_filter: Bu filtreyi 'ALT' ve ok tuşları ile açın. @@ -149,18 +149,18 @@ tr: general_text_Yes: Evet grid: add_modal: - choose_widget: Choose widget + choose_widget: Widget seç widgets: documents: title: Belgeler no_results: Henüz belge yok. news: title: Haberler - at: at + at: en no_results: Rapor için yeni birşey bulunamadı. time_entries_current_user: - title: Spent time (last 7 days) - no_results: No time entries for the last 7 days. + title: Harcanan zaman (son 7 gün) + no_results: Son 7 güne zaman girişi yok. work_packages_accountable: title: Sorumlusu olduğum iş paketleri work_packages_assigned: @@ -272,7 +272,7 @@ tr: label_sort_higher: Yukarı taşı label_sort_lower: Aşağı taşı label_sorting: Sıralama - label_star_query: Favored + label_star_query: avantajlı label_press_enter_to_save: Kaydetmek için enter tuşuna basın. label_public_query: Herkese Açık label_sum_for: Toplam @@ -334,43 +334,42 @@ tr: welcome: En önemli özellikleri öğrenmek için üç dakikalık bir tanıtım gezintisine çıkın.
Tüm adımları tamamlamanızı öneririz. Turu istediğiniz zaman yeniden başlatabilirsiniz. - project_selection: Please select one of the projects with useful demo data - to get started.
The Demo project suits best for classical project - management, while the Scrum project is better for Agile project management. - sidebar_arrow: With the arrow you can navigate back to the project's Main - menu. - members: Invite new Members to join your project. - wiki: Within the Wiki you can document and share knowledge together - with your team. - backlogs_overview: Manage your work in the Backlogs view.
On the - right you have the Product Backlog or a Bug Backlog, on the left you will - have the respective sprints. Here you can create epics, user stories, - and bugs, prioritize via drag'n'drop and add them to a sprint. - backlogs_task_board_arrow: To see your Task board, open the Sprint - drop-down... - backlogs_task_board_select: "... and select the Task board entry." - backlogs_task_board: The Task board visualizes the progress for this - sprint. Add new tasks or impediments with the + icon next to a user story. - Via drag'n'drop you can update the status. - wp_toggler: Now let's have a look at the Work package section, which - gives you a more detailed view of your work. - wp_list: This is the Work package list with the important work within - your project, such as tasks, features, milestones, bugs, and more.
- You can create or edit a work package directly within this list. To see - its details you can double click on a row. - wp_full_view: Within the Work package details you find all relevant - information, such as description, status and priority, activities, dependencies - or comments. - wp_back_button: With the arrow you can navigate back to the work package list. - wp_create_button: The Create button will add a new work package to - your project. - wp_timeline_button: You can activate the Gantt chart to create a timeline - for your project. - wp_timeline: Here you can edit your project plan. Create new phases, milestones, - and add dependencies. All team members can see and update the latest plan - at any time. - help_menu: In the Help menu you will find a user guide and additional - help resources.
Enjoy your work with OpenProject! + project_selection: Başlamak için lütfen faydalı demo verileri olan projelerden + birini seçin.
Demo proje klasik proje yönetimi için en iyisidir, + Scrum projesi Çevik proje yönetimi için daha iyidir. + sidebar_arrow: Ok işereti ile projenin Ana menüsüne geri dönebilirsiniz. + members: Projenize katılmak için yeni Üyeler davet edin. + wiki: " Wiki içerisinde bilgileri ekibinizle birlikte belgeleyebilir + ve paylaşabilirsiniz." + backlogs_overview: Çalışmanızı İş Listeleri görünümünde yönetin. +
Sağda, Ürün İş Listesi veya bir Hata İş Listesi bulunur, solda ilgili + bölümlere sahip olursunuz. Burada, destanlar, kullanıcı hikayeleri ve + hatalar yaratabilir, drag'n'drop ile önceliklendirme yapabilir ve bunları + bir sprint'e ekleyebilirsiniz. + backlogs_task_board_arrow: " Görev tahtası nızı görmek için Sprint + açılır menüsünü açın ..." + backlogs_task_board_select: "... ve Görev tahtası kayıtlarını seçin." + backlogs_task_board: " Görev panosu bu sprint için kaydedilen ilerlemeyi + gösterir. Bir kullanıcı hikayesinin yanındaki + simgesi ile yeni görevler + veya engeller ekleyin. Sürükle ve bırak özelliği ile durumu güncelleyebilirsiniz." + wp_toggler: Şimdi, size çalışmanız hakkında daha ayrıntılı bir görünüm sağlayan + İş paketi bölümüne göz atalım. + wp_list: Bu, projenizdeki görevler, özellikler, kilometre taşları, hatalar + ve daha fazlası gibi önemli çalışmaların yer aldığı İş paketi listesidir. +
Bir çalışma paketini doğrudan bu listeden oluşturabilir veya düzenleyebilirsiniz. + Detaylarını görmek için bir satır üzerine çift tıklayabilirsiniz. + wp_full_view: " İş paketi ayrıntıları 'nda açıklama, durum ve öncelik, + etkinlikler, bağımlılıklar veya yorumlar gibi tüm ilgili bilgileri bulabilirsiniz." + wp_back_button: Ok işareti ile iş paketi listesine geri dönebilirsiniz. + wp_create_button: " Oluştur düğmesi, projenize yeni bir iş paketi + ekler." + wp_timeline_button: Projeniz için bir zaman çizelgesi oluşturmak için + Gantt şeması 'nı etkinleştirebilirsiniz. + wp_timeline: Burada proje planınızı düzenleyebilirsiniz. Yeni aşamalar, kilometre + taşları oluşturun ve bağımlılıklar ekleyin. Tüm ekip üyeleri en son planı + istedikleri zaman görebilir ve güncelleyebilir. + help_menu: " Yardım menüsünde bir kullanım kılavuzu ve ek yardım kaynakları + bulacaksınız.
OpenProject ile çalışmanın tadını çıkarın!" password_confirmation: field_description: Bu değişikliği onaylamak için hesap parolanızı girmeniz gerekir. title: Devam etmek için parolanızı doğrulayın @@ -397,11 +396,11 @@ tr: attribute_groups: error_duplicate_group_name: "%{group} ismi birden fazla kullanıldı. Grup isimleri eşsiz olmalıdır." - error_no_table_configured: Please configure a table for %{group}. + error_no_table_configured: Lütfen %{group} için bir tablo yapılandırın. reset_title: Form ayarlarlarını sıfırlayın - confirm_reset: 'Warning: Are you sure you want to reset the form configuration? - This will reset the attributes to their default group and disable ALL custom - fields. + confirm_reset: 'Uyarı: Form yapılandırmasını sıfırlamak istediğinizden emin + misiniz? Bu, nitelikleri varsayılan gruplarına sıfırlar ve TÜM özel alanları + devre dışı bırakır. ' upgrade_to_ee: Enterprise Edition sürümüne yükseltme @@ -412,17 +411,17 @@ tr: more_information: Daha fazla bilgi nevermind: Boşver filter_types: - parent: being child of - precedes: preceding + parent: çocuğu olmak + precedes: önceki follows: takip etmek - relates: relating to - duplicates: duplicating + relates: ile ilgili + duplicates: çoğaltmak duplicated: tarafından çoğaltılır blocks: engelleme blocked: bağlı - partof: being part of - includes: including - requires: requiring + partof: parçası olmak + includes: dahil olmak üzere + requires: gerektiren required: tarafından gerekli time_entry: activity: Etkinlik @@ -524,8 +523,8 @@ tr: özellikleri yerine etiketinin görüneceğini unutmayın. ' - button_activate: Show Gantt chart - button_deactivate: Hide Gantt chart + button_activate: İş-Zaman çizelgesi göster + button_deactivate: İş-Zaman çizelgesi gizle. cancel: İptal change: Planlama değişikliği due_date: Bitiş tarihi @@ -573,8 +572,8 @@ tr: quarters: Üç aylık years: Yıl slider: Yakınlaştırma kaydırıcısı - description: 'Select the initial zoom level that should be shown when autozoom - is not available. + description: 'Otomatik zoom mevcut olmadığında gösterilmesi gereken ilk yakınlaştırma + seviyesini seçin. ' tl_toolbar: @@ -662,7 +661,7 @@ tr: bileşenleri gizlemek için tıklayın faulty_query: title: İş paketleri yüklenemiyor. - description: Your view is erroneous and could not be processed. + description: Görüşün hatalı ve işlenemedi. no_results: title: Görüntülecek bir iş paketi bulunmuyor. description: Ya hiç iş paketi oluşturulmamış, ya da tüm iş paketeri filtrelenmiş. @@ -725,12 +724,12 @@ tr: insert_columns: Sütun ekle ... filters: Filtreler display_sums: Toplamları görüntüle - confirm_edit_cancel: Are you sure you want to cancel editing the name of this - view? Title will be set back to previous value. + confirm_edit_cancel: Bu görünümün adını düzenlemeyi iptal etmek istediğinizden + emin misiniz? Başlık önceki değere ayarlanacaktır. click_to_edit_query_name: Bu görünümün başlığını düzenlemek için tıklayın. rename_query_placeholder: Bu görünümüm adı errors: - unretrievable_query: Unable to retrieve view from URL + unretrievable_query: URL’den görünüm alınamadı not_found: Böyle bir görünüm bulunmamakta duplicate_query_title: Bu isimde bir görünüm var. Yinede devam edilsin mi? text_no_results: Eşleşen görünüm bulunamadı. @@ -744,36 +743,35 @@ tr: text_select_hint: Seçim kutuları 'ALT' ve ok tuşları ile açılmalıdır. table_configuration: button: Bu iş paketi tablosunu yapılandır - choose_display_mode: Display work packages as + choose_display_mode: İş paketlerini farklı olarak göster modal_title: İş paketi tablosu yapılandırma - embedded_tab_disabled: This configuration tab is not available for the embedded - view you're editing. + embedded_tab_disabled: Bu yapılandırma sekmesi, düzenlemekte olduğunuz katıştırılmış + görünüm için kullanılamaz. default: varsayılan display_settings: Görünüm ayarları default_mode: Düz liste hierarchy_mode: Hiyerarşi - hierarchy_hint: All filtered table results will be augmented with their ancestors. - Hierarchies can be expanded and collapsed. - display_sums_hint: Display sums of all summable attributes in a row below - the table results. - show_timeline_hint: Show an interactive gantt chart on the right side of the - table. You can change its width by dragging the divider between table and - gantt chart. + hierarchy_hint: Filtrelenen tüm tablo sonuçları atalarıyla artırılacaktır. + Hiyerarşiler genişletilebilir ve daraltılabilir. + display_sums_hint: Tüm toplanabilir özelliklerin toplamlarını, tablonun sonuçlarının + altındaki bir satırda görüntüleyin. + show_timeline_hint: Tablonun sağ tarafında etkileşimli bir gantt grafiği göster. + Tablo ve gantt tablosu arasındaki bölücüyü sürükleyerek genişliğini değiştirebilirsiniz. highlighting: Vurgulama highlighting_mode: description: Rekle vurgula none: Vurgulama inline: Vurgulanan öznitelik(ler) inline_all: Tüm öznitelikler - entire_row_by: Entire row by + entire_row_by: Tüm satır tarafından status: Durum priority: Öncelik type: Tür - columns_help_text: Use the input above to add or remove columns to your table - view. You can drag and drop the columns to reorder them. + columns_help_text: Tablo görünümünüze sütun eklemek veya kaldırmak için yukarıdaki + girişi kullanın. Yeniden düzenlemek için sütunları sürükleyip bırakabilirsiniz. upsale: - attribute_highlighting: Need certain work packages to stand out from the - mass? + attribute_highlighting: Kitleden sıyrılmak için bazı iş paketlerine mi ihtiyacınız + var? relation_columns: İş paketleri listesindeki ilişkileri görmek ister misiniz? check_out_link: Enterprise sürüme bakın. relation_filters: @@ -825,10 +823,9 @@ tr: title: "%{label} için silme işlimini onaylayın" text: "%{label} silinecek. Emin misiniz?" has_children: 'İş paketi %{childUnits} alt paketlerine sahip:' - confirm_deletion_children: I acknowledge that ALL descendants of the listed - work packages will be recursively removed. - deletes_children: All child work packages and their descendants will also - be recursively deleted. + confirm_deletion_children: Listelenen iş paketlerinin TÜM soylarının tekrar + tekrar kaldırılacağını kabul ediyorum. + deletes_children: Tüm çocuk iş paketleri ve torunları da tekrar tekrar silinir. notice_successful_create: Oluşturma başarılı. notice_successful_delete: Silme başarılı. notice_successful_update: Güncelleme başarılı. @@ -880,4 +877,4 @@ tr: title: all_projects: tüm projeler project_and_subprojects: ve tüm alt projeler - search_for: Search for + search_for: Aramak diff --git a/config/locales/crowdin/js-uk.yml b/config/locales/crowdin/js-uk.yml index 8042f8fbe5..59d1ec90f5 100644 --- a/config/locales/crowdin/js-uk.yml +++ b/config/locales/crowdin/js-uk.yml @@ -38,7 +38,7 @@ uk: button_duplicate: Duplicate button_edit: Edit button_filter: Filter - button_advanced_filter: Advanced filter + button_advanced_filter: Розширений фільтр button_list_view: Подання списком button_show_view: Повноекранний режим button_log_time: Log time @@ -150,39 +150,39 @@ uk: general_text_Yes: 'Yes' grid: add_modal: - choose_widget: Choose widget + choose_widget: Оберіть віджет widgets: documents: - title: Documents - no_results: No documents yet. + title: Документи + no_results: Ще немає документів. news: title: News - at: at + at: на no_results: Nothing new to report. time_entries_current_user: - title: Spent time (last 7 days) - no_results: No time entries for the last 7 days. + title: Витрачений час (останні 7 днів) + no_results: Немає записів часу за останні 7 днів. work_packages_accountable: title: Work packages I am accountable for work_packages_assigned: title: Work packages assigned to me work_packages_created: - title: Work packages created by me + title: Пакети робіт створені мною work_packages_watched: - title: Work packages watched by me + title: Пакети робіт переглянуті мною work_packages_calendar: title: Calendar label_activate: Activate label_activity_no: Запис активності номер %{activityNo} label_activity_with_comment_no: Запис активності номер %{activityNo}. Має коментар користувача. - label_add_column_after: Add column after - label_add_column_before: Add column before + label_add_column_after: Додати стовпець після + label_add_column_before: Додати стовпець перед label_add_columns: Add columns label_add_comment: Додати коментар label_add_comment_title: Comment and type @ to notify other people - label_add_row_after: Add row after - label_add_row_before: Add row before + label_add_row_after: Додати рядок після + label_add_row_before: Додати рядок перед label_add_selected_columns: Add selected columns label_added_by: додав(-ла) label_added_time_by: Додав(-ла) %{author} %{age} @@ -259,9 +259,9 @@ uk: label_visibility_settings: Visibility settings label_quote_comment: Цитувати цей коментар label_reset: Reset - label_remove_column: Remove column + label_remove_column: Видалити стовпець label_remove_columns: Remove selected columns - label_remove_row: Remove row + label_remove_row: Видалити рядок label_save_as: Зберегти як label_select_watcher: Виберіть спостерігача... label_selected_filter_list: Вибрані фільтри @@ -283,7 +283,7 @@ uk: label_activity_show_only_comments: Show activities with comments only label_activity_show_all: Show all activities label_total_progress: "%{percent}% загального прогресу" - label_total_amount: 'Total: %{amount}' + label_total_amount: 'Всього: %{amount}' label_updated_on: оновлено label_warning: Warning label_work_package: Work package @@ -632,7 +632,7 @@ uk: label_enable_multi_select: Дозволити мультивибір label_disable_multi_select: Не дозволяти мультивибір label_filter_add: Add filter - label_filter_by_text: Filter by text + label_filter_by_text: Фільтрування за текстом label_options: Options label_column_multiselect: 'Поле комбінованого випадаючого списку: виділіть за допомогою клавіш зі стрілками, підтвердьте вибір з Enter, видаліть з Backspace' @@ -645,7 +645,7 @@ uk: message_work_package_read_only: Work package is locked in this status. No attribute other than status can be altered. no_value: Значення відсутнє - placeholder_filter_by_text: Subject, description, comments, ... + placeholder_filter_by_text: Тема, опис, коментарі, ... inline_create: title: Клацніть тут, щоб додати до цього списку новий пакет робіт create: @@ -861,7 +861,7 @@ uk: messages_on_field: 'Це поле невірне: %{messages}' error_could_not_resolve_version_name: Не вдалося визначити версію error_could_not_resolve_user_name: Не вдалося визначити ім'я користувача - error_attachment_upload: 'File failed to upload: %{error}' + error_attachment_upload: 'Не вдалося завантажити файл: %{error}' error_attachment_upload_permission: You don't have the permission to upload files on this resource. units: @@ -885,12 +885,12 @@ uk: button_activate: Activate zen mode button_deactivate: Deactivate zen mode global_search: - all_projects: In all projects + all_projects: У всіх проектах search: Search - close_search: Close search - current_project: In this project - current_project_and_all_descendants: In this project + subprojects + close_search: Закрити пошук + current_project: У цьому проекті + current_project_and_all_descendants: У цьому проекті + підпроекти title: - all_projects: all projects - project_and_subprojects: and all subprojects - search_for: Search for + all_projects: всі проекти + project_and_subprojects: і всі підпроекти + search_for: Пошук по diff --git a/config/locales/crowdin/js-zh-TW.yml b/config/locales/crowdin/js-zh-TW.yml index 520dc52aa0..9a61530c0d 100644 --- a/config/locales/crowdin/js-zh-TW.yml +++ b/config/locales/crowdin/js-zh-TW.yml @@ -144,7 +144,7 @@ zh-TW: choose_widget: Choose widget widgets: documents: - title: Documents + title: 文件 no_results: No documents yet. news: title: 新知 @@ -421,7 +421,7 @@ zh-TW: group_by_relation_type: 按關聯類型分組 add_parent: 增加現有的上一層 add_new_child: 建立新子項 - create_new: 新建 + create_new: 新增 add_existing: 添加現有的 add_existing_child: 加入現有子項 remove_child: 移除子項 diff --git a/config/locales/crowdin/js-zh.yml b/config/locales/crowdin/js-zh.yml index 001e56e01d..e85e51891e 100644 --- a/config/locales/crowdin/js-zh.yml +++ b/config/locales/crowdin/js-zh.yml @@ -140,38 +140,38 @@ zh: general_text_Yes: 是 grid: add_modal: - choose_widget: Choose widget + choose_widget: 选择小部件 widgets: documents: - title: Documents - no_results: No documents yet. + title: 文档 + no_results: 没有文档。 news: title: 新闻 at: at no_results: 没有新消息报告。 time_entries_current_user: - title: Spent time (last 7 days) - no_results: No time entries for the last 7 days. + title: 花费时间 (最近 7天) + no_results: 过去7天没有时间记录。 work_packages_accountable: title: 我负责的工作包 work_packages_assigned: title: 分配给我的工作包 work_packages_created: - title: Work packages created by me + title: 我创建的工作包 work_packages_watched: - title: Work packages watched by me + title: 由我汇报的工作包 work_packages_calendar: title: 日历 label_activate: 激活 label_activity_no: 活动条目编号 %{activityNo} label_activity_with_comment_no: 活动条目编号 %{activityNo},有用户评论。 - label_add_column_after: Add column after - label_add_column_before: Add column before + label_add_column_after: 之后添加列 + label_add_column_before: 在之前添加列 label_add_columns: 增添列 label_add_comment: 添加评论 label_add_comment_title: 写下评论并输入@ 以通知其他人 - label_add_row_after: Add row after - label_add_row_before: Add row before + label_add_row_after: 之后添加行 + label_add_row_before: 之前添加行 label_add_selected_columns: 添加所选的列 label_added_by: 添加人 label_added_time_by: 由 %{author} %{age} 添加 @@ -247,9 +247,9 @@ zh: label_visibility_settings: 可见性设置 label_quote_comment: 引用这个评论 label_reset: 重置 - label_remove_column: Remove column + label_remove_column: 删除列 label_remove_columns: 删除选定的列 - label_remove_row: Remove row + label_remove_row: 删除行 label_save_as: 另存为 label_select_watcher: 选择一位关注者... label_selected_filter_list: 所选的筛选器 @@ -271,7 +271,7 @@ zh: label_activity_show_only_comments: 仅显示批注的活动 label_activity_show_all: 显示所有项目 label_total_progress: "%{percent} %总进度" - label_total_amount: 'Total: %{amount}' + label_total_amount: '总计: %{amount}' label_updated_on: 更新于 label_warning: 警告 label_work_package: 工作包 @@ -568,7 +568,7 @@ zh: label_enable_multi_select: 启用多选 label_disable_multi_select: 禁用多选 label_filter_add: 添加筛选器 - label_filter_by_text: Filter by text + label_filter_by_text: 按文本筛选 label_options: 选项 label_column_multiselect: '组合式的下拉字段: 使用箭头键选择,用 enter 键确认选择,用退格键删除' message_error_during_bulk_delete: 试图删除工作包时出错。 @@ -577,7 +577,7 @@ zh: message_view_spent_time: 显示这个工作包所花费的时间 message_work_package_read_only: 工作包被锁定在此状态。除状态外,其他属性均不可更改。 no_value: 无值 - placeholder_filter_by_text: Subject, description, comments, ... + placeholder_filter_by_text: 主题, 描述, 评论,..。 inline_create: title: 单击此处将新工作包添加至此列表 create: @@ -775,7 +775,7 @@ zh: messages_on_field: 此字段无效:%{messages} error_could_not_resolve_version_name: 无法解析版本名称 error_could_not_resolve_user_name: 不能确定用户名 - error_attachment_upload: 'File failed to upload: %{error}' + error_attachment_upload: '文件上传失败: %{error}' error_attachment_upload_permission: 您没有上传此资源上文件的权限。 units: workPackage: @@ -792,9 +792,9 @@ zh: button_activate: 激活 zen 模式 button_deactivate: 取消激活 zen 模式 global_search: - all_projects: In all projects + all_projects: 在所有项目中 search: 搜索 - close_search: Close search + close_search: 关闭搜索 current_project: 在当前项目中 current_project_and_all_descendants: 在当前项目和子项目中 title: diff --git a/config/locales/crowdin/ko.yml b/config/locales/crowdin/ko.yml index e9dca7b014..a98f833691 100644 --- a/config/locales/crowdin/ko.yml +++ b/config/locales/crowdin/ko.yml @@ -48,12 +48,12 @@ ko: no_results_content_title: 사용인증 모드가 없습니다. no_results_content_text: 새 사용인증 모드 생성 ldap_auth_sources: - connection_encryption: Connection encryption + connection_encryption: 연결 암호화 tls_mode: plain: 없음 - simple_tls: simple_tls - start_tls: start_tls - plain_description: Plain unencrypted connection, no TLS negotiation. + simple_tls: 단순 TLS + start_tls: TLS 시작 + plain_description: 일반 암호화 되지 않은 연결 TLS 협상 없음 simple_tls_description: Implicit TLS encryption, but no certificate validation. Use with caution and implicit trust of the LDAP connection. start_tls_description: Explicit TLS encryption with full validation. Use for @@ -350,10 +350,10 @@ ko: encoded_token: 엔터프라이즈 지원 토큰 active_user_count_restriction: 최대 활성 사용자 grids/grid: - page: Page + page: 페이지 row_count: Number of rows column_count: Number of columns - widgets: Widgets + widgets: 위젯 relation: delay: 지연 from: 작업 패키지 @@ -443,9 +443,9 @@ ko: type: 타입 watcher: 주시자 doorkeeper/application: - uid: Client ID + uid: 고객 ID secret: Client secret - owner: Owner + owner: 소유자 redirect_uri: Redirect URI client_credentials_user_id: Client Credentials User ID scopes: Scopes @@ -516,7 +516,7 @@ ko: enterprise_token: unreadable: 읽을 수 없습니다. 지원하는 토큰이 확실한가요? grids/grid: - overlaps: overlap. + overlaps: 오버랩 outside: is outside of the grid. end_before_start: end value needs to be larger than the start value. parse_schema_filter_params_service: @@ -1302,7 +1302,7 @@ ko: label_environment: 환경 label_estimates_and_time: 견적 및 시간 label_equals: 일치함 - label_everywhere: everywhere + label_everywhere: 어디에 있든지 label_example: 예 label_export_to: '다음에서도 사용 가능:' label_expanded_click_to_collapse: 확장되었습니다. 축소하려면 클릭하세요. @@ -1616,7 +1616,7 @@ ko: label_view_diff: 차이점 보기 label_view_revisions: 수정 보기 label_watched_work_packages: 주시하는 작업 패키지 - label_what_is_this: What is this? + label_what_is_this: 이게 뭐예요? label_week: 주 label_wiki_content_added: 위키 페이지 추가됨 label_wiki_content_updated: 위키 페이지 업데이트됨 @@ -2732,7 +2732,7 @@ ko: register_intro: If you are developing an OAuth API client application for OpenProject, you can register it using this form for all users to use. default_scopes: '' - client_id: Client ID + client_id: 고객 ID client_secret_notice: 'This is the only time we can print the client secret, please note it down and keep it secure. It should be treated as a password and cannot be retrieved by OpenProject at a later time. @@ -2778,6 +2778,3 @@ ko: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: 들어오는 이메일 웹 서비스 사용 - setting_mail_handler_api_description: '이메일 웹 처리기는 OpenProject가 계측 메커니즘으로 특정 명령을 - 포함하는 이메일을 받을 수 있게 합니다(예: 작업 패키지를 만들고 업데이트하기 위해).' diff --git a/config/locales/crowdin/lol.yml b/config/locales/crowdin/lol.yml index d01e56cf16..e3876037bd 100644 --- a/config/locales/crowdin/lol.yml +++ b/config/locales/crowdin/lol.yml @@ -59,7 +59,7 @@ lol: ' boards: show: - no_results_title_text: crwdns114770:0crwdne114770:0 + no_results_title_text: crwdns122672:0crwdne122672:0 colors: index: no_results_title_text: crwdns114772:0crwdne114772:0 @@ -132,8 +132,8 @@ lol: activities: no_results_title_text: crwdns114854:0crwdne114854:0 boards: - no_results_title_text: crwdns114856:0crwdne114856:0 - no_results_content_text: crwdns114858:0crwdne114858:0 + no_results_title_text: crwdns122674:0crwdne122674:0 + no_results_content_text: crwdns122676:0crwdne122676:0 categories: no_results_title_text: crwdns114860:0crwdne114860:0 no_results_content_text: crwdns114862:0crwdne114862:0 @@ -593,7 +593,7 @@ lol: models: attachment: crwdns115450:0crwdne115450:0 attribute_help_text: crwdns115452:0crwdne115452:0 - board: crwdns115454:0crwdne115454:0 + board: crwdns122678:0crwdne122678:0 comment: crwdns115456:0crwdne115456:0 custom_action: crwdns115458:0crwdne115458:0 custom_field: crwdns115460:0crwdne115460:0 @@ -1060,9 +1060,9 @@ lol: faq: crwdns116258:0crwdne116258:0 glossary: crwdns116260:0crwdne116260:0 shortcuts: crwdns116262:0crwdne116262:0 - forums: crwdns116264:0crwdne116264:0 + forums: crwdns122680:0crwdne122680:0 blog: crwdns116266:0crwdne116266:0 - boards: crwdns116268:0crwdne116268:0 + boards: crwdns122682:0crwdne122682:0 newsletter: crwdns116270:0crwdne116270:0 links: configuration_guide: crwdns116272:0crwdne116272:0 @@ -1124,7 +1124,7 @@ lol: label_authentication: crwdns116376:0crwdne116376:0 label_available_project_work_package_categories: crwdns116378:0crwdne116378:0 label_available_project_work_package_types: crwdns116380:0crwdne116380:0 - label_available_project_boards: crwdns116382:0crwdne116382:0 + label_available_project_boards: crwdns122684:0crwdne122684:0 label_available_project_versions: crwdns116384:0crwdne116384:0 label_available_project_repositories: crwdns116386:0crwdne116386:0 label_api_documentation: crwdns116388:0crwdne116388:0 @@ -1132,10 +1132,10 @@ lol: label_blocked_by: crwdns116392:0crwdne116392:0 label_blocks: crwdns116394:0crwdne116394:0 label_blog: crwdns116396:0crwdne116396:0 - label_board_locked: crwdns116398:0crwdne116398:0 - label_board_new: crwdns116400:0crwdne116400:0 - label_board_plural: crwdns116402:0crwdne116402:0 - label_board_sticky: crwdns116404:0crwdne116404:0 + label_board_locked: crwdns122686:0crwdne122686:0 + label_board_new: crwdns122688:0crwdne122688:0 + label_board_plural: crwdns122690:0crwdne122690:0 + label_board_sticky: crwdns122692:0crwdne122692:0 label_boolean: crwdns116406:0crwdne116406:0 label_branch: crwdns116408:0crwdne116408:0 label_browse: crwdns116410:0crwdne116410:0 @@ -1274,7 +1274,7 @@ lol: label_hierarchy_leaf: crwdns116676:0crwdne116676:0 label_home: crwdns116678:0crwdne116678:0 label_subject_or_id: crwdns116680:0crwdne116680:0 - label_impressum: crwdns122544:0crwdne122544:0 + label_impressum: crwdns122694:0crwdne122694:0 label_in: crwdns116682:0crwdne116682:0 label_in_less_than: crwdns116684:0crwdne116684:0 label_in_more_than: crwdns116686:0crwdne116686:0 @@ -1407,7 +1407,7 @@ lol: label_previous_week: crwdns116940:0crwdne116940:0 label_principal_invite_via_email: crwdns116942:0crwdne116942:0 label_principal_search: crwdns116944:0crwdne116944:0 - label_privacy_policy: crwdns122546:0crwdne122546:0 + label_privacy_policy: crwdns122696:0crwdne122696:0 label_product_version: crwdns116946:0crwdne116946:0 label_professional_support: crwdns116948:0crwdne116948:0 label_profile: crwdns116950:0crwdne116950:0 @@ -1815,7 +1815,7 @@ lol: permission_export_wiki_pages: crwdns117672:0crwdne117672:0 permission_list_attachments: crwdns117674:0crwdne117674:0 permission_log_time: crwdns117676:0crwdne117676:0 - permission_manage_boards: crwdns117678:0crwdne117678:0 + permission_manage_boards: crwdns122698:0crwdne122698:0 permission_manage_categories: crwdns117680:0crwdne117680:0 permission_manage_work_package_relations: crwdns117682:0crwdne117682:0 permission_manage_members: crwdns117684:0crwdne117684:0 @@ -1861,7 +1861,7 @@ lol: archive: are_you_sure: crwdns117756:0%{name}crwdne117756:0 project_module_activity: crwdns117758:0crwdne117758:0 - project_module_boards: crwdns117760:0crwdne117760:0 + project_module_boards: crwdns122700:0crwdne122700:0 project_module_calendar: crwdns117762:0crwdne117762:0 project_module_work_package_tracking: crwdns117764:0crwdne117764:0 project_module_news: crwdns117766:0crwdne117766:0 @@ -2237,7 +2237,7 @@ lol: color: crwdns118420:0crwdne118420:0 colors: crwdns118422:0crwdne118422:0 associations: crwdns118424:0crwdne118424:0 - board_could_not_be_saved: crwdns118426:0crwdne118426:0 + board_could_not_be_saved: crwdns122702:0crwdne122702:0 button_delete_all: crwdns118428:0crwdne118428:0 change: crwdns118430:0crwdne118430:0 children: crwdns118432:0crwdne118432:0 @@ -2590,5 +2590,3 @@ lol: authorization_error: crwdns118974:0crwdne118974:0 revoke_my_application_confirmation: crwdns118976:0%{token_count}crwdne118976:0 my_registered_applications: crwdns118978:0crwdne118978:0 - setting_mail_handler_api_enabled: crwdns118084:0crwdne118084:0 - setting_mail_handler_api_description: crwdns118086:0crwdne118086:0 diff --git a/config/locales/crowdin/lt.yml b/config/locales/crowdin/lt.yml index 966980a4b1..595ea432f1 100644 --- a/config/locales/crowdin/lt.yml +++ b/config/locales/crowdin/lt.yml @@ -3005,7 +3005,3 @@ lt: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Įgalinti įeinančio el. pašto žiniatinklio tarnybą - setting_mail_handler_api_description: El. pašto žiniatinklio apdorojimo įrankis - leidžia OpenProject gauti laiškus kurių sudėtyje yra specialios komandos, kurios - įvykdomos sistemoje (pvz., kurti ir atnaujinti darbų paketus). diff --git a/config/locales/crowdin/lv.yml b/config/locales/crowdin/lv.yml index b5dacb1e1d..601b21a027 100644 --- a/config/locales/crowdin/lv.yml +++ b/config/locales/crowdin/lv.yml @@ -2937,7 +2937,3 @@ lv: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Enable incoming email web service - setting_mail_handler_api_description: The email web handler enables OpenProject - to receive emails containing specific commands as an instrumentation mechanism - (e.g., to create and update work packages). diff --git a/config/locales/crowdin/ne-NP.yml b/config/locales/crowdin/ne-NP.yml new file mode 100644 index 0000000000..9b144c7357 --- /dev/null +++ b/config/locales/crowdin/ne-NP.yml @@ -0,0 +1,2920 @@ +--- +ne-NP: + no_results_title_text: त्यहाँ प्रदर्शन गर्न केहि पनि छैन। + activities: + index: + no_results_title_text: There has not been any activity for the project within + this time frame. + admin: + plugins: + no_results_title_text: There are currently no plugins available. + custom_styles: + custom_colors: Custom colors + customize: 'Customize your OpenProject installation with your own logo. Note: + This logo will be publicly accessible.' + enterprise_notice: As a special 'Thank you!' for their financial contribution + to develop OpenProject, this tiny feature is only available for Enterprise + Edition support subscribers. + manage_colors: Edit color select options + instructions: + alternative_color: Strong accent color, typically used for most the important + button on a screen. + content_link_color: Font color of most of the links. + primary_color: Main color. + primary_color_dark: Typically a darker version of the main color used for + hover effects. + header_bg_color: Background color of the header. + header_item_bg_hover_color: Background color of clickable header items when + hovered with the mouse. + header_item_font_color: Font color of clickable header items. + header_item_font_hover_color: Font color of clickable header items when hovered + with the mouse. + header_border_bottom_color: Thin line under the header. Leave this field empty + if you don't want any line. + main_menu_bg_color: Left side menu's background color. + enterprise: + upgrade_to_ee: Upgrade to Enterprise Edition + add_token: Upload an Enterprise Edition support token + replace_token: Replace your current support token + order: Order Enterprise Edition + paste: Paste your Enterprise Edition support token + required_for_feature: This feature is only available with an active Enterprise + Edition support token. + enterprise_link: For more information, click here. + announcements: + show_until: Show until + is_active: currently displayed + is_inactive: currently not displayed + attribute_help_texts: + text_overview: In this view, you can create custom help texts for attributes view. + When defined, these texts can be shown by clicking the help icon next to its + belonging attribute. + label_plural: Attribute help texts + show_preview: Preview text + add_new: Add help text + edit: Edit help text for %{attribute_caption} + auth_sources: + index: + no_results_content_title: There are currently no authentication modes. + no_results_content_text: Create a new authentication mode + ldap_auth_sources: + connection_encryption: Connection encryption + tls_mode: + plain: none + simple_tls: simple_tls + start_tls: start_tls + plain_description: Plain unencrypted connection, no TLS negotiation. + simple_tls_description: Implicit TLS encryption, but no certificate validation. + Use with caution and implicit trust of the LDAP connection. + start_tls_description: Explicit TLS encryption with full validation. Use for + LDAP over TLS/SSL. + section_more_info_link_html: 'यो खण्ड, LDAP प्रमाणिकरण स्रोतको जडान सुरक्षाको + बारेमा हो। थप जानकारीको लागि, यो लिंकमा जानुहोस् the Net::LDAP + documentation + +' + boards: + show: + no_results_title_text: There are currently no posts for the board. + colors: + index: + no_results_title_text: There are currently no colors. + no_results_content_text: Create a new color + label_no_color: No color + custom_actions: + actions: + name: Actions + add: Add action + assigned_to: + executing_user_value: "(Assign to executing user)" + conditions: Conditions + plural: Custom actions + new: New custom action + edit: Edit custom action %{name} + execute: Execute %{name} + upsale: + title: Custom actions is an Enterprise Edition feature + description: Custom actions streamline everyday work by combining a set of individual + steps into one button. + custom_fields: + text_add_new_custom_field: 'To add new custom fields to a project you first need + to create them before you can add them to this project. + +' + is_enabled_globally: Is enabled globally + enabled_in_project: Enabled in project + contained_in_type: Contained in type + confirm_destroy_option: Deleting an option will delete all of its occurrences + (e.g. in work packages). Are you sure you want to delete it? + tab: + no_results_title_text: There are currently no custom fields. + no_results_content_text: Create a new custom field + concatenation: + single: or + deprecations: + old_timeline: + replacement: This timelines module is being replaced by the interactive timeline + embedded into the work packages module. + removal: This module is going to be removed with OpenProject 8.0. The configuration + for this view will NOT be migrated to the work package view. + further_information_before: Please take a look at + link_name: how to migrate to the new timeline. + further_information_after: '' + calendar: + removal: 'Please note: This module is going to be removed with OpenProject 8.0.' + global_search: + overwritten_tabs: + wiki_pages: Wiki + messages: Forum + groups: + index: + no_results_title_text: There are currently no groups. + no_results_content_text: Create a new group + users: + no_results_title_text: There are currently no users part of this group. + memberships: + no_results_title_text: There are currently no projects part of this group. + incoming_mails: + ignore_filenames: 'आगामी मेलहरूका लागि अनुलग्नकहरू प्रशोधन गर्दा उपेक्षा गर्न + नामहरूको सूची निर्दिष्ट गर्नुहोस् (जस्तै, हस्ताक्षरहरू वा प्रतिमाहरू)। प्रति + रेखा एक फाइलको नाम प्रविष्ट गर्नुहोस्। + +' + projects: + delete: + scheduled: मेटाउने कार्य अनुसूचित गरिएको छ र पृष्टभूमिमा सम्पादन गरिनेछ। तपाईंलाई + परिणाम सूचित गरिनेछ। + schedule_failed: 'परियोजना मेटिने छैन: %{errors}' + failed: परियोजना '%{name}' मेटाउने कार्य असफल भयो + failed_text: परियोजना '%{name}' मेटाउने अनुरोध असफल भयो। परियोजना संग्रहित अवस्थामा + छ। + completed: परियोजना '%{name}' मेटाउने कार्य पुरा भयो + completed_text: परियोजना '%{name}' मेट्ने अनुरोध पुरा भयो। + index: + no_results_title_text: There are currently no projects + no_results_content_text: Create a new project + settings: + activities: + no_results_title_text: There are currently no activities available. + boards: + no_results_title_text: There are currently no boards for the project. + no_results_content_text: Create a new board + categories: + no_results_title_text: There are currently no work package categories. + no_results_content_text: Create a new work package category + custom_fields: + no_results_title_text: There are currently no custom fields available. + types: + no_results_title_text: There are currently no types available. + versions: + no_results_title_text: There are currently no versions for the project. + no_results_content_text: Create a new version + members: + index: + no_results_title_text: There are currently no members part of this project. + no_results_content_text: Add a member to the project + my: + access_token: + failed_to_reset_token: 'Failed to reset access token: %{error}' + notice_reset_token: 'A new %{type} token has been generated. Your access token + is:' + token_value_warning: 'Note: This is the only time you will see this token, make + sure to copy it now.' + no_results_title_text: There are currently no access tokens available. + news: + index: + no_results_title_text: There is currently no news to report. + no_results_content_text: Add a news item + my_page: + no_results_title_text: Nothing new to report. + users: + memberships: + no_results_title_text: This user is currently not a member of a project. + prioritiies: + edit: + priority_color_text: | + Click to assign or change the color of this priority. + It can be used for highlighting work packages in the table. + reportings: + index: + no_results_title_text: There are currently no status reportings. + no_results_content_text: Add a status reporting + statuses: + edit: + status_readonly_html: | + कार्य प्याकेजहरूलाई पढ्न-मात्र मिल्ने रूपमा राख्न, यो विकल्पमा चिन्ह लगाउनु होस्। + स्थितिको अपवाद बिना कुनै पनि विशेषताहरू परिवर्तन गर्न सकिँदैन। +
+ द्रष्टव्य: प्रारम्भिक मानहरू (जस्तै, from children or relations) लागू हुनेछ। + status_color_text: | + Click to assign or change the color of this status. + It is shown in the status button and can be used for highlighting work packages in the table. + index: + no_results_title_text: There are currently no work package statuses. + no_results_content_text: Add a new status + types: + index: + no_results_title_text: There are currently no types. + no_results_content_text: Create a new type + edit: + settings: Settings + form_configuration: Form configuration + projects: Projects + enabled_projects: Enabled projects + add_group: Add attribute group + add_table: सम्बन्धित कार्य प्याकेजहरूको तालिका थप्नुहोस् + edit_query: तालिका सम्पादन गर्नुहोस् + query_group_placeholder: तालिकालाई नाम दिनुहोस् + reset: Reset to defaults + type_color_text: | + Click to assign or change the color of this type. The selected color distinguishes work packages + in Gantt charts. + versions: + overview: + no_results_title_text: There are currently no work packages assigned to this + version. + wiki: + no_results_title_text: There are currently no wiki pages. + index: + no_results_content_text: Add a new wiki page + work_flows: + index: + no_results_title_text: There are currently no workflows. + work_packages: + x_descendants: + one: One descendant work package + other: "%{count} work package descendants" + bulk: + could_not_be_saved: 'निम्न कार्य प्याकेजहरू सुरक्षित गर्न सकिँदैन:' + move: + no_common_statuses_exists: There is no status available for all selected work + packages. Their status cannot be changed. + unsupported_for_multiple_projects: Bulk move/copy is not supported for work + packages from multiple projects + list_simple: + assigned: + no_results_title_text: There are currently no work packages assigned to me. + reported: + no_results_title_text: There are currently no work packages that I have reported. + responsible: + no_results_title_text: There are currently no work packages that I am accountable + for. + watched: + no_results_title_text: There are currently no work packages that I am watching. + summary: + reports: + category: + no_results_title_text: There are currently no categories available. + assigned_to: + no_results_title_text: There are currently no members part of this project. + responsible: + no_results_title_text: There are currently no members part of this project. + author: + no_results_title_text: There are currently no members part of this project. + priority: + no_results_title_text: There are currently no priorities available. + type: + no_results_title_text: There are currently no types available. + version: + no_results_title_text: There are currently no versions available. + label_invitation: Invitation + account: + delete: खाता मेटाउनुहोस् + delete_confirmation: के तपाईं खाता हटाउन निश्चित हुनुहुन्छ? + deleted: सफलतापूर्वक खाता मेटाईयो। + deletion_info: + data_consequences: + other: Of the data the user created (e.g. email, preferences, work packages, + wiki entries) as much as possible will be deleted. Note however, that data + like work packages and wiki entries can not be deleted without impeding + the work of the other users. Such data is hence reassigned to an account + called "Deleted user". As the data of every deleted account is reassigned + to this account it will not be possible to distinguish the data the user + created from the data of another deleted account. + self: Of the data you created (e.g. email, preferences, work packages, wiki + entries) as much as possible will be deleted. Note however, that data like + work packages and wiki entries can not be deleted without impeding the work + of the other users. Such data is hence reassigned to an account called "Deleted + user". As the data of every deleted account is reassigned to this account + it will not be possible to distinguish the data you created from the data + of another deleted account. + heading: "%{name} काे खाता मेटाउनुहोस्" + info: + other: प्रयोगकर्ता खाता हटाउने, एक अपरिवर्तनीय कार्य हो। + self: आफ्नो प्रयोगकर्ता खाता हटाउने, एक अपरिवर्तनीय कार्य हो। + login_consequences: + other: The account will be deleted from the system. Therefore, the user will + no longer be able to log in with his current credentials. He/she can choose + to become a user of this application again by the means this application + grants. + self: Your account will be deleted from the system. Therefore, you will no + longer be able to log in with your current credentials. If you choose to + become a user of this application again, you can do so by using the means + this application grants. + login_verification: + other: Enter the login %{name} to verify the deletion. Once submitted, you + will be asked to confirm your password. + self: Enter your login %{name} to verify the deletion. Once submitted, you + will be asked to confirm your password. + error_inactive_activation_by_mail: 'Your account has not yet been activated. To + activate your account, click on the link that was emailed to you. + +' + error_inactive_manual_activation: 'Your account has not yet been activated. Please + wait for an administrator to activate your account. + +' + error_self_registration_disabled: 'यस प्रणालीमा प्रयोगकर्ता दर्ता असक्षम बनाइएको + छ । कृपया प्रणाली प्रशासकलाई सोध्नुहोस् तपाईको खाता बनाउनको लागी। + +' + login_with_auth_provider: वा तपाईंको हालको खाताबाट साइन इन गर्नुहोस् + signup_with_auth_provider: or sign up using + auth_source_login: Please login as %{login} to activate your account. + omniauth_login: Please login to activate your account. + actionview_instancetag_blank_option: कृपया छान्नुहोस् + activerecord: + attributes: + announcements: + show_until: Display until + attachment: + attachment_content: Attachment content + attachment_file_name: Attachment file name + downloads: डाउनलोड + file: फाइल + filename: फाइल + filesize: साइज + attribute_help_text: + attribute_name: Attribute + help_text: Help text + auth_source: + account: खाता + attr_firstname: Firstname attribute + attr_lastname: Lastname attribute + attr_login: Login attribute + attr_mail: Email attribute + base_dn: Base DN + host: Host + onthefly: On-the-fly user creation + port: Port + changeset: + repository: Repository + comment: + commented: Commented + custom_action: + actions: Actions + custom_field: + default_value: पूर्वनिर्धारित मान + editable: सम्पादन योग्य + field_format: ढाँचा + is_filter: फिल्टरको रूपमा प्रयोग गरिने + is_required: आवश्यक + max_length: अधिकतम लम्बाई + min_length: न्यूनतम लम्बाई + multi_value: Allow multi-select + possible_values: सम्भाव्य मानहरू + regexp: Regular expression + searchable: खोज्न योग्य + visible: Visible + custom_value: + value: मान + enterprise_token: + starts_at: Valid since + expires_at: Expires at + subscriber: Subscriber + encoded_token: Enterprise support token + active_user_count_restriction: Maximum active users + grids/grid: + page: पृष्ठ + row_count: पङ्क्तिहरूको संख्या + column_count: स्तम्भहरूको संख्या + widgets: विजेटहरू + relation: + delay: ढिलो + from: Work package + to: Related work package + status: + is_closed: Work package closed + is_readonly: कार्य प्याकेज पढ्ने-मात्र + journal: + notes: द्रष्टव्यहरु + member: + roles: भूमिकाहरु + project: + identifier: परिचायक + latest_activity_at: Latest activity at + parent: Subproject of + queries: Queries + types: Types + versions: Versions + work_packages: Work Packages + query: + column_names: Columns + relations_to_type_column: Relations to %{type} + relations_of_type_column: "%{type} relations" + group_by: Group results by + filters: Filters + timeline_labels: Timeline labels + repository: + url: URL + role: + assignable: Work packages can be assigned to users and groups in possession + of this role in the respective project + time_entry: + activity: Activity + hours: Hours + spent_on: Date + type: Type + type: + attribute_groups: '' + is_in_roadmap: Displayed in roadmap by default + is_default: Activated for new projects by default + is_milestone: Is milestone + color: Color + user: + admin: Administrator + auth_source: Authentication mode + current_password: Current password + force_password_change: Enforce password change on next login + language: Language + last_login_on: Last login + mail_notification: Email notifications + new_password: New password + password_confirmation: Confirmation + consented_at: Consented at + user_preference: + comments_sorting: Display comments + hide_mail: Hide my email address + impaired: Accessibility mode + time_zone: Time zone + auto_hide_popups: Auto-hide success notifications + warn_on_leaving_unsaved: Warn me when leaving a work package with unsaved + changes + version: + effective_date: Finish date + sharing: Sharing + wiki_content: + text: Text + wiki_page: + parent_title: Parent page + redirect_existing_links: Redirect existing links + planning_element_type_color: + hexcode: Hex code + work_package: + begin_insertion: Begin of the insertion + begin_deletion: Begin of the deletion + children: Subelements + done_ratio: Progress (%) + end_insertion: End of the insertion + end_deletion: End of the deletion + fixed_version: Version + parent: Parent + parent_issue: Parent + parent_work_package: Parent + priority: Priority + progress: Progress (%) + spent_hours: Spent time + spent_time: Spent time + subproject: Subproject + time_entries: Log time + type: Type + watcher: Watcher + doorkeeper/application: + uid: Client ID + secret: Client secret + owner: मालिक + redirect_uri: Redirect URI + client_credentials_user_id: Client Credentials User ID + scopes: Scopes + confidential: गोप्य + errors: + messages: + accepted: must be accepted. + after: must be after %{date}. + after_or_equal_to: must be after or equal to %{date}. + before: must be before %{date}. + before_or_equal_to: must be before or equal to %{date}. + blank: can't be blank. + cant_link_a_work_package_with_a_descendant: A work package cannot be linked + to one of its subtasks. + circular_dependency: This relation would create a circular dependency. + confirmation: doesn't match %{attribute}. + could_not_be_copied: could not be (fully) copied. + does_not_exist: does not exist. + empty: can't be empty. + even: must be even. + exclusion: is reserved. + file_too_large: is too large (maximum size is %{count} Bytes). + greater_than: must be greater than %{count}. + greater_than_or_equal_to: must be greater than or equal to %{count}. + greater_than_or_equal_to_start_date: must be greater than or equal to the + start date. + greater_than_start_date: must be greater than the start date. + inclusion: is not set to one of the allowed values. + invalid: is invalid. + invalid_url: is not a valid URL. + invalid_url_scheme: 'is not a supported protocol (allowed: %{allowed_schemes}).' + less_than_or_equal_to: must be less than or equal to %{count}. + not_a_date: is not a valid date. + not_a_datetime: is not a valid date time. + not_a_number: is not a number. + not_allowed: is invalid because of missing permissions. + not_an_integer: is not an integer. + not_an_iso_date: 'is not a valid date. Required format: YYYY-MM-DD.' + not_same_project: doesn't belong to the same project. + odd: must be odd. + regex_invalid: could not be validated with the associated regular expression. + smaller_than_or_equal_to_max_length: must be smaller than or equal to maximum + length. + taken: has already been taken. + too_long: is too long (maximum is %{count} characters). + too_short: is too short (minimum is %{count} characters). + unchangeable: cannot be changed. + wrong_length: is the wrong length (should be %{count} characters). + models: + custom_field: + at_least_one_custom_option: At least one option needs to be available. + custom_actions: + only_one_allowed: "(%{name}) only one value is allowed." + empty: "(%{name}) value can't be empty." + inclusion: "(%{name}) value is not set to one of the allowed values." + not_logged_in: "(%{name}) value cannot be set because you are not logged + in." + not_an_integer: "(%{name}) is not an integer." + smaller_than_or_equal_to: "(%{name}) must be smaller than or equal to %{count}." + greater_than_or_equal_to: "(%{name}) must be greater than or equal to %{count}." + doorkeeper/application: + attributes: + redirect_uri: + fragment_present: टुक्रा समावेश गर्न सक्दैन। + invalid_uri: वैध URI हुनु पर्दछ। + relative_uri: पूर्ण URI हुनु पर्दछ। + secured_uri: HTTPS/SSL URI हुनु पर्छ। + forbidden_uri: सर्भरद्वारा निषेध गरिएको छ। + scopes: + not_match_configured: उपलब्ध scope हरु मेल खाँदैन। + enterprise_token: + unreadable: can't be read. Are you sure it is a support token? + grids/grid: + overlaps: overlap. + outside: is outside of the grid. + end_before_start: अन्तिम मान सुरु मान भन्दा ठूलो हुनु आवश्यक छ। + parse_schema_filter_params_service: + attributes: + base: + unsupported_operator: The operator is not supported. + invalid_values: A value is invalid. + id_filter_required: An 'id' filter is required. + project: + attributes: + types: + in_use_by_work_packages: 'still in use by work packages: %{types}' + query: + attributes: + project: + error_not_found: not found + public: + error_unauthorized: "- The user has no permission to create public views." + group_by_hierarchies_exclusive: is mutually exclusive with group by '%{group_by}'. + You cannot activate both. + filters: + custom_fields: + inexistent: There is no custom field for the filter. + invalid: The custom field is not valid in the given context. + relation: + typed_dag: + circular_dependency: The relationship creates a circle of relationships. + attributes: + to: + error_not_found: work package in `to` position not found or not visible + error_readonly: an existing relation's `to` link is immutable + from: + error_not_found: work package in `from` position not found or not visible + error_readonly: an existing relation's `from` link is immutable + repository: + not_available: SCM vendor is not available + not_whitelisted: is not allowed by the configuration. + invalid_url: is not a valid repository URL or path. + must_not_be_ssh: must not be an SSH url. + no_directory: is not a directory. + work_package: + is_not_a_valid_target_for_time_entries: 'Work package #%{id} is not a valid + target for reassigning the time entries.' + attributes: + due_date: + not_start_date: is not on start date, although this is required for + milestones. + parent: + cannot_be_milestone: cannot be a milestone. + cannot_be_in_another_project: cannot be in another project. + not_a_valid_parent: is invalid. + start_date: + violates_relationships: can only be set to %{soonest_start} or later + so as not to violate the work package's relationships. + status_id: + status_transition_invalid: is invalid because no valid transition exists + from old to new status for the current user's roles. + status_invalid_in_type: is invalid because the current status does not + exist in this type. + type: + cannot_be_milestone_due_to_children: cannot be a milestone because this + work package has children. + priority_id: + only_active_priorities_allowed: needs to be active. + category: + only_same_project_categories_allowed: The category of a work package + must be within the same project as the work package. + does_not_exist: The specified category does not exist. + estimated_hours: + only_values_greater_or_equal_zeroes_allowed: must be >= 0. + type: + attributes: + attribute_groups: + attribute_unknown: Invalid work package attribute used. + duplicate_group: The group name '%{group}' is used more than once. Group + names must be unique. + query_invalid: 'The embedded query ''%{group}'' is invalid: %{details}' + group_without_name: Unnamed groups are not allowed. + user: + attributes: + password: + weak: 'Must contain characters of the following classes (at least %{min_count} + of %{all_count}): %{rules}.' + lowercase: lowercase (e.g. 'a') + uppercase: uppercase (e.g. 'A') + numeric: numeric (e.g. '1') + special: special (e.g. '%') + reused: + one: has been used before. Please choose one that is different from + your last one. + other: has been used before. Please choose one that is different from + your last %{count}. + match: + confirm: Confirm new password. + description: "'Password confirmation' should match the input in the + 'New password' field." + status: + invalid_on_create: is not a valid status for new users. + auth_source: + error_not_found: not found + member: + principal_blank: Please choose at least one user or group. + role_blank: Please choose at least one role. + template: + body: 'Please check the following fields:' + header: + one: 1 error prohibited this %{model} from being saved + other: "%{count} errors prohibited this %{model} from being saved" + models: + attachment: फाइल + attribute_help_text: Attribute help text + board: Forum + comment: Comment + custom_action: Custom action + custom_field: Custom field + group: Group + category: Category + status: Work package status + member: Member + news: News + project: Project + query: Custom query + role: + one: Role + other: Roles + type: Type + user: User + version: Version + wiki: Wiki + wiki_page: Wiki page + workflow: Workflow + work_package: Work package + doorkeeper/application: OAuth application + errors: + header_invalid_fields: 'There were problems with the following fields:' + field_erroneous_label: |- + This field is invalid: %{full_errors} + Please enter a valid value. + activity: + created: 'Created: %{title}' + updated: 'Updated: %{title}' + attributes: + active: Active + assigned_to: Assignee + assignee: Assignee + attachments: Attachments + author: Author + base: 'General Error:' + blocks_ids: IDs of blocked work packages + category: Category + comment: Comment + comments: Comment + content: Content + color: Color + created_at: Created on + created_on: Created on + custom_options: सम्भाव्य मानहरू + custom_values: Custom fields + date: Date + default_columns: Default columns + description: Description + display_sums: Display Sums + due_date: Finish date + estimated_hours: Estimated time + estimated_time: Estimated time + firstname: First name + group: Group + groups: Groups + groupname: Group name + id: ID + is_default: पूर्वनिर्धारित मान + is_for_all: For all projects + is_public: Public + issue: Work package + lastname: Last name + login: Login + mail: Email + name: Name + password: Password + priority: Priority + project: Project + responsible: Accountable + role: Role + roles: भूमिकाहरु + start_date: Start date + status: Status + subject: Subject + summary: Summary + title: Title + type: Type + updated_at: Updated on + updated_on: Updated on + user: User + version: Version + work_package: Work package + button_add: Add + button_add_member: Add member + button_add_watcher: Add watcher + button_annotate: Annotate + button_apply: Apply + button_archive: Archive + button_back: Back + button_cancel: Cancel + button_change: Change + button_change_parent_page: Change parent page + button_change_password: Change password + button_check_all: Check all + button_clear: Clear + button_click_to_reveal: हेर्न क्लिक गर्नुहोस + button_close: Close + button_collapse_all: Collapse all + button_configure: Configure + button_continue: Continue + button_copy: Copy + button_copy_and_follow: Copy and follow + button_create: Create + button_create_and_continue: Create and continue + button_delete: Delete + button_decline: Decline + button_delete_watcher: Delete watcher %{name} + button_download: Download + button_duplicate: Duplicate + button_edit: Edit + button_edit_associated_wikipage: 'Edit associated Wiki page: %{page_title}' + button_expand_all: Expand all + button_filter: Filter + button_generate: Generate + button_list: List + button_lock: Lock + button_log_time: Log time + button_login: Sign in + button_move: Move + button_move_and_follow: Move and follow + button_print: Print + button_quote: Quote + button_remove: Remove + button_rename: Rename + button_replace: Replace + button_revoke: रद्द गर्नुहोस् + button_reply: Reply + button_reset: Reset + button_rollback: Rollback to this version + button_save: Save + button_save_back: Save and back + button_show: Show + button_sort: Sort + button_submit: Submit + button_test: Test + button_unarchive: Unarchive + button_uncheck_all: Uncheck all + button_unlock: Unlock + button_unwatch: Unwatch + button_update: Update + button_upgrade: Upgrade + button_upload: Upload + button_view: View + button_watch: Watch + button_manage_menu_entry: Configure menu item + button_add_menu_entry: Add menu item + button_configure_menu_entry: Configure menu item + button_delete_menu_entry: Delete menu item + consent: + checkbox_label: I have noted and do consent to the above. + failure_message: Consent failed, cannot proceed. + title: User Consent + decline_warning_message: You have declined to consent and have been logged out. + user_has_consented: User has consented to your configured statement at the given + time. + not_yet_consented: User has not consented yet, will be requested upon next login. + contact_mail_instructions: Define the mail address that users can reach a data + controller to perform data change or removal requests. + contact_your_administrator: Please contact your administrator if you want to have + your account deleted. + contact_this_mail_address: Please contact %{mail_address} if you want to have + your account deleted. + text_update_consent_time: Check this box to force users to consent again. Enable + when you have changed the legal aspect of the consent information above. + update_consent_last_time: 'Last update of consent: %{update_time}' + copy_project: + started: Started to copy project "%{source_project_name}" to "%{target_project_name}". + You will be informed by mail as soon as "%{target_project_name}" is available. + failed: Cannot copy project %{source_project_name} + succeeded: Created project %{target_project_name} + errors: Error + project_custom_fields: Custom fields on project + text: + failed: Could not copy project "%{source_project_name}" to project "%{target_project_name}". + succeeded: Copied project "%{source_project_name}" to "%{target_project_name}". + create_new_page: Wiki page + date: + abbr_day_names: + - Sun + - Mon + - Tue + - Wed + - Thu + - Fri + - Sat + abbr_month_names: + - + - Jan + - Feb + - Mar + - Apr + - May + - Jun + - Jul + - Aug + - Sep + - Oct + - Nov + - Dec + day_names: + - Sunday + - Monday + - Tuesday + - Wednesday + - Thursday + - Friday + - Saturday + formats: + default: "%m/%d/%Y" + long: "%B %d, %Y" + short: "%b %d" + month_names: + - + - January + - February + - March + - April + - May + - June + - July + - August + - September + - October + - November + - December + order: + - :year + - :month + - :day + datetime: + distance_in_words: + about_x_hours: + one: about 1 hour + other: about %{count} hours + about_x_months: + one: about 1 month + other: about %{count} months + about_x_years: + one: about 1 year + other: about %{count} years + almost_x_years: + one: almost 1 year + other: almost %{count} years + half_a_minute: half a minute + less_than_x_minutes: + one: less than a minute + other: less than %{count} minutes + less_than_x_seconds: + one: less than 1 second + other: less than %{count} seconds + over_x_years: + one: over 1 year + other: over %{count} years + x_days: + one: 1 day + other: "%{count} days" + x_minutes: + one: 1 minute + other: "%{count} minutes" + x_months: + one: 1 month + other: "%{count} months" + x_seconds: + one: 1 second + other: "%{count} seconds" + units: + hour: + one: hour + other: hours + default_activity_development: Development + default_activity_management: Management + default_activity_other: Other + default_activity_specification: Specification + default_activity_support: Support + default_activity_testing: Testing + default_color_black: Black + default_color_blue: Blue + default_color_blue_dark: Blue (dark) + default_color_blue_light: Blue (light) + default_color_green_dark: Green (dark) + default_color_green_light: Green (light) + default_color_grey_dark: Grey (dark) + default_color_grey_light: Grey (light) + default_color_grey: Grey + default_color_magenta: Magenta + default_color_orange: Orange + default_color_red: Red + default_color_white: White + default_color_yellow: Yellow + default_status_closed: Closed + default_status_confirmed: Confirmed + default_status_developed: Developed + default_status_in_development: In development + default_status_in_progress: In progress + default_status_in_specification: In specification + default_status_in_testing: In testing + default_status_new: New + default_status_on_hold: On hold + default_status_rejected: Rejected + default_status_scheduled: Scheduled + default_status_specified: Specified + default_status_tested: Tested + default_status_test_failed: Test failed + default_status_to_be_scheduled: To be scheduled + default_priority_low: Low + default_priority_normal: Normal + default_priority_high: High + default_priority_immediate: Immediate + default_role_anonymous: Anonymous + default_role_developer: Developer + default_role_project_admin: Project admin + default_role_non_member: Non member + default_role_reader: Reader + default_role_member: Member + default_type: Work Package + default_type_bug: Bug + default_type_deliverable: Deliverable + default_type_epic: Epic + default_type_feature: Feature + default_type_milestone: Milestone + default_type_phase: Phase + default_type_task: Task + default_type_user_story: User story + description_active: Active? + description_attachment_toggle: Show/Hide attachments + description_autocomplete: 'This field uses autocomplete. While typing the title + of a work package you will receive a list of possible candidates. Choose one using + the arrow up and arrow down key and select it with tab or enter. Alternatively + you can enter the work package number directly. + +' + description_available_columns: Available Columns + description_choose_project: Projects + description_compare_from: Compare from + description_compare_to: Compare to + description_current_position: 'You are here:' + description_date_from: Enter start date + description_date_range_interval: Choose range by selecting start and end date + description_date_range_list: Choose range from list + description_date_to: Enter end date + description_enter_number: Enter number + description_enter_text: Enter text + description_filter: Filter + description_filter_toggle: Show/Hide filter + description_category_reassign: Choose category + description_message_content: Message content + description_my_project: You are member + description_notes: द्रष्टव्यहरु + description_parent_work_package: Parent work package of current + description_project_scope: Search scope + description_query_sort_criteria_attribute: Sort attribute + description_query_sort_criteria_direction: Sort direction + description_search: Searchfield + description_select_work_package: Select work package + description_selected_columns: Selected Columns + description_sub_work_package: Sub work package of current + description_toc_toggle: Show/Hide table of contents + description_wiki_subpages_reassign: Choose new parent page + direction: ltr + ee: + upsale: + form_configuration: + description: 'Customize the form configuration with these additional features:' + add_groups: Add new attribute groups + rename_groups: Rename attributes groups + project_filters: + description_html: Upgrade to %{link} to filter and sort on custom fields + enumeration_activities: Activities (time tracking) + enumeration_work_package_priorities: Work package priorities + enumeration_system_activity: System Activity + enumeration_reported_project_statuses: Reported project status + error_auth_source_sso_failed: Single Sign-On (SSO) for user '%{value}' failed + error_can_not_archive_project: 'This project cannot be archived: There is at least + one work package assigned to a version defined in this project.' + error_can_not_delete_entry: Unable to delete entry + error_can_not_delete_custom_field: Unable to delete custom field + error_can_not_delete_type: This type contains work packages and cannot be deleted. + error_can_not_delete_standard_type: Standard types cannot be deleted. + error_can_not_invite_user: Failed to send invitation to user. + error_can_not_remove_role: This role is in use and cannot be deleted. + error_can_not_reopen_work_package_on_closed_version: A work package assigned to + a closed version cannot be reopened + error_check_user_and_role: Please choose a user and a role. + error_cookie_missing: The OpenProject cookie is missing. Please ensure that cookies + are enabled, as this application will not properly function without. + error_custom_option_not_found: Option does not exist. + error_dependent_work_package: 'Error in dependent work package #%{related_id} %{related_subject}: + %{error}' + error_enterprise_activation_user_limit: Your account could not be activated (user + limit reached). Please contact your administrator to gain access. + error_failed_to_delete_entry: Failed to delete this entry. + error_invalid_selected_value: Invalid selected value. + error_invalid_group_by: 'Can''t group by: %{value}' + error_invalid_query_column: 'Invalid query column: %{value}' + error_invalid_sort_criterion: 'Can''t sort by column: %{value}' + error_journal_attribute_not_present: Journal does not contain attribute %{attribute}. + error_pdf_export_too_many_columns: Too many columns selected for the PDF export. + Please reduce the number of columns. + error_pdf_failed_to_export: 'The PDF export could not be saved: %{error}' + error_token_authenticity: Unable to verify Cross-Site Request Forgery token. Did + you try to submit data on multiple browsers or tabs? Please close all tabs and + try again. + error_work_package_done_ratios_not_updated: Work package done ratios not updated. + error_work_package_not_found_in_project: The work package was not found or does + not belong to this project + error_must_be_project_member: must be project member + error_no_default_work_package_status: No default work package status is defined. + Please check your configuration (Go to "Administration -> Work package statuses"). + error_no_type_in_project: No type is associated to this project. Please check the + Project settings. + error_omniauth_registration_timed_out: The registration via an external authentication + provider timed out. Please try again. + error_scm_command_failed: 'An error occurred when trying to access the repository: + %{value}' + error_scm_not_found: The entry or revision was not found in the repository. + error_unable_delete_status: The work package status cannot be deleted since it is + used by at least one work package. + error_unable_delete_default_status: Unable to delete the default work package status. + Please select another default work package status before deleting the current + one. + error_unable_to_connect: Unable to connect (%{value}) + error_unable_delete_wiki: Unable to delete the wiki page. + error_unable_update_wiki: Unable to update the wiki page. + error_workflow_copy_source: Please select a source type or role + error_workflow_copy_target: Please select target type(s) and role(s) + error_menu_item_not_created: Menu item could not be added + error_menu_item_not_saved: Menu item could not be saved + error_wiki_root_menu_item_conflict: 'Can''t rename "%{old_name}" to "%{new_name}" + due to a conflict in the resulting menu item with the existing menu item "%{existing_caption}" + (%{existing_identifier}). + +' + error_external_authentication_failed: An error occured during external authentication. + Please try again. + error_attribute_not_highlightable: 'Attribute(s) not highlightable: %{attributes}' + events: + project: Project edited + changeset: Changeset edited + message: Message edited + news: News + reply: Replied + time_entry: Timelog edited + wiki_page: Wiki page edited + work_package_closed: Work Package closed + work_package_edit: Work Package edited + work_package_note: Work Package note added + export: + format: + atom: Atom + csv: CSV + pdf: PDF + pdf_with_descriptions: PDF with descriptions + pdf_with_descriptions_and_attachments: PDF with descriptions and attachments + pdf_with_attachments: PDF with attachments + extraction: + available: + pdftotext: Pdftotext available (optional) + unrtf: Unrtf available (optional) + catdoc: Catdoc available (optional) + xls2csv: Xls2csv available (optional) + catppt: Catppt available (optional) + tesseract: Tesseract available (optional) + general_csv_decimal_separator: "." + general_csv_encoding: UTF-8 + general_csv_separator: "," + general_first_day_of_week: '7' + general_lang_name: English + general_pdf_encoding: ISO-8859-1 + general_text_no: 'no' + general_text_yes: 'yes' + general_text_No: 'No' + general_text_Yes: 'Yes' + gui_validation_error: 1 error + gui_validation_error_plural: "%{count} errors" + homescreen: + additional: + projects: Newest visible projects in this instance. + no_visible_projects: There are no visible projects in this instance. + users: Newest registered users in this instance. + blocks: + community: OpenProject community + upsale: + become_hero: Become a hero! + title: Upgrade to Enterprise Edition + description: What are the benefits? + more_info: More information + additional_features: Additional powerful premium features + professional_support: Professional support from the OpenProject experts + you_contribute: Developers need to pay their bills, too. With Enterprise Edition + you substantially contribute to this Open-Source community effort. + links: + upgrade_enterprise_edition: Upgrade to Enterprise Edition + user_guides: User guides + faq: FAQ + glossary: Glossary + shortcuts: Shortcuts + forums: Forums + blog: OpenProject blog + boards: Community forum + newsletter: Security alerts / Newsletter + links: + configuration_guide: Configuration guide + instructions_after_registration: You can sign in as soon as your account has been + activated by clicking %{signin}. + instructions_after_logout: You can sign in again by clicking %{signin}. + instructions_after_error: You can try to sign in again by clicking %{signin}. If + the error persists, ask your admin for help. + my_account: + access_tokens: + no_results: + title: No access tokens to display + description: All of them have been disabled. They can be re-enabled in the + administration menu. + access_token: Access token + headers: + action: Action + expiration: Expires + indefinite_expiration: Never + label_accessibility: Accessibility + label_account: खाता + label_active: Active + label_activate_user: Activate user + label_active_in_new_projects: Active in new projects + label_activity: Activity + label_add_edit_translations: Add and edit translations + label_add_another_file: Add another file + label_add_columns: Add selected columns + label_add_note: Add a note + label_add_related_work_packages: Add related work packages + label_add_subtask: Add subtask + label_added: added + label_added_time_by: Added by %{author} %{age} ago + label_additional_workflow_transitions_for_assignee: Additional transitions allowed + when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed + when the user is the author + label_administration: Administration + label_advanced_settings: Advanced settings + label_age: Age + label_ago: days ago + label_all: all + label_all_time: all time + label_all_words: All words + label_all_open_wps: All open + label_always_visible: Always displayed + label_announcement: Announcement + label_api_access_key: API access key + label_api_access_key_created_on: API access key created %{value} ago + label_api_access_key_type: API + label_applied_status: Applied status + label_archive_project: Archive project + label_ascending: Ascending + label_assigned_to_me_work_packages: Work packages assigned to me + label_associated_revisions: Associated revisions + label_attachment_delete: Delete file + label_attachment_new: New file + label_attachment_plural: Files + label_attribute: Attribute + label_attribute_plural: Attributes + label_auth_source: Authentication mode + label_auth_source_new: New authentication mode + label_auth_source_plural: Authentication modes + label_authentication: Authentication + label_available_project_work_package_categories: Available work package categories + label_available_project_work_package_types: उपलब्ध कार्य प्याकेजको प्रकारहरू + label_available_project_boards: Available boards + label_available_project_versions: Available versions + label_available_project_repositories: Available repositories + label_api_documentation: API documentation + label_between: between + label_blocked_by: blocked by + label_blocks: blocks + label_blog: Blog + label_board_locked: Locked + label_board_new: New forum + label_board_plural: Forums + label_board_sticky: Sticky + label_boolean: Boolean + label_branch: Branch + label_browse: Browse + label_bulk_edit_selected_work_packages: Bulk edit selected work packages + label_calendar: Calendar + label_calendar_show: Show Calendar + label_category: Category + label_consent_settings: User Consent + label_wiki_menu_item: Wiki menu item + label_select_main_menu_item: Select new main menu item + label_select_project: Select a project + label_required_disk_storage: Required disk storage + label_send_invitation: Send invitation + label_change_plural: Changes + label_change_properties: Change properties + label_change_status: Change status + label_change_status_of_user: 'Change status of #{username}' + label_change_view_all: View all changes + label_changes_details: Details of all changes + label_changeset: Changeset + label_changeset_id: Changeset ID + label_changeset_plural: Changesets + label_checked: checked + label_check_uncheck_all_in_column: Check/Uncheck all in column + label_check_uncheck_all_in_row: Check/Uncheck all in row + label_child_element: Child element + label_chronological_order: In chronological order + label_close_versions: Close completed versions + label_closed_work_packages: closed + label_collapse: Collapse + label_collapsed_click_to_show: Collapsed. Click to show + label_configuration: configuration + label_comment_add: Add a comment + label_comment_added: Comment added + label_comment_delete: Delete comments + label_comment_plural: Comments + label_commits_per_author: Commits per author + label_commits_per_month: Commits per month + label_confirmation: Confirmation + label_contains: contains + label_content: Content + label_copied: copied + label_copy_to_clipboard: Copy to clipboard + label_copy_same_as_target: Same as target + label_copy_source: Source + label_copy_target: Target + label_copy_workflow_from: Copy workflow from + label_copy_project: Copy project + label_core_version: Core version + label_current_status: Current status + label_current_version: Current version + label_custom_field_add_no_type: Add this field to a work package type + label_custom_field_new: New custom field + label_custom_field_plural: Custom fields + label_custom_field_default_type: Empty type + label_custom_style: Design + label_date: Date + label_date_and_time: Date and time + label_date_from: From + label_date_from_to: From %{start} to %{end} + label_date_range: Date range + label_date_to: To + label_day_plural: days + label_default: Default + label_delete_user: Delete user + label_delete_project: Delete project + label_deleted: deleted + label_deleted_custom_field: "(deleted custom field)" + label_descending: Descending + label_details: Details + label_development_roadmap: Development roadmap + label_diff: diff + label_diff_inline: inline + label_diff_side_by_side: side by side + label_disabled: disabled + label_display: Display + label_display_per_page: 'Per page: %{value}' + label_display_used_statuses_only: Only display statuses that are used by this type + label_download: "%{count} Download" + label_download_plural: "%{count} Downloads" + label_downloads_abbr: D/L + label_duplicated_by: duplicated by + label_duplicate: duplicate + label_duplicates: duplicates + label_edit: Edit + label_enable_multi_select: Toggle multiselect + label_enabled_project_custom_fields: Enabled custom fields + label_enabled_project_modules: Enabled modules + label_enabled_project_activities: Enabled time tracking activities + label_end_to_end: end to end + label_end_to_start: end to start + label_enumeration_new: New enumeration value + label_enumeration_value: Enumeration value + label_enumerations: Enumerations + label_enterprise: Enterprise + label_enterprise_active_users: "%{current}/%{limit} booked active users" + label_enterprise_edition: Enterprise Edition + label_environment: Environment + label_estimates_and_time: Estimates and time + label_equals: is + label_everywhere: सबैतिर + label_example: Example + label_export_to: 'Also available in:' + label_expanded_click_to_collapse: Expanded. Click to collapse + label_f_hour: "%{value} hour" + label_f_hour_plural: "%{value} hours" + label_feed_plural: Feeds + label_feeds_access_key: RSS access key + label_feeds_access_key_created_on: RSS access key created %{value} ago + label_feeds_access_key_type: RSS + label_file_added: File added + label_file_plural: Files + label_filter_add: Add filter + label_filter_plural: Filters + label_filters_toggle: Show/hide filters + label_float: Float + label_folder: Folder + label_follows: follows + label_force_user_language_to_default: Set language of users having a non allowed + language to default + label_form_configuration: Form configuration + label_gantt: Gantt + label_gantt_chart: Gantt chart + label_general: General + label_generate_key: Generate a key + label_git_path: Path to .git directory + label_greater_or_equal: ">=" + label_group_by: Group by + label_group_new: New group + label_group: Group + label_group_named: Group %{name} + label_group_plural: Groups + label_help: Help + label_here: here + label_hide: Hide + label_history: History + label_hierarchy_leaf: Hierarchy leaf + label_home: Home + label_subject_or_id: Subject or ID + label_impressum: Impressum + label_in: in + label_in_less_than: in less than + label_in_more_than: in more than + label_inactive: Inactive + label_incoming_emails: Incoming emails + label_includes: includes + label_index_by_date: Index by date + label_index_by_title: Index by title + label_information: Information + label_information_plural: Information + label_integer: Integer + label_internal: Internal + label_introduction_video: Introduction video + label_invite_user: Invite user + label_show_hide: Show/hide + label_show_all_registered_users: Show all registered users + label_journal: Journal + label_journal_diff: Description Comparison + label_language: Language + label_jump_to_a_project: Jump to a project... + label_keyword_plural: शब्दकुञ्जी + label_language_based: Based on user's language + label_last_activity: Last activity + label_last_change_on: Last change on + label_last_changes: last %{count} changes + label_last_login: Last login + label_last_month: last month + label_last_n_days: last %{count} days + label_last_week: last week + label_latest_revision: Latest revision + label_latest_revision_plural: Latest revisions + label_ldap_authentication: LDAP authentication + label_less_or_equal: "<=" + label_less_than_ago: less than days ago + label_list: List + label_loading: Loading... + label_lock_user: Lock user + label_logged_as: Logged in as + label_login: Sign in + label_custom_logo: Custom logo + label_custom_favicon: Custom favicon + label_custom_touch_icon: Custom touch icon + label_logout: Sign out + label_main_menu: Side Menu + label_manage_groups: Manage groups + label_managed_repositories_vendor: Managed %{vendor} repositories + label_max_size: Maximum size + label_me: me + label_member_new: New member + label_member_plural: Members + label_view_all_members: View all members + label_menu_item_name: Name of menu item + label_message: Message + label_message_last: Last message + label_message_new: New message + label_message_plural: Messages + label_message_posted: Message added + label_min_max_length: Min - Max length + label_minute_plural: minutes + label_missing_api_access_key: Missing API access key + label_missing_feeds_access_key: Missing RSS access key + label_modification: "%{count} change" + label_modified: modified + label_module_plural: Modules + label_modules: Modules + label_month: Month + label_months_from: months from + label_more: More + label_more_than_ago: more than days ago + label_move_work_package: Move work package + label_my_account: My account + label_my_account_data: My account data + label_my_page: My page + label_my_projects: My projects + label_my_queries: My custom queries + label_never: Never + label_new: New + label_new_statuses_allowed: New statuses allowed + label_news_added: News added + label_news_comment_added: Comment added to a news + label_news_latest: Latest news + label_news_new: Add news + label_news_edit: Edit news + label_news_plural: News + label_news_view_all: View all news + label_next: Next + label_next_week: Next week + label_no_change_option: "(No change)" + label_no_data: No data to display + label_no_parent_page: No parent page + label_nothing_display: Nothing to display + label_nobody: nobody + label_none: none + label_none_parentheses: "(none)" + label_not_contains: doesn't contain + label_not_equals: is not + label_notify_member_plural: Email updates + label_on: 'on' + label_open_menu: Open menu + label_open_work_packages: open + label_open_work_packages_plural: open + label_openproject_website: OpenProject website + label_optional_description: Description + label_options: Options + label_other: Other + label_overall_activity: Overall activity + label_overall_spent_time: Overall spent time + label_overview: Overview + label_page_title: Page title + label_part_of: part of + label_password_lost: Forgot your password? + label_password_rule_lowercase: Lowercase + label_password_rule_numeric: Numeric Characters + label_password_rule_special: Special Characters + label_password_rule_uppercase: Uppercase + label_path_encoding: Path encoding + label_pdf_with_descriptions: PDF with Descriptions + label_per_page: Per page + label_people: People + label_permissions: Permissions + label_permissions_report: Permissions report + label_personalize_page: Personalize this page + label_planning: Planning + label_please_login: Please log in + label_plugins: Plugins + label_precedes: precedes + label_preferences: Preferences + label_preview: Preview + label_previous: Previous + label_previous_week: Previous week + label_principal_invite_via_email: " or invite new users via email" + label_principal_search: Add existing users or groups + label_privacy_policy: Data privacy and security policy + label_product_version: Product version + label_professional_support: Professional support + label_profile: Profile + label_project_all: All Projects + label_project_count: Total number of projects + label_project_copy_notifications: Send email notifications during the project copy + label_project_latest: Latest projects + label_project_default_type: Allow empty type + label_project_hierarchy: Project hierarchy + label_project_new: New project + label_project_plural: Projects + label_project_settings: Project settings + label_projects_storage_information: "%{count} projects using %{storage} disk storage" + label_project_view_all: View all projects + label_project_show_details: Show project details + label_project_hide_details: प्रोजेक्ट विवरण लुकाउनुहोस् + label_public_projects: Public projects + label_query_new: New query + label_query_plural: Custom queries + label_query_menu_item: Query menu item + label_read: Read... + label_register: Create a new account + label_register_with_developer: Register as developer + label_registered_on: Registered on + label_registration_activation_by_email: account activation by email + label_registration_automatic_activation: automatic account activation + label_registration_manual_activation: manual account activation + label_related_work_packages: Related work packages + label_relates: related to + label_relates_to: related to + label_relation_delete: Delete relation + label_relation_new: New relation + label_release_notes: Release notes + label_remove_columns: Remove selected columns + label_renamed: renamed + label_reply_plural: Replies + label_report: Report + label_report_bug: Report a bug + label_report_plural: Reports + label_reported_work_packages: Reported work packages + label_reporting: Reporting + label_reporting_plural: Reportings + label_repository: Repository + label_repository_root: Repository root + label_repository_plural: Repositories + label_required: required + label_requires: requires + label_result_plural: Results + label_reverse_chronological_order: In reverse chronological order + label_revision: Revision + label_revision_id: Revision %{value} + label_revision_plural: Revisions + label_roadmap: Roadmap + label_roadmap_edit: Edit roadmap %{name} + label_roadmap_due_in: Due in %{value} + label_roadmap_no_work_packages: No work packages for this version + label_roadmap_overdue: "%{value} late" + label_role_and_permissions: Roles and permissions + label_role_new: New role + label_role_plural: भूमिकाहरु + label_role_search: Assign role to new members + label_scm: SCM + label_search: Search + label_send_information: Send account information to the user + label_send_test_email: Send a test email + label_settings: Settings + label_system_settings: System settings + label_show_completed_versions: Show completed versions + label_sort: Sort + label_sort_by: Sort by %{value} + label_sorted_by: sorted by %{value} + label_sort_higher: Move up + label_sort_highest: Move to top + label_sort_lower: Move down + label_sort_lowest: Move to bottom + label_spent_time: Spent time + label_start_to_end: start to end + label_start_to_start: start to start + label_statistics: Statistics + label_status: Status + label_status_updated: Work package status updated + label_stay_logged_in: Stay logged in + label_storage_free_space: Remaining disk space + label_storage_used_space: Used disk space + label_storage_group: Storage filesystem %{identifier} + label_storage_for: Encompasses storage for + label_string: Text + label_subproject: Subproject + label_subproject_new: New subproject + label_subproject_plural: Subprojects + label_subtask_plural: Subtasks + label_summary: Summary + label_system: System + label_system_storage: Storage information + label_table_of_contents: Table of contents + label_tag: Tag + label_text: Long text + label_this_month: this month + label_this_week: this week + label_this_year: this year + label_time_entry_plural: Spent time + label_time_sheet_menu: Time sheet + label_time_tracking: Time tracking + label_today: today + label_top_menu: Top Menu + label_topic_plural: Topics + label_total: Total + label_type_new: New type + label_type_plural: Types + label_ui: User Interface + label_update_work_package_done_ratios: Update work package done ratios + label_updated_time: Updated %{value} ago + label_updated_time_at: "%{author} %{age}" + label_updated_time_by: Updated by %{author} %{age} ago + label_used_by: Used by + label_used_by_types: Used by types + label_used_in_projects: Used in projects + label_user: User + label_user_named: User %{name} + label_user_activity: "%{value}'s activity" + label_user_anonymous: Anonymous + label_user_mail_option_all: For any event on all my projects + label_user_mail_option_none: No events + label_user_mail_option_only_assigned: Only for things I am assigned to + label_user_mail_option_only_my_events: Only for things I watch or I'm involved in + label_user_mail_option_only_owner: Only for things I am the owner of + label_user_mail_option_selected: For any event on the selected projects only + label_user_new: New user + label_user_plural: Users + label_user_search: Search for user + label_version_new: New version + label_version_plural: Versions + label_version_sharing_descendants: With subprojects + label_version_sharing_hierarchy: With project hierarchy + label_version_sharing_none: Not shared + label_version_sharing_system: With all projects + label_version_sharing_tree: With project tree + label_videos: Videos + label_view_all_revisions: View all revisions + label_view_diff: View differences + label_view_revisions: View revisions + label_watched_work_packages: Watched work packages + label_what_is_this: यो के हो? + label_week: Week + label_wiki_content_added: Wiki page added + label_wiki_content_updated: Wiki page updated + label_wiki_toc: Table of Contents + label_wiki_dont_show_menu_item: Do not show this wikipage in project navigation + label_wiki_edit: Wiki edit + label_wiki_edit_plural: Wiki edits + label_wiki_page_attachments: Wiki page attachments + label_wiki_page_id: Wiki page ID + label_wiki_navigation: Wiki navigation + label_wiki_page: Wiki page + label_wiki_page_plural: Wiki pages + label_wiki_show_index_page_link: Show submenu item 'Table of Contents' + label_wiki_show_menu_item: Show as menu item in project navigation + label_wiki_show_new_page_link: Show submenu item 'Create new child page' + label_wiki_show_submenu_item: 'Show as submenu item of ' + label_wiki_start: Start page + label_work_package: Work package + label_work_package_added: Work package added + label_work_package_attachments: Work package attachments + label_work_package_category_new: New category + label_work_package_category_plural: Work package categories + label_work_package_hierarchy: Work package hierarchy + label_work_package_new: New work package + label_work_package_note_added: Work package note added + label_work_package_edit: Edit work package %{name} + label_work_package_plural: Work packages + label_work_package_priority_updated: Work package priority updated + label_work_package_status: Work package status + label_work_package_status_new: New status + label_work_package_status_plural: Work package statuses + label_work_package_types: Work package types + label_work_package_updated: Work package updated + label_work_package_tracking: Work package tracking + label_work_package_view_all: View all work packages + label_work_package_view_all_assigned_to_me: View all work packages assigned to me + label_work_package_view_all_reported_by_me: View all work packages reported by me + label_work_package_view_all_responsible_for: View all work packages that I am accountable + for + label_work_package_view_all_watched: View all watched work packages + label_work_package_watchers: Watchers + label_workflow: Workflow + label_workflow_plural: Workflows + label_workflow_summary: Summary + label_x_closed_work_packages_abbr: + one: 1 closed + other: "%{count} closed" + zero: 0 closed + label_x_comments: + one: 1 comment + other: "%{count} comments" + zero: no comments + label_x_open_work_packages_abbr: + one: 1 open + other: "%{count} open" + zero: 0 open + label_x_open_work_packages_abbr_on_total: + one: 1 open / %{total} + other: "%{count} open / %{total}" + zero: 0 open / %{total} + label_x_projects: + one: 1 project + other: "%{count} projects" + zero: no projects + label_year: Year + label_yesterday: yesterday + label_keyboard_function: Function + label_keyboard_shortcut: Shortcut + label_keyboard_accesskey: Accesskey + label_keyboard_shortcut_help_heading: Available Keyboard Shortcuts + label_keyboard_shortcut_within_project: 'Project related shortcuts:' + label_keyboard_shortcut_global_shortcuts: 'Global shortcuts:' + label_keyboard_shortcut_some_pages_only: 'Special shortcuts:' + label_keyboard_shortcut_search_global: Global search + label_keyboard_shortcut_search_project: Find a project + label_keyboard_shortcut_go_my_page: Go to my page + label_keyboard_shortcut_show_help: Show this help message + label_keyboard_shortcut_go_overview: Go to project overview + label_keyboard_shortcut_go_work_package: Go to project work packages + label_keyboard_shortcut_go_wiki: Go to project wiki + label_keyboard_shortcut_go_activity: Go to project activities + label_keyboard_shortcut_go_calendar: Go to project calendar + label_keyboard_shortcut_go_news: Go to project news + label_keyboard_shortcut_go_timelines: Go to timelines + label_keyboard_shortcut_new_work_package: Create new work package + label_keyboard_shortcut_details_package: Show work packages details pane + label_keyboard_shortcut_go_edit: Go to edit the current item (on detail pages only) + label_keyboard_shortcut_open_more_menu: Open more-menu (on detail pages only) + label_keyboard_shortcut_go_preview: Go to preview the current edit (on edit pages + only) + label_keyboard_shortcut_focus_previous_item: Focus previous list element (on some + lists only) + label_keyboard_shortcut_focus_next_item: Focus next list element (on some lists + only) + auth_source: + using_abstract_auth_source: Can't use an abstract authentication source. + ldap_error: 'LDAP-Error: %{error_message}' + ldap_auth_failed: Could not authenticate at the LDAP-Server. + macro_execution_error: Error executing the macro %{macro_name} + macro_unavailable: Macro %{macro_name} cannot be displayed. + macros: + placeholder: "[Placeholder] Macro %{macro_name}" + errors: + missing_or_invalid_parameter: Missing or invalid macro parameter. + legacy_warning: + timeline: This legacy timeline macro has been removed and is no longer available. + You can replace the functionality with an embedded table macro. + include_wiki_page: + errors: + page_not_found: Cannot find the wiki page '%{name}'. + circular_inclusion: Circular inclusion of pages detected. + create_work_package_link: + errors: + no_project_context: Calling create_work_package_link macro from outside project + context. + invalid_type: No type found with name '%{type}' in project '%{project}'. + link_name: New work package + link_name_type: New %{type_name} + mail: + actions: Actions + mail_body_account_activation_request: 'A new user (%{value}) has registered. The + account is pending your approval:' + mail_body_account_information: Your account information + mail_body_account_information_external: You can use your %{value} account to log + in. + mail_body_lost_password: 'To change your password, click on the following link:' + mail_body_register: 'To activate your account, click on the following link:' + mail_body_reminder: "%{count} work package(s) that are assigned to you are due in + the next %{days} days:" + mail_body_wiki_content_added: The '%{id}' wiki page has been added by %{author}. + mail_body_wiki_content_updated: The '%{id}' wiki page has been updated by %{author}. + mail_subject_account_activation_request: "%{value} account activation request" + mail_subject_lost_password: Your %{value} password + mail_subject_register: Your %{value} account activation + mail_subject_reminder: "%{count} work package(s) due in the next %{days} days" + mail_subject_wiki_content_added: "'%{id}' wiki page has been added" + mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" + mail_user_activation_limit_reached: + subject: User activation limit reached + message: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. + steps: + label: 'To allow the user to sign in you can either: ' + a: Upgrade your payment plan ([here](upgrade_url)) + b: Lock or delete an existing user ([here](users_url)) + more_actions: More functions + noscript_description: You need to activate JavaScript in order to use OpenProject! + noscript_heading: JavaScript disabled + noscript_learn_more: Learn more + notice_accessibility_mode: The accessibility mode can be enabled in your [account + settings](url). + notice_account_activated: Your account has been activated. You can now log in. + notice_account_already_activated: The account has already been activated. + notice_account_invalid_token: Invalid activation token + notice_account_invalid_credentials: Invalid user or password + notice_account_invalid_credentials_or_blocked: Invalid user or password or the account + is blocked due to multiple failed login attempts. If so, it will be unblocked + automatically in a short time. + notice_account_lost_email_sent: An email with instructions to choose a new password + has been sent to you. + notice_account_new_password_forced: A new password is required. + notice_account_password_expired: Your password expired after %{days} days. Please + set a new one. + notice_account_password_updated: Password was successfully updated. + notice_account_pending: Your account was created and is now pending administrator + approval. + notice_account_register_done: Account was successfully created. To activate your + account, click on the link that was emailed to you. + notice_account_unknown_email: Unknown user. + notice_account_update_failed: Account setting could not be saved. Please have a + look at your account page. + notice_account_updated: Account was successfully updated. + notice_account_other_session_expired: तपाईंको खातामा बाँधिएका बाकीं सबै सत्रहरू + अमान्य गरिएको छ। + notice_account_wrong_password: Wrong password + notice_account_registered_and_logged_in: Welcome, your account has been activated. + You are logged in now. + notice_activation_failed: The account could not be activated. + notice_auth_stage_verification_error: Could not verify stage '%{stage}'. + notice_auth_stage_wrong_stage: Expected to finish authentication stage '%{expected}', + but '%{actual}' returned. + notice_auth_stage_error: Authentication stage '%{stage}' failed. + notice_can_t_change_password: This account uses an external authentication source. + Impossible to change the password. + notice_custom_options_deleted: Option '%{option_value}' and its %{num_deleted} occurrences + were deleted. + notice_email_error: An error occurred while sending mail (%{value}) + notice_email_sent: An email was sent to %{value} + notice_failed_to_save_work_packages: 'Failed to save %{count} work package(s) on + %{total} selected: %{ids}.' + notice_failed_to_save_members: 'Failed to save member(s): %{errors}.' + notice_file_not_found: The page you were trying to access doesn't exist or has been + removed. + notice_forced_logout: You have been automatically logged out after %{ttl_time} minutes + of inactivity. + notice_internal_server_error: An error occurred on the page you were trying to access. + If you continue to experience problems please contact your %{app_title} administrator + for assistance. + notice_work_package_done_ratios_updated: Work package done ratios updated. + notice_locking_conflict: Information has been updated by at least one other user + in the meantime. + notice_locking_conflict_additional_information: The update(s) came from %{users}. + notice_locking_conflict_reload_page: Please reload the page, review the changes + and reapply your updates. + notice_member_added: Added %{name} to the project. + notice_members_added: Added %{number} users to the project. + notice_member_removed: Removed %{user} from project. + notice_member_deleted: "%{user} has been removed from the project and deleted." + notice_no_principals_found: No results found. + notice_bad_request: Bad Request. + notice_not_authorized: You are not authorized to access this page. + notice_not_authorized_archived_project: The project you're trying to access has + been archived. + notice_password_confirmation_failed: Your password is not correct. Cannot continue. + notice_principals_found_multiple: "There are %{number} results found. \n Tab to + focus the first result." + notice_principals_found_single: "There is one result. \n Tab to focus it." + notice_project_not_deleted: The project wasn't deleted. + notice_successful_connection: Successful connection. + notice_successful_create: Successful creation. + notice_successful_delete: Successful deletion. + notice_successful_update: Successful update. + notice_to_many_principals_to_display: |- + There are too many results. + Narrow down the search by typing in the name of the new member (or group). + notice_unable_delete_time_entry: Unable to delete time log entry. + notice_unable_delete_version: Unable to delete version. + notice_user_missing_authentication_method: User has yet to choose a password or + another way to sign in. + notice_user_invitation_resent: An invitation has been sent to %{email}. + present_access_key_value: 'Your %{key_name} is: %{value}' + notice_automatic_set_of_standard_type: Set standard type automatically. + notice_logged_out: You have been logged out. + notice_wont_delete_auth_source: The authentication mode cannot be deleted as long + as there are still users using it. + notice_project_cannot_update_custom_fields: 'You cannot update the project''s available + custom fields. The project is invalid: %{errors}' + notice_attachment_migration_wiki_page: 'This page was generated automatically during + the update of OpenProject. It contains all attachments previously associated with + the %{container_type} "%{container_name}". + +' + number: + format: + delimiter: '' + precision: 3 + separator: "." + human: + format: + delimiter: '' + precision: 1 + storage_units: + format: "%n %u" + units: + byte: + one: Byte + other: Bytes + gb: GB + kb: kB + mb: MB + tb: TB + onboarding: + heading_getting_started: Get an overview + text_getting_started_description: Get a quick overview of project management and + team collaboration with OpenProject. + text_show_again: You can restart this video from the help menu + welcome: Welcome to OpenProject + select_language: Please select your language + permission_add_work_package_notes: Add notes + permission_add_work_packages: Add work packages + permission_add_messages: Post messages + permission_add_project: Create project + permission_add_subprojects: Create subprojects + permission_add_work_package_watchers: Add watchers + permission_browse_repository: Read-only access to repository (browse and checkout) + permission_change_wiki_parent_page: Change parent wiki page + permission_comment_news: Comment news + permission_commit_access: Read/write access to repository (commit) + permission_copy_projects: Copy projects + permission_delete_work_package_watchers: Delete watchers + permission_delete_work_packages: Delete work packages + permission_delete_messages: Delete messages + permission_delete_own_messages: Delete own messages + permission_delete_reportings: Delete reportings + permission_delete_timelines: Delete timelines + permission_delete_wiki_pages: Delete wiki pages + permission_delete_wiki_pages_attachments: Delete attachments + permission_edit_work_package_notes: Edit notes + permission_edit_work_packages: Edit work packages + permission_edit_messages: Edit messages + permission_edit_own_work_package_notes: Edit own notes + permission_edit_own_messages: Edit own messages + permission_edit_own_time_entries: Edit own time logs + permission_edit_project: Edit project + permission_edit_reportings: Edit reportings + permission_edit_time_entries: Edit time logs + permission_edit_timelines: Edit timelines + permission_edit_wiki_pages: Edit wiki pages + permission_export_work_packages: Export work packages + permission_export_wiki_pages: Export wiki pages + permission_list_attachments: List attachments + permission_log_time: Log spent time + permission_manage_boards: Manage forums + permission_manage_categories: Manage work package categories + permission_manage_work_package_relations: Manage work package relations + permission_manage_members: Manage members + permission_manage_news: Manage news + permission_manage_project_activities: Manage project activities + permission_manage_public_queries: Manage public views + permission_manage_repository: Manage repository + permission_manage_subtasks: Manage subtasks + permission_manage_versions: Manage versions + permission_manage_wiki: Manage wiki + permission_manage_wiki_menu: Manage wiki menu + permission_move_work_packages: Move work packages + permission_protect_wiki_pages: Protect wiki pages + permission_rename_wiki_pages: Rename wiki pages + permission_save_queries: Save views + permission_select_project_modules: Select project modules + permission_manage_types: Select types + permission_view_calendar: View calendar + permission_view_changesets: View repository revisions in OpenProject + permission_view_commit_author_statistics: View commit author statistics + permission_view_work_package_watchers: View watchers list + permission_view_work_packages: View work packages + permission_view_messages: View messages + permission_view_members: View members + permission_view_reportings: View reportings + permission_view_time_entries: View spent time + permission_view_timelines: View timelines + permission_view_wiki_edits: View wiki history + permission_view_wiki_pages: View wiki + placeholders: + default: "-" + project: + destroy: + confirmation: If you continue, the project %{identifier} and all related data + will be permanently destroyed. + info: Deleting the project is an irreversible action. + project_verification: Enter the project's name %{name} to verify the deletion. + subprojects_confirmation: 'Its subproject(s): %{value} will also be deleted.' + title: Delete the project %{name} + identifier: + warning_one: Members of the project will have to relocate the project's repositories. + warning_two: Existing links to the project will no longer work. + title: Change the project's identifier + archive: + are_you_sure: Are you sure you want to archive the project '%{name}'? + project_module_activity: Activity + project_module_boards: Forums + project_module_calendar: Calendar + project_module_work_package_tracking: Work package tracking + project_module_news: News + project_module_repository: Repository + project_module_time_tracking: Time tracking + project_module_timelines: Timelines + project_module_wiki: Wiki + query: + attribute_and_direction: "%{attribute} (%{direction})" + query_fields: + active_or_archived: Active or archived + assigned_to_role: Assignee's role + member_of_group: Assignee's group + assignee_or_group: Assignee or belonging group + subproject_id: Subproject + name_or_identifier: Name or identifier + repositories: + at_identifier: at %{identifier} + atom_revision_feed: Atom revision feed + autofetch_information: |- + Check this if you want repositories to be updated automatically when accessing the repository module page. + This encompasses the retrieval of commits from the repository and refreshing the required disk storage. + checkout: + access: + readwrite: Read + Write + read: Read-only + none: No checkout access, you may only view the repository through this application. + access_permission: Your permissions on this repository + url: Checkout URL + base_url_text: |- + The base URL to use for generating checkout URLs (e.g., https://myserver.example.org/repos/). + Note: The base URL is only used for rewriting checkout URLs in managed repositories. Other repositories are not altered. + default_instructions: + git: |- + The data contained in this repository can be downloaded to your computer with Git. + Please consult the documentation of Git if you need more information on the checkout procedure and available clients. + subversion: |- + The data contained in this repository can be downloaded to your computer with Subversion. + Please consult the documentation of Subversion if you need more information on the checkout procedure and available clients. + enable_instructions_text: Displays checkout instructions defined below on all + repository-related pages. + instructions: Checkout instructions + show_instructions: Display checkout instructions + text_instructions: This text is displayed alongside the checkout URL for guidance + on how to check out the repository. + not_available: Checkout instructions are not defined for this repository. Ask + your administrator to enable them for this repository in the system settings. + create_managed_delay: 'Please note: The repository is managed, it is created asynchronously + on the disk and will be available shortly.' + create_successful: The repository has been registered. + delete_sucessful: The repository has been deleted. + destroy: + confirmation: If you continue, this will permanently delete the managed repository. + info: Deleting the repository is an irreversible action. + info_not_managed: 'Note: This will NOT delete the contents of this repository, + as it is not managed by OpenProject.' + managed_path_note: 'The following directory will be erased: %{path}' + repository_verification: Enter the project's identifier %{identifier} to verify + the deletion of its repository. + subtitle: Do you really want to delete the %{repository_type} of the project + %{project_name}? + subtitle_not_managed: Do you really want to remove the linked %{repository_type} + %{url} from the project %{project_name}? + title: Delete the %{repository_type} + title_not_managed: Remove the linked %{repository_type}? + errors: + build_failed: Unable to create the repository with the selected configuration. + %{reason} + managed_delete: Unable to delete the managed repository. + managed_delete_local: 'Unable to delete the local repository on filesystem at + ''%{path}'': %{error_message}' + empty_repository: The repository exists, but is empty. It does not contain any + revisions yet. + exists_on_filesystem: The repository directory already exists in the filesystem. + filesystem_access_failed: 'An error occurred while accessing the repository + in the filesystem: %{message}' + not_manageable: This repository vendor cannot be managed by OpenProject. + path_permission_failed: 'An error occurred trying to create the following path: + %{path}. Please ensure that OpenProject may write to that folder.' + unauthorized: You're not authorized to access the repository or the credentials + are invalid. + unavailable: The repository is unavailable. + exception_title: 'Cannot access the repository: %{message}' + disabled_or_unknown_type: The selected type %{type} is disabled or no longer + available for the SCM vendor %{vendor}. + disabled_or_unknown_vendor: The SCM vendor %{vendor} is disabled or no longer + available. + remote_call_failed: 'Calling the managed remote failed with message ''%{message}'' + (Code: %{code})' + remote_invalid_response: Received an invalid response from the managed remote. + remote_save_failed: Could not save the repository with the parameters retrieved + from the remote. + git: + instructions: + managed_url: This is the URL of the managed (local) Git repository. + path: Specify the path to your local Git repository ( e.g., %{example_path} + ). You can also use remote repositories which are cloned to a local copy + by using a value starting with http(s):// or file://. + path_encoding: 'Override Git path encoding (Default: UTF-8)' + local_title: Link existing local Git repository + local_url: Local URL + local_introduction: If you have an existing local Git repository, you can link + it with OpenProject to access it from within the application. + managed_introduction: Let OpenProject create and integrate a local Git repository + automatically. + managed_title: Git repository integrated into OpenProject + managed_url: Managed URL + path: Path to Git repository + path_encoding: Path encoding + go_to_revision: Go to revision + managed_remote: Managed repositories for this vendor are handled remotely. + managed_remote_note: Information on the URL and path of this repository is not + available prior to its creation. + managed_url: Managed URL + settings: + automatic_managed_repos_disabled: Disable automatic creation + automatic_managed_repos: Automatic creation of managed repositories + automatic_managed_repos_text: By setting a vendor here, newly created projects + will automatically receive a managed repository of this vendor. + scm_vendor: Source control management system + scm_type: Repository type + scm_types: + local: Link existing local repository + existing: Link existing repository + managed: Create new repository in OpenProject + storage: + not_available: Disk storage consumption is not available for this repository. + update_timeout: |- + Keep the last required disk space information for a repository for N minutes. + As counting the required disk space of a repository may be costly, increase this value to reduce performance impact. + subversion: + existing_title: Existing Subversion repository + existing_introduction: If you have an existing Subversion repository, you can + link it with OpenProject to access it from within the application. + existing_url: Existing URL + instructions: + managed_url: This is the URL of the managed (local) Subversion repository. + url: |- + Enter the repository URL. This may either target a local repository (starting with %{local_proto} ), or a remote repository. + The following URL schemes are supported: + managed_title: Subversion repository integrated into OpenProject + managed_introduction: Let OpenProject create and integrate a local Subversion + repository automatically. + managed_url: Managed URL + password: Repository Password + username: Repository username + truncated: Sorry, we had to truncate this directory to %{limit} files. %{truncated} + entries were omitted from the list. + named_repository: "%{vendor_name} repository" + update_settings_successful: The settings have been sucessfully saved. + url: URL to repository + warnings: + cannot_annotate: This file cannot be annotated. + search_input_placeholder: Search ... + setting_email_delivery_method: Email delivery method + setting_sendmail_location: Location of the sendmail executable + setting_smtp_enable_starttls_auto: Automatically use STARTTLS if available + setting_smtp_ssl: Use SSL connection + setting_smtp_address: SMTP server + setting_smtp_port: SMTP port + setting_smtp_authentication: SMTP authentication + setting_smtp_user_name: SMTP username + setting_smtp_password: SMTP password + setting_smtp_domain: SMTP HELLO domain + setting_activity_days_default: Days displayed on project activity + setting_app_subtitle: Application subtitle + setting_app_title: Application title + setting_attachment_max_size: Attachment max. size + setting_autofetch_changesets: Autofetch repository changes + setting_autologin: Autologin + setting_available_languages: Available languages + setting_bcc_recipients: Blind carbon copy recipients (bcc) + setting_brute_force_block_after_failed_logins: Block user after this number of failed + login attempts + setting_brute_force_block_minutes: Time the user is blocked for + setting_cache_formatted_text: Cache formatted text + setting_use_wysiwyg_description: Select to enable CKEditor5 WYSIWYG editor for all + users by default. CKEditor has limited functionality for GFM Markdown. + setting_column_options: Customize the appearance of the work package lists + setting_commit_fix_keywords: Fixing keywords + setting_commit_logs_encoding: Commit messages encoding + setting_commit_logtime_activity_id: Activity for logged time + setting_commit_logtime_enabled: Enable time logging + setting_commit_ref_keywords: Referencing keywords + setting_consent_time: Consent time + setting_consent_info: Consent information text + setting_consent_required: Consent required + setting_consent_decline_mail: Consent contact mail address + setting_cross_project_work_package_relations: Allow cross-project work package relations + setting_date_format: Date format + setting_default_language: Default language + setting_default_notification_option: Default notification option + setting_default_projects_modules: Default enabled modules for new projects + setting_default_projects_public: New projects are public by default + setting_diff_max_lines_displayed: Max number of diff lines displayed + setting_display_subprojects_work_packages: Display subprojects work packages on + main projects by default + setting_emails_footer: Emails footer + setting_emails_header: Emails header + setting_email_login: Use e-mail as login + setting_enabled_scm: Enabled SCM + setting_feeds_enabled: Enable Feeds + setting_feeds_limit: Feed content limit + setting_file_max_size_displayed: Max size of text files displayed inline + setting_host_name: Host name + setting_invitation_expiration_days: Activation E-Mail expires after + setting_work_package_done_ratio: Calculate the work package done ratio with + setting_work_package_done_ratio_field: Use the work package field + setting_work_package_done_ratio_status: Use the work package status + setting_work_package_done_ratio_disabled: Disable (hide the progress) + setting_work_package_list_default_columns: Display by default + setting_work_package_list_summable_columns: Summable + setting_work_package_properties: Work package properties + setting_work_package_startdate_is_adddate: Use current date as start date for new + work packages + setting_work_packages_export_limit: Work packages export limit + setting_journal_aggregation_time_minutes: Display journals as aggregated within + setting_log_requesting_user: Log user login, name, and mail address for all requests + setting_login_required: Authentication required + setting_mail_from: Emission email address + setting_mail_handler_api_key: API key + setting_mail_handler_body_delimiters: Truncate emails after one of these lines + setting_mail_handler_body_delimiter_regex: Truncate emails matching this regex + setting_mail_handler_ignore_filenames: इमेलमा संलग्नहरु बेवास्ता गरियो + setting_new_project_user_role_id: Role given to a non-admin user who creates a project + setting_password_active_rules: Active character classes + setting_password_count_former_banned: Number of most recently used passwords banned + for reuse + setting_password_days_valid: Number of days, after which to enforce a password change + setting_password_min_length: न्यूनतम लम्बाई + setting_password_min_adhered_rules: Minimum number of required classes + setting_per_page_options: Objects per page options + setting_plain_text_mail: Plain text mail (no HTML) + setting_protocol: Protocol + setting_security_badge_displayed: सुरक्षा बिल्ला प्रदर्शन गर्नुहोस् + setting_registration_footer: Registration footer + setting_repositories_automatic_managed_vendor: Automatic repository vendor type + setting_repositories_encodings: Repositories encodings + setting_repository_authentication_caching_enabled: Enable caching for authentication + request of version control software + setting_repository_storage_cache_minutes: Repository disk size cache + setting_repository_checkout_display: Show checkout instructions + setting_repository_checkout_base_url: Checkout base URL + setting_repository_checkout_text: Checkout instruction text + setting_repository_log_display_limit: Maximum number of revisions displayed on file + log + setting_repository_truncate_at: Maximum number of files displayed in the repository + browser + setting_rest_api_enabled: Enable REST web service + setting_self_registration: Self-registration + setting_sequential_project_identifiers: Generate sequential project identifiers + setting_session_ttl: Session expiry time after inactivity + setting_session_ttl_hint: Value below 5 works like disabled + setting_session_ttl_enabled: Session expires + setting_start_of_week: Week starts on + setting_sys_api_enabled: Enable repository management web service + setting_sys_api_description: The repository management web service provides integration + and user authorization for accessing repositories. + setting_time_format: Time format + setting_accessibility_mode_for_anonymous: Enable accessibility mode for anonymous + users + setting_user_format: Users display format + setting_user_default_timezone: Users default time zone + setting_users_deletable_by_admins: User accounts deletable by admins + setting_users_deletable_by_self: Users allowed to delete their accounts + setting_welcome_text: Welcome block text + setting_welcome_title: Welcome block title + setting_welcome_on_homescreen: Display welcome block on homescreen + setting_wiki_compression: Wiki history compression + setting_work_package_group_assignment: Allow assignment to groups + setting_work_package_list_default_highlighting_mode: Default highlighting mode + setting_work_package_list_default_highlighted_attributes: Default inline highlighted + attributes + settings: + general: General + other: Other + passwords: Passwords + session: Session + brute_force_prevention: Automated user blocking + user: + default_preferences: Default preferences + deletion: Deletion + highlighting: + mode_long: + inline: Highlight attribute(s) inline + none: No highlighting + status: Entire row by Status + type: Entire row by Type + priority: Entire row by Priority + text_formatting: + markdown: Markdown + plain: Plain text + status_active: active + status_archived: archived + status_invited: invited + status_locked: locked + status_registered: registered + support: + array: + sentence_connector: and + skip_last_comma: 'false' + text_accessibility_hint: The accessibility mode is designed for users who are blind, + motorically handicaped or have a bad eyesight. For the latter focused elements + are specially highlighted. Please notice, that the Backlogs module is not available + in this mode. + text_access_token_hint: Access tokens allow you to grant external applications access + to resources in OpenProject. + text_analyze: 'Further analyze: %{subject}' + text_are_you_sure: Are you sure? + text_are_you_sure_with_children: Delete work package and all child work packages? + text_assign_to_project: Assign to the project + text_form_configuration: 'You can customize which fields will be displayed in work + package forms. You can freely group the fields to reflect the needs for your domain. + +' + text_form_configuration_drag_to_activate: Drag fields from here to activate them + text_form_configuration_required_attribute: Attribute is marked required and thus + always shown + text_caracters_maximum: "%{count} characters maximum." + text_caracters_minimum: Must be at least %{count} characters long. + text_comma_separated: Multiple values allowed (comma separated). + text_comment_wiki_page: 'Comment to wiki page: %{page}' + text_custom_field_possible_values_info: One line for each value + text_custom_field_hint_activate_per_project: 'When using custom fields: Keep in + mind that custom fields need to be activated per project, too. + +' + text_custom_field_hint_activate_per_project_and_type: 'Custom fields need to be + activated per work package type and per project. + +' + text_custom_logo_instructions: 'A white logo on transparent background is recommended. + For best results on both, conventional and retina displays, make sure your image''s + dimensions are 460px by 60px. + +' + text_custom_favicon_instructions: 'This is the tiny icon that appears in your browser + window/tab next to the page''s title. It''s needs to be a squared 32 by 32 pixels + sized PNG image file with a transparent background. + +' + text_custom_touch_icon_instructions: 'This is the icon that appears in your mobile + or tablet when you place a bookmark on your homescreen. It''s needs to be a squared + 180 by 180 pixels sized PNG image file. Please make sure the image''s background + is not transparent otherwise it will look bad on iOS. + +' + text_database_allows_tsv: Database allows TSVector (optional) + text_default_administrator_account_changed: Default administrator account changed + text_default_encoding: 'Default: UTF-8' + text_destroy: Delete + text_destroy_with_associated: 'There are additional objects assossociated with the + work package(s) that are to be deleted. Those objects are of the following types:' + text_destroy_what_to_do: What do you want to do? + text_diff_truncated: "... This diff was truncated because it exceeds the maximum + size that can be displayed." + text_email_delivery_not_configured: |- + Email delivery is not configured, and notifications are disabled. + Configure your SMTP server in config/configuration.yml and restart the application to enable them. + text_enumeration_category_reassign_to: 'Reassign them to this value:' + text_enumeration_destroy_question: "%{count} objects are assigned to this value." + text_file_repository_writable: Attachments directory writable + text_git_repo_example: a bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_hint_date_format: Enter a date in the form of YYYY-MM-DD. Other formats may + be changed to an unwanted date. + text_hint_disable_with_0: 'Note: Disable with 0' + text_hours_between: Between %{min} and %{max} hours. + text_work_package_added: Work package %{id} has been reported by %{author}. + text_work_package_category_destroy_assignments: Remove category assignments + text_work_package_category_destroy_question: Some work packages (%{count}) are assigned + to this category. What do you want to do? + text_work_package_category_reassign_to: Reassign work packages to this category + text_work_package_updated: Work package %{id} has been updated by %{author}. + text_work_package_watcher_added: You have been added as a watcher to Work package + %{id} by %{watcher_setter}. + text_work_packages_destroy_confirmation: Are you sure you want to delete the selected + work package(s)? + text_work_packages_ref_in_commit_messages: Referencing and fixing work packages + in commit messages + text_journal_added: "%{label} %{value} added" + text_journal_aggregation_time_explanation: Combine journals for display if their + age difference is less than the specified timespan. This will also delay mail + notifications by the same amount of time. + text_journal_changed: "%{label} changed from %{old}
to %{new}" + text_journal_changed_plain: "%{label} changed from %{old} \nto %{new}" + text_journal_changed_no_detail: "%{label} updated" + text_journal_changed_with_diff: "%{label} changed (%{link})" + text_journal_deleted: "%{label} deleted (%{old})" + text_journal_deleted_with_diff: "%{label} deleted (%{link})" + text_journal_set_to: "%{label} set to %{value}" + text_journal_set_with_diff: "%{label} set (%{link})" + text_latest_note: 'The latest comment is: %{note}' + text_length_between: Length between %{min} and %{max} characters. + text_line_separated: Multiple values allowed (one line for each value). + text_load_default_configuration: Load the default configuration + text_min_max_length_info: 0 means no restriction + text_no_roles_defined: There are no roles defined. + text_no_access_tokens_configurable: There are no access tokens which can be configured. + text_no_configuration_data: |- + Roles, types, work package statuses and workflow have not been configured yet. + It is highly recommended to load the default configuration. You will be able to modify it once loaded. + text_no_notes: There are no comments available for this work package. + text_notice_too_many_values_are_inperformant: 'Note: Displaying more than 100 items + per page can increase the page load time.' + text_notice_security_badge_displayed_html: 'Note: if enabled, this will display + a badge with your installation status in the %{information_panel_label} + administration panel, and on the home page. It is displayed to administrators + only.
The badge will check your current OpenProject version against the + official OpenProject release database to alert you of any updates or known vulnerabilities. + For more information on what the check provides, what data is needed to provide + available updates, and how to disable this check, please visit the + configuration documentation. + +' + text_own_membership_delete_confirmation: |- + You are about to remove some or all of your permissions and may no longer be able to edit this project after that. + Are you sure you want to continue? + text_plugin_assets_writable: Plugin assets directory writable + text_powered_by: Powered by %{link} + text_project_identifier_info: Only lower case letters (a-z), numbers, dashes and + underscores are allowed, must start with a lower case letter. + text_reassign: 'Reassign to work package:' + text_regexp_info: eg. ^[A-Z0-9]+$ + text_regexp_multiline: The regex is applied in a multi-line mode. e.g., ^---\s+ + text_repository_usernames_mapping: |- + Select or update the OpenProject user mapped to each username found in the repository log. + Users with the same OpenProject and repository username or email are automatically mapped. + text_select_mail_notifications: Select actions for which email notifications should + be sent. + text_status_changed_by_changeset: Applied in changeset %{value}. + text_table_difference_description: In this table the single %{entries} are shown. + You can view the difference between any two entries by first selecting the according + checkboxes in the table. When clicking on the button below the table the differences + are shown. + text_time_logged_by_changeset: Applied in changeset %{value}. + text_tip_work_package_begin_day: work package beginning this day + text_tip_work_package_begin_end_day: work package beginning and ending this day + text_tip_work_package_end_day: work package ending this day + text_type_no_workflow: No workflow defined for this type + text_unallowed_characters: Unallowed characters + text_user_invited: The user has been invited and is pending registration. + text_user_wrote: "%{value} wrote:" + text_warn_on_leaving_unsaved: The work package contains unsaved text that will be + lost if you leave this page. + text_what_did_you_change_click_to_add_comment: What did you change? Click to add + comment + text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all + its content? + text_wiki_page_destroy_children: Delete child pages and all their descendants + text_wiki_page_destroy_question: This page has %{descendants} child page(s) and + descendant(s). What do you want to do? + text_wiki_page_nullify_children: Keep child pages as root pages + text_wiki_page_reassign_children: Reassign child pages to this parent page + text_workflow_edit: Select a role and a type to edit the workflow + text_zoom_in: Zoom in + text_zoom_out: Zoom out + text_setup_mail_configuration: Configure your email provider + time: + am: am + formats: + default: "%m/%d/%Y %I:%M %p" + long: "%B %d, %Y %H:%M" + short: "%d %b %H:%M" + time: "%I:%M %p" + pm: pm + timeframe: + show: Show timeframe + end: to + start: from + timelines: + admin_menu: + color: Color + colors: Colors + associations: Dependencies + board_could_not_be_saved: Board could not be saved + button_delete_all: Delete all + change: Change in planning + children: Child elements + color_could_not_be_saved: Color could not be saved + current_planning: Current planning + dates: Dates + dates_are_calculated_based_on_sub_elements: Dates are calculated based on sub + elements. + delete_all: Delete all + delete_thing: Delete + duration: Duration + duration_days: + one: 1 day + other: "%{count} days" + edit_color: Edit color + edit_thing: Edit + edit_timeline: Edit timeline report %{timeline} + delete_timeline: Delete timeline report %{timeline} + empty: "(empty)" + enable_type_in_project: Enable type "%{type}" + end: End + errors: + not_implemented: The timeline could not be rendered because it uses a feature + that is not yet implemented. + report_comparison: The timeline could not render the configured comparisons. + Please check the appropriate section in the configuration, resetting it can + help solve this problem. + report_epicfail: The timeline could not be loaded due to an unexpected error. + report_timeout: The timeline could not be loaded in a reasonable amount of time. + filter: + errors: + timeframe_start: 'The timeframe start ' + timeframe_end: 'The timeframe end ' + compare_to_relative: 'The value of the relative comparison ' + compare_to_absolute: 'The value of the absolute comparison ' + planning_element_time_relative_one: 'The start for work packages in a certain + timeframe ' + planning_element_time_relative_two: 'The end for work packages in a certain + timeframe ' + planning_element_time_absolute_one: 'The start for work packages in a certain + timeframe ' + planning_element_time_absolute_two: 'The end for work packages in a certain + timeframe ' + sort: + sortation: Sort by + alphabet: alphabet + explicit_order: explicit order + project_sortation: Sort projects by + date: date + default: default + column: + assigned_to: Assignee + type: Type + due_date: End date + name: Name + status: Status + start_date: Start date + columns: Columns + comparisons: Comparisons + comparison: + absolute: Absolute + none: None + relative: Relative + compare_relative_prefix: Compare current planning to + compare_relative_suffix: ago + compare_absolute: Compare current planning to %{date} + time_relative: + days: days + weeks: weeks + months: months + exclude_own_work_packages: Hide work packages from this project + exclude_reporters: Hide other projects + exclude_empty: Hide empty projects + grouping: Grouping + grouping_hide_group: Hide group "%{group}" + grouping_one: First grouping criterion + grouping_one_phrase: Is a subproject of + grouping_other: Other + hide_chart: Hide chart + noneElement: "(none)" + noneSelection: "(none)" + outline: Initial outline expansion + parent: Show subprojects of + work_package_filters: Filter work packages + work_package_responsible: Show work packages with accountable + work_package_assignee: Show work packages with assignee + types: Show types + status: Show status + project_time_filter: Projects with a work package of a certain type in a certain + timeframe + project_time_filter_timeframe: Timeframe + project_time_filter_historical_from: from + project_time_filter_historical_to: to + project_time_filter_historical: "%{start_label} %{startdate} %{end_label} %{enddate}" + project_time_filter_relative: "%{start_label} %{startspan}%{startspanunit} ago, + %{end_label} %{endspan}%{endspanunit} from now" + project_filters: Filter projects + project_responsible: Show projects with accountable + project_status: Show project status + timeframe: Show timeframe + timeframe_end: to + timeframe_start: from + timeline: General Settings + zoom: Zoom factor + history: History + new_color: New color + new_association: New dependency + new_work_package: New work package + new_reporting: New reporting + new_timeline: New timeline report + no_projects_for_reporting_available: There are no projects to which a reporting + association can be created. + no_right_to_view_timeline: You do not have the necessary permission to view the + linked timeline. + no_timeline_for_id: There is no timeline with ID %{id}. + notice_successful_deleted_all_elements: Successfully deleted all elements + outline: Reset Outline + outlines: + aggregation: Show aggregations only + level1: Expand level 1 + level2: Expand level 2 + level3: Expand level 3 + level4: Expand level 4 + level5: Expand level 5 + all: Show all + reporting_for_project: + show: 'Status reported to project: %{title}' + edit_delete: 'status report for project: %{title}' + history: 'History for status for project: %{title}' + reporting: + delete: 'Delete status: %{comment}' + edit: 'Edit status: %{comment}' + show: 'Status: %{comment}' + planning_element_update: 'Update: %{title}' + type_could_not_be_saved: Type could not be saved + reporting_could_not_be_saved: Reporting could not be saved + properties: Properties + really_delete_color: 'Are you sure, you want to delete the following color? Types + using this color will not be deleted. + +' + really_delete_reporting: 'Are you sure, you want to delete the following reporting? + Previous reporting statuses will be deleted, too. + +' + start: Start + timeline: Timeline report + timelines: Timeline reports + settings: Timelines + vertical_work_package: Vertical work packages + you_are_viewing_the_selected_timeline: You are viewing the selected timeline report + zoom: + in: Zoom in + out: Zoom out + days: Days + weeks: Weeks + months: Months + quarters: Quarters + years: Years + title_remove_and_delete_user: Remove the invited user from the project and delete + him/her. + title_enterprise_upgrade: Upgrade to unlock more users. + tooltip_user_default_timezone: 'The default time zone for new users. Can be changed + in a user''s settings. + +' + tooltip_resend_invitation: 'Sends another invitation email with a fresh token in + case the old one expired or the user did not get the original email. Can also + be used for active users to choose a new authentication method. When used with + active users their status will be changed to ''invited''. + +' + tooltip: + setting_email_login: 'If enabled a user will be unable to chose a login during + registration. Instead their given e-mail address will serve as the login. An + administrator may still change the login separately. + +' + queries: + apply_filter: Apply preconfigured filter + top_menu: + additional_resources: Additional resources + getting_started: Getting started + help_and_support: Help and support + total_progress: Total progress + user: + all: all + active: active + activate: Activate + activate_and_reset_failed_logins: Activate and reset failed logins + authentication_provider: Authentication Provider + authentication_settings_disabled_due_to_external_authentication: 'This user authenticates + via an external authentication provider, so there is no password in OpenProject + to be changed. + +' + authorization_rejected: You are not allowed to sign in. + assign_random_password: Assign random password (sent to user via email) + blocked: locked temporarily + blocked_num_failed_logins: + one: locked temporarily (one failed login attempt) + other: locked temporarily (%{count} failed login attempts) + confirm_status_change: You are about to change the status of '%{name}'. Are you + sure you want to continue? + deleted: Deleted user + error_status_change_failed: 'Changing the user status failed due to the following + errors: %{errors}' + invite: Invite user via email + invited: invited + lock: Lock permanently + locked: locked permanently + no_login: This user authenticates through login by password. Since it is disabled, + they cannot log in. + password_change_unsupported: Change of password is not supported. + registered: registered + reset_failed_logins: Reset failed logins + settings: + mail_notifications: Send email notifications + mail_project_explanaition: For unselected projects, you will only receive notifications + about things you watch or you're involved in (e.g. work packages you're the + author or assignee of). + mail_self_notified: I want to be notified of changes that I make myself + status_user_and_brute_force: "%{user} and %{brute_force}" + status_change: Status change + unlock: Unlock + unlock_and_reset_failed_logins: Unlock and reset failed logins + version_status_closed: closed + version_status_locked: locked + version_status_open: open + note: Note + note_password_login_disabled: Password login has been disabled by %{configuration}. + warning: Warning + warning_attachments_not_saved: "%{count} file(s) could not be saved." + warning_imminent_user_limit: 'You invited more users than are supported by your + current plan. Invited users may not be able to join your OpenProject environment. + Please upgrade your plan or block existing users + in order to allow invited and registered users to join. + +' + warning_registration_token_expired: | + The activation email has expired. We sent you a new one to %{email}. + Please click the link inside of it to activate your account. + warning_user_limit_reached: 'User limit reached. You cannot activate any more users. + Please upgrade your plan or block members to allow + for additional users. + +' + warning_user_limit_reached_instructions: 'You reached your user limit (%{current}/%{max} + active users). Please contact sales@openproject.com to upgrade your Enterprise + Edition plan and add additional users. + +' + menu_item: Menu item + menu_item_setting: Visibility + wiki_menu_item_for: Menu item for wikipage "%{title}" + wiki_menu_item_setting: Visibility + wiki_menu_item_new_main_item_explanation: 'You are deleting the only main wiki menu + item. You now have to choose a wiki page for which a new main item will be generated. + To delete the wiki the wiki module can be deactivated by project administrators. + +' + wiki_menu_item_delete_not_permitted: The wiki menu item of the only wiki page cannot + be deleted. + query_menu_item_for: Menu item for query "%{title}" + work_package: + updated_automatically_by_child_changes: '_Updated automatically by changing values + within child work package %{child}_ + +' + destroy: + info: Deleting the work package is an irreversible action. + title: Delete the work package + nothing_to_preview: Nothing to preview + api_v3: + attributes: + lock_version: Lock Version + errors: + code_401: You need to be authenticated to access this resource. + code_401_wrong_credentials: You did not provide the correct credentials. + code_403: You are not authorized to access this resource. + code_404: The requested resource could not be found. + code_409: Could not update the resource because of conflicting modifications. + code_500: An internal error has occured. + expected: + date: YYYY-MM-DD (ISO 8601 date only) + duration: ISO 8601 duration + invalid_content_type: Expected CONTENT-TYPE to be '%{content_type}' but got + '%{actual}'. + invalid_format: 'Invalid format for property ''%{property}'': Expected format + like ''%{expected_format}'', but got ''%{actual}''.' + invalid_json: The request could not be parsed as JSON. + invalid_relation: The relation is invalid. + invalid_resource: For property '%{property}' a link like '%{expected}' is expected, + but got '%{actual}'. + invalid_user_status_transition: The current user account status does not allow + this operation. + missing_content_type: not specified + missing_request_body: There was no request body. + missing_or_malformed_parameter: The query parameter '%{parameter}' is missing + or malformed. + multipart_body_error: The request body did not contain the expected multipart + parts. + multiple_errors: Multiple field constraints have been violated. + unable_to_create_attachment: The attachment could not be created + render: + context_not_parsable: The context provided is not a link to a resource. + unsupported_context: The resource given is not supported as context. + context_object_not_found: Cannot find the resource given as the context. + validation: + done_ratio: Done ratio cannot be set on parent work packages, when it is inferred + by status or when it is disabled. + due_date: Finish date cannot be set on parent work packages. + estimated_hours: Estimated hours cannot be set on parent work packages. + invalid_user_assigned_to_work_package: The chosen user is not allowed to be + '%{property}' for this work package. + start_date: Start date cannot be set on parent work packages. + writing_read_only_attributes: You must not write a read-only attribute. + resources: + schema: Schema + doorkeeper: + pre_authorization: + status: Pre-authorization + errors: + messages: + invalid_request: The request is missing a required parameter, includes an + unsupported parameter value, or is otherwise malformed. + invalid_redirect_uri: The requested redirect uri is malformed or doesn't match + client redirect URI. + unauthorized_client: यस बिधि द्वारा अनुरोधगर्ने अधिकार यो clientलाई छैन। + access_denied: Resource owner or authorization server ले अनुरोध अस्वीकार गर्यो। + invalid_scope: अनुरोध गरिएको दायरा अवैध, अज्ञात वा विकृत छ। + invalid_code_challenge_method: कोड चुनौती विधि plain वा S256 मा हुनुपर्दछ। + server_error: Authorization serverले अप्रत्याशित स्थितिको सामना गर्यो, त्यो + कारणले, अनुरोध पूरा गर्नबाट रोक्यो। + temporarily_unavailable: अस्थाई अत्यधिक चाप वा मर्मतसम्भारको कारणले Authorization + server तत्काललाई अनुरोध बुझ्न नसक्ने अवस्थामा छ। + credential_flow_not_configured: Resource Owner Password Credentials flow failed + due to Doorkeeper.configure.resource_owner_from_credentials being unconfigured. + resource_owner_authenticator_not_configured: Resource Owner find failed due + to Doorkeeper.configure.resource_owner_authenticator being unconfigured. + admin_authenticator_not_configured: प्रशासनको प्यानलमा पहुँच निस्क्रिय गरिएको + छ किनकि Doorke.configure.admin_authenticator कन्फिगर गरिएको छैन। + unsupported_response_type: Authorization सर्भरले यस प्रकारको प्रतिक्रिया समर्थन + गर्दैन। + invalid_client: Client authentication failed due to unknown client, no client + authentication included, or unsupported authentication method. + invalid_grant: The provided authorization grant is invalid, expired, revoked, + does not match the redirection URI used in the authorization request, or + was issued to another client. + unsupported_grant_type: The authorization grant type is not supported by the + authorization server. + invalid_token: + revoked: Access token रद्द गरियो + expired: Access token को समयावधि समाप्त भयो + unknown: Access token अमान्य छ + unsupported_browser: + title: तपाईंको browser पुरानो र असमर्थित छ। + message: तपाइँ यस पृष्ठमा त्रुटिहरू र घटाइएको अनुभवमा चल्न सक्नुहुन्छ। + update_message: Please update your browser. + close_warning: Ignore this warning. + oauth: + application: + singular: OAuth application + plural: OAuth applications + named: OAuth application '%{name}' + new: New OAuth application + default_scopes: "(Default scopes)" + instructions: + name: The name of your application. This will be displayed to other users + upon authorization. + redirect_uri_html: 'The allowed URLs authorized users can be redirected to. + One entry per line.
If you''re registering a desktop application, + use the following URL. + +' + confidential: Check if the application will be used where the client secret + can be kept confidential. Native mobile apps and Single Page Apps are assumed + non-confidential. + client_credential_user_id: Optional user ID to impersonate when clients use + this application. Leave empty to allow public access only + register_intro: If you are developing an OAuth API client application for + OpenProject, you can register it using this form for all users to use. + default_scopes: '' + client_id: Client ID + client_secret_notice: 'This is the only time we can print the client secret, please + note it down and keep it secure. It should be treated as a password and cannot + be retrieved by OpenProject at a later time. + +' + authorization_dialog: + authorize: Authorize + cancel: Cancel and deny authorization. + prompt_html: Authorize %{application_name} to use your account + %{login}? + title: Authorize %{application_name} + wants_to_access_html: 'This application requests access to your OpenProject + account.
It has requested the following permissions: + +' + scopes: + api_v3: Full API access + api_v3_text: Application will receive full read & write access to the OpenProject + API to perform actions on your behalf. + grants: + created_date: Approved on + scopes: Permissions + successful_application_revocation: Revocation of application %{application_name} + successful. + none_given: No OAuth applications have been granted access to your user account. + x_active_tokens: + one: one active token + other: "%{count} active token" + flows: + authorization_code: Authorization code flow + client_credentials: Client credentials flow + client_credentials: User used for Client credentials + client_credentials_impersonation_set_to: Client credentials user set to + client_credentials_impersonation_warning: 'Note: Clients using the ''Client credentials'' + flow in this application will have the rights of this user' + client_credentials_impersonation_html: 'By default, OpenProject provides OAuth + 2.0 authorization via %{authorization_code_flow_link}. You can optionally enable + %{client_credentials_flow_link}, but you must provide a user on whose behalf + requests will be performed. + +' + authorization_error: An authorization error has occurred. + revoke_my_application_confirmation: Do you really want to remove this application? + This will revoke %{token_count} active for it. + my_registered_applications: Registered OAuth applications diff --git a/config/locales/crowdin/nl.yml b/config/locales/crowdin/nl.yml index 7176af29a6..3c21f65607 100644 --- a/config/locales/crowdin/nl.yml +++ b/config/locales/crowdin/nl.yml @@ -58,19 +58,19 @@ nl: no_results_content_title: Er zijn momenteel geen verificatie methodes. no_results_content_text: Maak een nieuwe authenticatie methode ldap_auth_sources: - connection_encryption: Connection encryption + connection_encryption: Verbinding encryptie tls_mode: plain: geen - simple_tls: simple_tls + simple_tls: eenvoudige_tls start_tls: start_tls - plain_description: Plain unencrypted connection, no TLS negotiation. - simple_tls_description: Implicit TLS encryption, but no certificate validation. - Use with caution and implicit trust of the LDAP connection. - start_tls_description: Explicit TLS encryption with full validation. Use for - LDAP over TLS/SSL. - section_more_info_link_html: 'This section concerns the connection security - of this LDAP authentication source. For more information, visit the - Net::LDAP documentation. + plain_description: Geen TLS-onderhandelingen. + simple_tls_description: Impliciet TLS encryptie, maar geen certificaat validatie. + Gebruik voorzichtig en impliciet vertrouwen van de LDAP-verbinding. + start_tls_description: TLS-encryptie uitbreiden met volledige validatie. Gebruik + voor LDAP via TLS/SSL. + section_more_info_link_html: 'Deze sectie heeft betrekking op de verbindingsbeveiliging + van deze LDAP authenticatie bron. Voor meer informatie bezoek het + net::LDAP documentatie. ' boards: @@ -390,9 +390,9 @@ nl: encoded_token: Enterprise ondersteuningstoken active_user_count_restriction: Maximum aantal actieve gebruikers grids/grid: - page: Page - row_count: Number of rows - column_count: Number of columns + page: Pagina + row_count: Aantal rijen + column_count: Aantal kolommen widgets: Widgets relation: delay: Vertraging @@ -565,8 +565,8 @@ nl: is? grids/grid: overlaps: overlap. - outside: is outside of the grid. - end_before_start: end value needs to be larger than the start value. + outside: is buiten het raster. + end_before_start: eindwaarde moet groter zijn dan de startwaarde. parse_schema_filter_params_service: attributes: base: @@ -1540,7 +1540,7 @@ nl: label_previous_week: Vorige week label_principal_invite_via_email: " of nieuwe gebruikers uitnodigen via e-mail" label_principal_search: Bestaande gebruikers of groepen toevoegen - label_privacy_policy: Data privacy and security policy + label_privacy_policy: Gegevensprivacy en veiligheidsbeleid label_product_version: Versie van het product label_professional_support: Professionele ondersteuning label_profile: Profiel @@ -1871,8 +1871,8 @@ nl: notice_account_update_failed: Account instelling kan niet worden opgeslagen. Kijk op uw accountpagina. notice_account_updated: Account is bijgewerkt. - notice_account_other_session_expired: All other sessions tied to your account have - been invalidated. + notice_account_other_session_expired: Alle andere sessies die gekoppeld zijn aan + uw account zijn ongeldig. notice_account_wrong_password: Verkeerde wachtwoord notice_account_registered_and_logged_in: Welkom, uw acount is geactiveerd. U bent nu ingelogd. @@ -2988,7 +2988,3 @@ nl: revoke_my_application_confirmation: Weet u zeker dat u deze applicatie wilt verwijderen? Dit zal %{token_count} actief voor deze verwijderen. my_registered_applications: Geregistreerde OAuth toepassingen - setting_mail_handler_api_enabled: Binnenkomende e-mail web-service inschakelen - setting_mail_handler_api_description: De e-mail web handler activeerd OpenProject - voor het ontvangen van e-mails met specifieke opdrachten als een mechanisme instrumentatie - (bijvoorbeeld maken en bijwerken van de werkpakketten). diff --git a/config/locales/crowdin/no.yml b/config/locales/crowdin/no.yml index 7ff2b46464..76e9de04a5 100644 --- a/config/locales/crowdin/no.yml +++ b/config/locales/crowdin/no.yml @@ -2920,7 +2920,3 @@ revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Aktiver web-tjeneste for innkommende e-post - setting_mail_handler_api_description: Epost web-tjenesten sørger for at OpenProject - kan motta eposter som inneholder spesefikte kommandoer som en instruksjonsmekanisme - (f.eks opprette og oppdatere arbeidspakker). diff --git a/config/locales/crowdin/pl.yml b/config/locales/crowdin/pl.yml index f312ac5215..2cde913b30 100644 --- a/config/locales/crowdin/pl.yml +++ b/config/locales/crowdin/pl.yml @@ -57,14 +57,14 @@ pl: no_results_content_title: Nie ma jeszcze żadnych trybów autoryzacji. no_results_content_text: Utwórz nowy tryb autoryzacji ldap_auth_sources: - connection_encryption: Connection encryption + connection_encryption: Szyfrowanie połączenia tls_mode: plain: Brak simple_tls: simple_tls start_tls: start_tls - plain_description: Plain unencrypted connection, no TLS negotiation. - simple_tls_description: Implicit TLS encryption, but no certificate validation. - Use with caution and implicit trust of the LDAP connection. + plain_description: Zwykłe, nie szyfrowane połączenie bez TLS. + simple_tls_description: Szyfrowanie TLS bez sprawdzonej poprawności certyfikatu. + Używaj z rozwagą i zaufanym połączeniem LDAP. start_tls_description: Explicit TLS encryption with full validation. Use for LDAP over TLS/SSL. section_more_info_link_html: 'This section concerns the connection security @@ -3000,7 +3000,3 @@ pl: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Włącz usługę przychodzących wiadomości e-mail - setting_mail_handler_api_description: Silnik e-mail umożliwia aplikacji OpenProject - otrzymywać wiadomości e-mail zawierające konkretne polecenia jako mechanizm instrumentacji - (np. do tworzenia i aktualizacji pakietów roboczych). diff --git a/config/locales/crowdin/pt-BR.yml b/config/locales/crowdin/pt-BR.yml index b32b34e6e9..0d1364c00a 100644 --- a/config/locales/crowdin/pt-BR.yml +++ b/config/locales/crowdin/pt-BR.yml @@ -61,16 +61,16 @@ pt-BR: connection_encryption: Criptografia de Conexão tls_mode: plain: nenhum - simple_tls: simple_tls + simple_tls: simples_tls start_tls: start_tls - plain_description: Plain unencrypted connection, no TLS negotiation. - simple_tls_description: Implicit TLS encryption, but no certificate validation. - Use with caution and implicit trust of the LDAP connection. - start_tls_description: Explicit TLS encryption with full validation. Use for - LDAP over TLS/SSL. - section_more_info_link_html: 'This section concerns the connection security - of this LDAP authentication source. For more information, visit the - Net::LDAP documentation. + plain_description: Conexão não criptografada, nenhuma negociação TLS. + simple_tls_description: Criptografia TLS Implicita, mas sem validação de certificado. + Use com cautela e confiança implícita da conexão LDAP. + start_tls_description: Criptografia TLS explícita com validação completa. Usar + para LDAP sobre SSL/TLS. + section_more_info_link_html: 'Esta seção diz respeito à segurança de conexão + desta fonte de autenticação LDAP. Para mais informações, visite a + documentação Net::LDAP. ' boards: @@ -1527,7 +1527,7 @@ pt-BR: label_previous_week: Semana anterior label_principal_invite_via_email: " ou convidar novos usuários via e-mail" label_principal_search: Adicionar usuários existentes ou grupos - label_privacy_policy: Data privacy and security policy + label_privacy_policy: Política de privacidade e segurança de dados label_product_version: Versão do produto label_professional_support: Suporte profissional label_profile: Perfil @@ -2965,7 +2965,3 @@ pt-BR: revoke_my_application_confirmation: Você quer realmente remover esta aplicação? Isso irá revogar %{token_count} ativo(s) para ele. my_registered_applications: Aplicações OAuth registradas - setting_mail_handler_api_enabled: Habilitar serviço web de entrada de e-mails - setting_mail_handler_api_description: 'O manipulador de e-mail permite ao OpenProject - receber e-mails contendo comandos específicos, como um mecanismo de instrumentação - (ex.: para criar e atualizar pacotes de trabalho).' diff --git a/config/locales/crowdin/pt.yml b/config/locales/crowdin/pt.yml index 1262302654..4307d0136b 100644 --- a/config/locales/crowdin/pt.yml +++ b/config/locales/crowdin/pt.yml @@ -2987,7 +2987,3 @@ pt: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Ativar webservice de entrada de e-mail - setting_mail_handler_api_description: O gestor web de email permite que o OpenProject - receba emails com comandos específicos, como um mecanismo de instrumentação (por - exemplo, para criar e atualizar pacotes de trabalho). diff --git a/config/locales/crowdin/ro.yml b/config/locales/crowdin/ro.yml index 41596eae3f..fb93c3cce9 100644 --- a/config/locales/crowdin/ro.yml +++ b/config/locales/crowdin/ro.yml @@ -2995,7 +2995,3 @@ ro: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Activare serviciu web e-mailuri primite - setting_mail_handler_api_description: Procesatorul web pentru e-mail permite OpenProject - să primească e-mail-uri care conțin anumite comenzi ca un mecanism de instrumentație - (de exemplu, pentru a crea și de a actualiza pachete de lucru). diff --git a/config/locales/crowdin/ru.yml b/config/locales/crowdin/ru.yml index 8ae5e4b5f9..45b1302003 100644 --- a/config/locales/crowdin/ru.yml +++ b/config/locales/crowdin/ru.yml @@ -1427,7 +1427,7 @@ ru: label_hierarchy_leaf: Уровень иерархии label_home: Главная label_subject_or_id: Тема или ID - label_impressum: Impressum + label_impressum: Импре́ссум label_in: в label_in_less_than: менее чем label_in_more_than: более чем @@ -1561,7 +1561,7 @@ ru: label_principal_invite_via_email: " или пригласить новых пользователей по электронной почте" label_principal_search: Добавление существующих пользователей или групп - label_privacy_policy: Data privacy and security policy + label_privacy_policy: Политика конфиденциальности данных и безопасности label_product_version: Версия продукта label_professional_support: Профессиональная поддержка label_profile: Профиль @@ -3013,7 +3013,3 @@ ru: revoke_my_application_confirmation: Вы действительно хотите удалить это приложение? Это действие будет отменено %{token_count}. my_registered_applications: Зарегистрированные OAuth приложения - setting_mail_handler_api_enabled: Разрешить входящую почту веб-сервисов - setting_mail_handler_api_description: Веб-обработчик электронной почты позволяет - OpenProject получать письма с командами (например, для создания и обновления пакетов - работы). diff --git a/config/locales/crowdin/sk.yml b/config/locales/crowdin/sk.yml index b1ce7dff7c..5bdfed4bae 100644 --- a/config/locales/crowdin/sk.yml +++ b/config/locales/crowdin/sk.yml @@ -57,18 +57,18 @@ sk: no_results_content_title: Momentálne nie sú žiadne metódy overovania identity. no_results_content_text: Vytvoriť novú metódu overovania identity ldap_auth_sources: - connection_encryption: Connection encryption + connection_encryption: Šifrovanie pripojenia tls_mode: plain: žiadne simple_tls: simple_tls start_tls: start_tls - plain_description: Plain unencrypted connection, no TLS negotiation. - simple_tls_description: Implicit TLS encryption, but no certificate validation. - Use with caution and implicit trust of the LDAP connection. - start_tls_description: Explicit TLS encryption with full validation. Use for - LDAP over TLS/SSL. - section_more_info_link_html: 'This section concerns the connection security - of this LDAP authentication source. For more information, visit the + plain_description: Obyčajné nešifrované pripojenie, nepožadované TLS pripojenie. + simple_tls_description: Implicitné šifrovanie TLS, ale žiadne overenie certifikátu. + Používať s opatrnosťou a implicitne dôverné LDAP pripojenie. + start_tls_description: Explicitné šifrovanie TLS s úplným overením. Použitie + LDAP cez TLS/SSL. + section_more_info_link_html: 'Táto časť sa týka bezpečnosti pripojenia tohto + zdroja autentifikácie LDAP. Ďalšie informácie nájdete na stránkethe Net::LDAP documentation. ' @@ -390,10 +390,10 @@ sk: encoded_token: Enterprise support token active_user_count_restriction: Maximálny počet aktívnych užívateľov grids/grid: - page: Page - row_count: Number of rows - column_count: Number of columns - widgets: Widgets + page: Stránka + row_count: Počet riadkov + column_count: Počet stĺpcov + widgets: Miniaplikácie relation: delay: Oneskorenie from: Pracovný balíček @@ -562,9 +562,9 @@ sk: unreadable: nedá sa čítať. Ste si istý, že máte správny Token podpory Enterprise Edition? grids/grid: - overlaps: overlap. - outside: is outside of the grid. - end_before_start: end value needs to be larger than the start value. + overlaps: prekrývajú. + outside: je mimo mriežku. + end_before_start: koncová hodnota musí byť väčšia ako počiatočná hodnota. parse_schema_filter_params_service: attributes: base: @@ -1437,7 +1437,7 @@ sk: label_hierarchy_leaf: Úroveň hierarchie label_home: Úvod label_subject_or_id: Predmet alebo ID - label_impressum: Impressum + label_impressum: Impresum label_in: v label_in_less_than: v menej ako label_in_more_than: vo viac ako @@ -1571,7 +1571,7 @@ sk: label_principal_invite_via_email: " alebo pozvať nových užívateľov prostredníctvom e-mailu" label_principal_search: Pridanie existujúcich užívateľov alebo skupín - label_privacy_policy: Data privacy and security policy + label_privacy_policy: Ochrana osobných údajov a bezpečnostná politika label_product_version: Verzia produktu label_professional_support: Profesionálna podpora label_profile: Profil @@ -1907,8 +1907,8 @@ sk: notice_account_update_failed: Nastavenie konta sa nepodarilo uložiť. Prosím, skontrolujte si stránku účtu. notice_account_updated: Účet bol úspešne aktualizovaný. - notice_account_other_session_expired: All other sessions tied to your account have - been invalidated. + notice_account_other_session_expired: Všetky ostatné relácie viazané na váš účet + boli zrušené. notice_account_wrong_password: Nesprávne heslo notice_account_registered_and_logged_in: Vitajte, váš účet bol aktivovaný. Teraz ste prihlásení. @@ -3012,7 +3012,3 @@ sk: revoke_my_application_confirmation: Naozaj chcete odstrániť túto aplikáciu? Týmto sa zrušia aktívne tokeny %{token_count}. my_registered_applications: Registrované aplikácie OAuth - setting_mail_handler_api_enabled: Povoliť webovú službu prichádzajúcich e-mailov - setting_mail_handler_api_description: Webová služba elektronickej pošty umožňuje - aplikácii OpenProject prijímať a reagovať na e-maily so špeciálnymi pokynmi (napríklad - na vytváranie a aktualizáciu pracovných balíčkov). diff --git a/config/locales/crowdin/sv-SE.yml b/config/locales/crowdin/sv-SE.yml index 646d26a487..40087d1f09 100644 --- a/config/locales/crowdin/sv-SE.yml +++ b/config/locales/crowdin/sv-SE.yml @@ -2919,7 +2919,3 @@ sv-SE: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Aktivera web-tjänsten för inkommande e-post - setting_mail_handler_api_description: E-mail web handler gör det möjligt för OpenProject - att ta emot e-postmeddelanden som innehåller specifika kommandon som en instrumentation - mekanism (e.g., skapa och uppdatera arbetspaket). diff --git a/config/locales/crowdin/th.yml b/config/locales/crowdin/th.yml index fa9fda7624..8c18393429 100644 --- a/config/locales/crowdin/th.yml +++ b/config/locales/crowdin/th.yml @@ -2865,7 +2865,3 @@ th: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Enable incoming email web service - setting_mail_handler_api_description: The email web handler enables OpenProject - to receive emails containing specific commands as an instrumentation mechanism - (e.g., to create and update work packages). diff --git a/config/locales/crowdin/tr.yml b/config/locales/crowdin/tr.yml index 63a80368ce..01c4d42494 100644 --- a/config/locales/crowdin/tr.yml +++ b/config/locales/crowdin/tr.yml @@ -3,8 +3,8 @@ tr: no_results_title_text: Şu anda gösterilecek bir şey yok. activities: index: - no_results_title_text: There has not been any activity for the project within - this time frame. + no_results_title_text: Bu zaman dilimi içerisinde proje için herhangi bir faaliyet + olmamıştır. admin: plugins: no_results_title_text: Şu anda kullanılabilir eklenti mevcut değil. @@ -57,19 +57,19 @@ tr: no_results_content_title: Şu anda bir doğrulama modu bulunmamakta. no_results_content_text: Yeni bir doğrulama modu oluştur ldap_auth_sources: - connection_encryption: Connection encryption + connection_encryption: Bağlantı şifreleme tls_mode: plain: hiçbiri - simple_tls: simple_tls - start_tls: start_tls - plain_description: Plain unencrypted connection, no TLS negotiation. - simple_tls_description: Implicit TLS encryption, but no certificate validation. - Use with caution and implicit trust of the LDAP connection. - start_tls_description: Explicit TLS encryption with full validation. Use for - LDAP over TLS/SSL. - section_more_info_link_html: 'This section concerns the connection security - of this LDAP authentication source. For more information, visit the - Net::LDAP documentation. + simple_tls: basit_tls + start_tls: başlat_tls + plain_description: Düz şifrelenmemiş bağlantı, TLS anlaşması yok. + simple_tls_description: Örtülü TLS şifrelemesi, ancak sertifika doğrulaması + yok. LDAP bağlantısına dikkat ve örtülü güven ile kullanın. + start_tls_description: Tam doğrulama ile açık TLS şifrelemesi. TLS / SSL üzerinden + LDAP için kullanın. + section_more_info_link_html: 'Bu bölüm, bu LDAP kimlik doğrulama kaynağının + bağlantı güvenliği ile ilgilidir. Daha fazla bilgi için the + Net::LDAP belgelerini ziyaret edin. ' boards: @@ -85,7 +85,7 @@ tr: name: Eylemler add: Eylem ekle assigned_to: - executing_user_value: "(Assign to executing user)" + executing_user_value: "(Kullanıcıyı çalıştırma ata)" conditions: Koşullar plural: Özel eylemler new: Özel eylem ekle @@ -134,20 +134,20 @@ tr: memberships: no_results_title_text: Şu anda bu grubun bir parçası olan, bir proje bulunmamakta. incoming_mails: - ignore_filenames: 'Specify a list of names to ignore when processing attachments - for incoming mails (e.g., signatures or icons). Enter one filename per line. + ignore_filenames: 'Gelen postalar için ekleri işlerken yok sayılacak adların bir + listesini belirtin (örneğin, imzalar veya simgeler). Her satıra bir dosya adı + girin. ' projects: delete: - scheduled: Deletion has been scheduled and is perfomed in the background. You - will be notified of the result. - schedule_failed: 'Project cannot be deleted: %{errors}' - failed: Deletion of project %{name} has failed - failed_text: The request to delete project %{name} has failed. The project was - left archived. - completed: Deletion of project %{name} completed - completed_text: The request to delete project '%{name}' has been completed. + scheduled: Silme zamanlanmış ve arka planda gerçekleştirilmiştir. Sonuç size + bildirilecektir. + schedule_failed: 'Proje silinemiyor: %{errors}' + failed: "%{name} projesinin silinmesi başarısız oldu" + failed_text: "%{name} projesini silme isteği başarısız oldu. Proje arşivlendi." + completed: " %{name} projesinin silinmesi tamamlandı" + completed_text: "'%{name}' projesini silme isteği tamamlandı." index: no_results_title_text: Şu anda hiç proje bulunmamakta no_results_content_text: Yeni bir proje oluşturun @@ -190,8 +190,8 @@ tr: prioritiies: edit: priority_color_text: | - Click to assign or change the color of this priority. - It can be used for highlighting work packages in the table. + Bu önceliğin rengini atamak veya değiştirmek için tıklayın. + Tablodaki iş paketlerini vurgulamak için kullanılabilir. reportings: index: no_results_title_text: Halen durum bildirimleri yok. @@ -204,8 +204,8 @@ tr:
Uyarı: Devralınan değerler (örneğin; çocuklardan ve bağlantılardan) hala geçerli olacaktır. status_color_text: | - Click to assign or change the color of this status. - It is shown in the status button and can be used for highlighting work packages in the table. + Bu durumun rengini atamak veya değiştirmek için tıklayın. + Durum düğmesinde gösterilir ve tablodaki iş paketlerini vurgulamak için kullanılabilir. index: no_results_title_text: Şu anda çalışma paketi durumu yok. no_results_content_text: Yeni durum ekle @@ -218,14 +218,14 @@ tr: form_configuration: Formu yapılandırma projects: Projeler enabled_projects: Etkin projeler - add_group: Add attribute group + add_group: Özellik grubu ekle add_table: Bağlantılı iş paketlerinin tablosunu ekle edit_query: Tabloyu düzenle query_group_placeholder: Tabloya bir ad verin reset: Varsayılanlara geri yükle type_color_text: | - Click to assign or change the color of this type. The selected color distinguishes work packages - in Gantt charts. + Bu türün rengini atamak veya değiştirmek için tıklayın. Seçilen renk iş paketlerini ayırt eder + Gantt listelerinde. versions: overview: no_results_title_text: Bu sürüme atadığım iş paketi bulunmuyor. @@ -238,13 +238,13 @@ tr: no_results_title_text: Sitemizde şuan iş akışı yok. work_packages: x_descendants: - one: One descendant work package - other: "%{count} work package descendants" + one: Bir soydan iş paketi + other: "%{count} Bir soydan iş paketi" bulk: - could_not_be_saved: 'The following work packages could not be saved:' + could_not_be_saved: 'Aşağıdaki iş paketleri kaydedilemedi:' move: - no_common_statuses_exists: There is no status available for all selected work - packages. Their status cannot be changed. + no_common_statuses_exists: Seçilen tüm iş paketleri için uygun bir durum yoktur. + Durumları değiştirilemez. unsupported_for_multiple_projects: Birden çok projeden iş paketi için toplu taşıma / kopyalama desteklenmiyor list_simple: @@ -304,10 +304,10 @@ tr: oturum açmanız mümkün olmaz. Eğer bu uygulamaya tekrar üye olmak isterseniz. uygulamanın izin verdiği yollarla bunu gerçekleştirebilirsiniz. login_verification: - other: Enter the login %{name} to verify the deletion. Once submitted, you - will be asked to confirm your password. - self: Enter your login %{name} to verify the deletion. Once submitted, you - will be asked to confirm your password. + other: Silme işlemini doğrulamak için %{name} girişini girin. Gönderildikten + sonra, şifrenizi onaylamanız istenir. + self: Silme işlemini doğrulamak için giriş bilgilerinizi %{name} girin. Gönderildikten + sonra, şifrenizi onaylamanız istenir. error_inactive_activation_by_mail: 'Hesabınız henüz etkinleştirilmedi. Hesabınızı etkinleştirmek için size gönderilen e-posta bağlantısını tıklatın. @@ -475,13 +475,14 @@ tr: type: Tür watcher: Takipçi doorkeeper/application: - uid: Client ID - secret: Client secret - owner: Owner - redirect_uri: Redirect URI - client_credentials_user_id: Client Credentials User ID - scopes: Scopes - confidential: Confidential + uid: Müşteri Kimliği + secret: Müşteri gizliliği + owner: Ürün Sahibi + redirect_uri: Yönlendirme URI'si + client_credentials_user_id: Müşteri Kimlik Bilgileri ve Kullanıcı Kimliği + gereklidir + scopes: kapsamları + confidential: Gizli errors: messages: accepted: kabul edilmelidir. @@ -513,7 +514,7 @@ tr: not_a_date: geçerli bir tarih değil. not_a_datetime: geçerli bir zaman değil. not_a_number: bir sayı değil. - not_allowed: is invalid because of missing permissions. + not_allowed: Eksik izinler nedeniyle geçersiz. not_an_integer: bir tamsayı değil. not_an_iso_date: 'geçerli bir tarih değil. Gerekli biçim:: YYYY-AA-GG.' not_same_project: aynı projeye ait değil. @@ -533,8 +534,7 @@ tr: only_one_allowed: "(%{name}) yalnızca bir değer verilir." empty: "(%{name}) değeri boş olamaz." inclusion: "(%{name}) değer izin verilen değerlerden birine ayarlı değil." - not_logged_in: "(%{name}) value cannot be set because you are not logged - in." + not_logged_in: "(%{name}) değeri, giriş yapmadığınız için ayarlanamıyor." not_an_integer: "(%{name}) bir tamsayı değil." smaller_than_or_equal_to: "(%{name}) %{count} ' e eşit veya daha küçük olmalıdır." greater_than_or_equal_to: "(%{name}) sıfırdan büyük veya %{count} ' e eşit @@ -542,19 +542,19 @@ tr: doorkeeper/application: attributes: redirect_uri: - fragment_present: cannot contain a fragment. + fragment_present: parça içeremez. invalid_uri: geçerli bir URI olmalıdır. - relative_uri: must be an absolute URI. - secured_uri: must be an HTTPS/SSL URI. - forbidden_uri: is forbidden by the server. + relative_uri: mutlaka bir URI olmalıdır. + secured_uri: HTTPS / SSL URI olması gerekir. + forbidden_uri: sunucu tarafından yasaklanmıştır. scopes: - not_match_configured: doesn't match available scopes. + not_match_configured: mevcut kapsamlarla eşleşmiyor. enterprise_token: unreadable: okunamıyor. Desteklenen bir destek anahtarı olduğuna emin misiniz? grids/grid: - overlaps: overlap. - outside: is outside of the grid. - end_before_start: end value needs to be larger than the start value. + overlaps: üst üste gelmek. + outside: Grup dışında görünmektedir. + end_before_start: son değerin başlangıç değerinden daha büyük olması gerekir. parse_schema_filter_params_service: attributes: base: @@ -613,8 +613,7 @@ tr: status_id: status_transition_invalid: geçerli kullanıcının rolleri için eski durumdan yeni duruma geçerli bir geçiş mevcut olmadığından geçersiz. - status_invalid_in_type: is invalid because the current status does not - exist in this type. + status_invalid_in_type: Geçerli durum bu türde bulunmadığından geçersiz. type: cannot_be_milestone_due_to_children: kilometre taşı olmaz çünkü alt iş paketlerine sahip. @@ -632,7 +631,7 @@ tr: attribute_unknown: Geçersiz iş paketi özniteliği kullanıldı. duplicate_group: "'%{group}' grup adı, birden fazla kez kullanıldı. Grup isimleri benzersiz olmalıdır." - query_invalid: 'The embedded query ''%{group}'' is invalid: %{details}' + query_invalid: 'Gömülü sorgu ''%{group}'' geçersiz: %{details}' group_without_name: Adsız gruplara izin verilmez. user: attributes: @@ -686,7 +685,7 @@ tr: wiki_page: Viki sayfası workflow: İş akışı work_package: İş paketi - doorkeeper/application: OAuth application + doorkeeper/application: OAuth uygulaması errors: header_invalid_fields: 'Aşağıdaki alanları ile ilgili sorunlar oluştu:' field_erroneous_label: |- @@ -762,7 +761,7 @@ tr: button_change_password: Parolayı değiştir button_check_all: Tümünü işaretle button_clear: Temizle - button_click_to_reveal: Click to reveal + button_click_to_reveal: Ortaya çıkarmak için tıklayın button_close: Kapat button_collapse_all: Tümünü daralt button_configure: Düzenle @@ -792,7 +791,7 @@ tr: button_remove: Kaldır button_rename: Yeniden adlandır button_replace: Değiştir - button_revoke: Revoke + button_revoke: İptal etmek button_reply: Yanıt button_reset: Sıfırla button_rollback: Bu sürüme geri al @@ -822,16 +821,18 @@ tr: decline_warning_message: Onay vermeyi reddettiniz ve çıkış yaptınız. user_has_consented: Kullanıcı, belirtilen zamanda yapılandırılmış ifadenize izin verdi. - not_yet_consented: User has not consented yet, will be requested upon next login. - contact_mail_instructions: Define the mail address that users can reach a data - controller to perform data change or removal requests. - contact_your_administrator: Please contact your administrator if you want to have - your account deleted. - contact_this_mail_address: Please contact %{mail_address} if you want to have - your account deleted. - text_update_consent_time: Check this box to force users to consent again. Enable - when you have changed the legal aspect of the consent information above. - update_consent_last_time: 'Last update of consent: %{update_time}' + not_yet_consented: Kullanıcı henüz onaylamadı, bir sonraki oturum açmada talep + edilecek. + contact_mail_instructions: Veri değişikliği veya kaldırma isteklerini gerçekleştirmek + için kullanıcıların bir veri denetleyicisine erişebilecekleri posta adresini + tanımlayın. + contact_your_administrator: Hesabınızın silinmesini istiyorsanız, lütfen yöneticinize + başvurun. + contact_this_mail_address: Hesabınızın silinmesini istiyorsanız, lütfen %{mail_address} + ile iletişime geçin. + text_update_consent_time: Kullanıcıları tekrar onaylamaya zorlamak için bu kutuyu + işaretleyin. Yukarıdaki izin bilgilerinin yasal yönünü değiştirdiğinizde etkinleştirin. + update_consent_last_time: 'Rıza son güncelleme: %{update_time}' copy_project: started: '"%{source_project_name}" adlı proje "%{target_project_name}" adlı yeni bir projeye kopyalanmaya başladı. "%{target_project_name}" projesi hazır olduğunda @@ -1044,8 +1045,8 @@ tr: enumeration_reported_project_statuses: Bildirilen proje durumları error_auth_source_sso_failed: Çoklu oturum açma (SSO) için kullanıcı '%{value}' başarısız oldu - error_can_not_archive_project: 'This project cannot be archived: There is at least - one work package assigned to a version defined in this project.' + error_can_not_archive_project: 'Bu proje arşivlenemiyor: Bu projede tanımlanan bir + sürüme atanmış en az bir iş paketi var.' error_can_not_delete_entry: Girdi silinemiyor error_can_not_delete_custom_field: Özel alan silinemiyor error_can_not_delete_type: Bu tür iş paketleri içeriyor ve silinemez. @@ -1060,20 +1061,20 @@ tr: error_custom_option_not_found: Seçenek yok. error_dependent_work_package: 'Bağımlı #%{related_id} %{related_subject} iş paketinde hata: %{error}' - error_enterprise_activation_user_limit: Your account could not be activated (user - limit reached). Please contact your administrator to gain access. + error_enterprise_activation_user_limit: Hesabınız etkinleştirilemedi (kullanıcı + limitine ulaşıldı). Erişim sağlamak için lütfen yöneticinize başvurun. error_failed_to_delete_entry: Girdi silinemedi. error_invalid_selected_value: Seçili değeri geçersiz. error_invalid_group_by: "%{value} ya göre guplandırılamadı" error_invalid_query_column: 'Geçersiz sorgu sütunu: %{value}' error_invalid_sort_criterion: 'Sütuna göre sıralama yapamazsınız: %{value}' - error_journal_attribute_not_present: Journal does not contain attribute %{attribute}. + error_journal_attribute_not_present: Günlük %{attribute} özniteliği içermiyor. error_pdf_export_too_many_columns: PDF Dışa Aktarma için çok fazla sütun seçili. Sütun sayısını azaltın. error_pdf_failed_to_export: 'PDF çıktısı kaydedilemedi: %{error}' - error_token_authenticity: Unable to verify Cross-Site Request Forgery token. Did - you try to submit data on multiple browsers or tabs? Please close all tabs and - try again. + error_token_authenticity: Siteler Arası İstek Sahteciliği belirteci doğrulanamadı. + Birden fazla tarayıcı veya sekme hakkında veri göndermeyi denediniz mi? Lütfen + tüm sekmeleri kapatın ve tekrar deneyin error_work_package_done_ratios_not_updated: İş tamamlanma oranları güncellenmedi. error_work_package_not_found_in_project: Iş paketi bulunamadı veya bu projeye ait değil @@ -1103,7 +1104,7 @@ tr: ' error_external_authentication_failed: Harici doğrulama sırasında bir hata oluştu. Lütfen tekrar deneyin. - error_attribute_not_highlightable: 'Attribute(s) not highlightable: %{attributes}' + error_attribute_not_highlightable: 'Nitelikler vurgulanmıyor: %{attributes}' events: project: Proje düzenlendi changeset: Değişiklikler düzenlendi @@ -1146,7 +1147,7 @@ tr: homescreen: additional: projects: Bu bölümdeki görülebilir en yeni projeler. - no_visible_projects: There are no visible projects in this instance. + no_visible_projects: Bu durumda görünür bir proje yok. users: Bu bölümdeki kaydolan en son kullanıcılar. blocks: community: OpenProject topluluğu @@ -1276,7 +1277,7 @@ tr: label_close_versions: Tamamlanmış sürümleri kapat label_closed_work_packages: kapalı label_collapse: Daralt - label_collapsed_click_to_show: Collapsed. Click to show + label_collapsed_click_to_show: Daraltılmış. Göstermek için tıklayın label_configuration: konfigürasyon label_comment_add: Yorum ekle label_comment_added: Yorum eklendi @@ -1342,7 +1343,7 @@ tr: label_enumeration_value: Numaralandırma değeri label_enumerations: Sayım Listesi label_enterprise: Kurumsal - label_enterprise_active_users: "%{current}/%{limit} booked active users" + label_enterprise_active_users: "%{current}/%{limit} aktif kullanıcı rezervasyonu" label_enterprise_edition: Kurumsal Sürüm label_environment: Ortam label_estimates_and_time: Tahminler & zaman @@ -1350,7 +1351,7 @@ tr: label_everywhere: heryer label_example: Örnek label_export_to: 'Ayrıca şu adreste bulunabilir:' - label_expanded_click_to_collapse: Expanded. Click to collapse + label_expanded_click_to_collapse: Genişletilmiş. Daraltmak için tıklayın label_f_hour: "%{value} saat" label_f_hour_plural: "%{value} saat" label_feed_plural: Akışlar @@ -1377,7 +1378,7 @@ tr: label_group_by: Grupla label_group_new: Yeni grup label_group: Grup - label_group_named: Group %{name} + label_group_named: "%{name} Grubu" label_group_plural: Gruplar label_help: Yardım label_here: buraya @@ -1386,7 +1387,7 @@ tr: label_hierarchy_leaf: Hiyerarşi ağacı label_home: Ana sayfa label_subject_or_id: Konu ya da ID - label_impressum: Impressum + label_impressum: Künye label_in: şurada label_in_less_than: daha azdır label_in_more_than: daha fazla @@ -1445,7 +1446,7 @@ tr: label_message_plural: Mesajlar label_message_posted: Mesaj eklendi label_min_max_length: En az - En çok uzunluk - label_minute_plural: notlar + label_minute_plural: dakika label_missing_api_access_key: Eksik API erişim anahtarı label_missing_feeds_access_key: Eksik RSS erişim anahtarı label_modification: "%{count} değişim" @@ -1519,7 +1520,7 @@ tr: label_previous_week: Geçen Hafta label_principal_invite_via_email: " veya yeni kullanıcılar e-posta ile davet et" label_principal_search: Mevcut kullanıcıları veya grupları ekle - label_privacy_policy: Data privacy and security policy + label_privacy_policy: Veri gizliliği ve güvenlik politikası label_product_version: Ürün sürümü label_professional_support: Profesyonel destek label_profile: Profil @@ -1767,16 +1768,16 @@ tr: macro_execution_error: Makroyu çalıştırırken hata oluştu %{macro_name} macro_unavailable: Makro %{macro_name} görüntülenemiyor. macros: - placeholder: "[Placeholder] Macro %{macro_name}" + placeholder: "[Yer Tutucu] Makro %{macro_name}" errors: missing_or_invalid_parameter: Eksik ya da geçersiz macro parametreleri. legacy_warning: - timeline: This legacy timeline macro has been removed and is no longer available. - You can replace the functionality with an embedded table macro. + timeline: Bu eski zaman çizelgesi makrosu kaldırıldı ve artık kullanılamıyor. + İşlevselliği katıştırılmış tablo makrosu ile değiştirebilirsiniz. include_wiki_page: errors: page_not_found: Wiki sayfası '%{name} ' bulunamıyor. - circular_inclusion: Circular inclusion of pages detected. + circular_inclusion: Sayfaların dairesel olarak dahil edilmesi algılandı. create_work_package_link: errors: no_project_context: Proje içeriği dışından create_work_package_link makrosu @@ -1805,12 +1806,12 @@ tr: mail_user_activation_limit_reached: subject: Kullanıcı etkinleştirme sınırına ulaşıldı message: | - A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). - The user cannot activate their account since the user limit has been reached. + Yeni bir kullanıcı (%{email}) yönettiğiniz bir OpenProject ortamında bir hesap oluşturmaya çalıştı (%{host}). + Kullanıcı sınırına ulaşıldığından beri kullanıcı hesaplarını etkinleştiremiyor. steps: - label: 'To allow the user to sign in you can either: ' - a: Upgrade your payment plan ([here](upgrade_url)) - b: Lock or delete an existing user ([here](users_url)) + label: 'Kullanıcının oturum açmasına izin vermek için şunlardan birini yapabilirsiniz:' + a: Ödeme planınızı yükseltin ([here](upgrade_url)) + b: Mevcut bir kullanıcıyı kilitle veya sil ([buradan](users_url)) more_actions: Daha fazla işlev noscript_description: OpenProject'i kullanmak için JavaScript'i etkinleştirmeniz gerekiyor! @@ -1838,8 +1839,8 @@ tr: notice_account_update_failed: Hesabı ayarları kaydedilemedi. Lütfen hesap sayfanızın bir göz atın. notice_account_updated: Hesap başarıyla güncellendi. - notice_account_other_session_expired: All other sessions tied to your account have - been invalidated. + notice_account_other_session_expired: Hesabınıza bağlı diğer tüm oturumlar geçersiz + hale getirildi. notice_account_wrong_password: Hatalı parola notice_account_registered_and_logged_in: Hoş geldiniz, hesabınız etkinleştirildi. Şimdi giriş yaptınız. @@ -2199,8 +2200,8 @@ tr: setting_commit_ref_keywords: Anahtar kelimeleri referansla setting_consent_time: Rıza süresi setting_consent_info: Rıza bilgi metni - setting_consent_required: Consent required - setting_consent_decline_mail: Consent contact mail address + setting_consent_required: Onay gerekli + setting_consent_decline_mail: Onay iletişim posta adresi setting_cross_project_work_package_relations: Projeler arası iş paketi ilişkilerine izin ver setting_date_format: Tarih formatı @@ -2240,7 +2241,7 @@ tr: kısaltın setting_mail_handler_body_delimiter_regex: Bu düzenli ifade ile uyuşan e-postaları kırp - setting_mail_handler_ignore_filenames: Ignored mail attachments + setting_mail_handler_ignore_filenames: Yoksayılan posta ekleri setting_new_project_user_role_id: Bir proje oluşturan yönetici olmayan bir kullanıcıya verilen rolü setting_password_active_rules: Aktif karakter sınıfları @@ -2253,7 +2254,7 @@ tr: setting_per_page_options: Sayfa başı nesne seçenekleri setting_plain_text_mail: Düz metin postası (HTML yok) setting_protocol: Protokol - setting_security_badge_displayed: Display security badge + setting_security_badge_displayed: Güvenlik rozeti göster setting_registration_footer: Kayıt alt bilgisi setting_repositories_automatic_managed_vendor: Otomatik depo satıcısı türü setting_repositories_encodings: Depolar kodlamaları @@ -2289,8 +2290,8 @@ tr: setting_wiki_compression: Wiki geçmişini sıkıştır setting_work_package_group_assignment: Gruplara iş atanmasına izin ver setting_work_package_list_default_highlighting_mode: Varsayılan vurgulama modu - setting_work_package_list_default_highlighted_attributes: Default inline highlighted - attributes + setting_work_package_list_default_highlighted_attributes: Varsayılan satır içi vurgulanan + özellikler settings: general: Genel other: Diğer @@ -2302,7 +2303,7 @@ tr: deletion: Silme highlighting: mode_long: - inline: Highlight attribute(s) inline + inline: 'Satır içi öznitelikleri vurgula ' none: Vurgulama status: Duruma göre tüm satır type: Türe göre tüm satır @@ -2400,8 +2401,11 @@ tr: text_journal_aggregation_time_explanation: Yaş farkı belirtilen zaman aralığından azsa dergileri görüntü için birleştirin. Bu aynı zamanda posta bildirimlerini aynı süreyle erteleyecektir. - text_journal_changed: "%{label} changed from %{old}
to %{new}" - text_journal_changed_plain: "%{label} changed from %{old} \nto %{new}" + text_journal_changed: "%{label} %{old} 'den ' e değiştirildi + %{new}" + text_journal_changed_plain: |- + %{label} %{old} den değiştirildi + %{new} 'e text_journal_changed_no_detail: "%{label} güncellendi" text_journal_changed_with_diff: "%{label} değişti ( %{link})" text_journal_deleted: "%{label}, ( %{old}) silindi" @@ -2421,14 +2425,14 @@ tr: text_no_notes: Bu çalışma paketi için bir yorum bulunmuyor. text_notice_too_many_values_are_inperformant: 'Not: Her sayfada 100''den fazla öğe gösterildiğinde, sayfa yükleme süresi artabilir.' - text_notice_security_badge_displayed_html: 'Note: if enabled, this will display - a badge with your installation status in the %{information_panel_label} - administration panel, and on the home page. It is displayed to administrators - only.
The badge will check your current OpenProject version against the - official OpenProject release database to alert you of any updates or known vulnerabilities. - For more information on what the check provides, what data is needed to provide - available updates, and how to disable this check, please visit the - configuration documentation. + text_notice_security_badge_displayed_html: 'Not: Etkinleştirildiğinde, bu, %{information_panel_label} + yönetim panelinde ve giriş sayfasında yükleme durumunuzla birlikte bir rozet görüntüler. + Sadece yöneticilere gösterilir.
Rozet, mevcut OpenProject sürümünüzü resmi + OpenProject sürüm veritabanına karşı kontrol eder ve sizi herhangi bir güncelleme + veya bilinen güvenlik açığı hakkında uyarır. Çekin sağladığı, mevcut güncellemeleri + sağlamak için hangi verilerin gerekli olduğu ve bu kontrolün nasıl devre dışı + bırakılacağı hakkında daha fazla bilgi için lütfen + yapılandırma belgelerini ziyaret edin. ' text_own_membership_delete_confirmation: İzinlerinizden bazılarını veya tümünü kaldırmak @@ -2587,8 +2591,8 @@ tr: project_time_filter_historical_from: başlangıç project_time_filter_historical_to: bitiş project_time_filter_historical: "%{start_label} %{startdate} %{end_label} %{enddate}" - project_time_filter_relative: "%{start_label} %{startspan}%{startspanunit} ago, - %{end_label} %{endspan}%{endspanunit} from now" + project_time_filter_relative: "%{start_label} %{startspan} %{startspanunit} + önce, %{end_label} %{endspan} %{endspanunit} bundan sonra" project_filters: Projeleri filtrele project_responsible: Sorumlularıyla birlikte projeleri göster project_status: Proje durumunu göster @@ -2619,7 +2623,7 @@ tr: level5: Seviye 5 genişletin all: Tümünü göster reporting_for_project: - show: 'Status reported to project: %{title}' + show: Projeye rapor edilen durum:%{title} edit_delete: 'proje durum raporu: %{title}' history: 'Proje durum geçmişi: %{title}' reporting: @@ -2653,7 +2657,7 @@ tr: quarters: Üç aylık years: Yıl title_remove_and_delete_user: Davet edilen kullanıcıyı projeden çıkarın ve onu silin. - title_enterprise_upgrade: Upgrade to unlock more users. + title_enterprise_upgrade: Daha fazla kullanıcının kilidini açmak için yükseltme. tooltip_user_default_timezone: 'Yeni kullanıcılar için varsayılan saat dilimi. Bir kullanıcının ayarlarında değiştirilebilir. @@ -2684,9 +2688,9 @@ tr: activate_and_reset_failed_logins: Başarısız oturum açma işlemlerinin kilidini aç ve sıfırla authentication_provider: Kimlik doğrulama sağlayıcısı - authentication_settings_disabled_due_to_external_authentication: 'This user authenticates - via an external authentication provider, so there is no password in OpenProject - to be changed. + authentication_settings_disabled_due_to_external_authentication: 'Bu kullanıcı + harici bir kimlik doğrulama sağlayıcısı aracılığıyla kimlik doğrulaması yapar, + böylece OpenProject''de değiştirilecek şifre yoktur. ' authorization_rejected: Oturum açma izniniz yok. @@ -2698,8 +2702,8 @@ tr: confirm_status_change: "'%{name}' durumunu değiştirmek üzeresiniz. Devam etmek istediğinizden emin misiniz?" deleted: Kullanıcı silindi - error_status_change_failed: 'Changing the user status failed due to the following - errors: %{errors}' + error_status_change_failed: Kullanıcı durumunu değiştirmek aşağıdaki hatalardan + dolayı başarısız oldu:%{errors} invite: Kullanıcı e-posta ile davet invited: davet lock: Kalıcı olarak kilit @@ -2728,24 +2732,24 @@ tr: bırakıldı. warning: Uyarı warning_attachments_not_saved: "%{count} dosya (lar) kaydedilemedi." - warning_imminent_user_limit: 'You invited more users than are supported by your - current plan. Invited users may not be able to join your OpenProject environment. - Please upgrade your plan or block existing users - in order to allow invited and registered users to join. + warning_imminent_user_limit: 'Mevcut planınız tarafından desteklenenden daha fazla + kullanıcı davet ettiniz. Davet edilen kullanıcılar OpenProject ortamınıza katılamayabilir. + Lütfen davet edilen ve kayıtlı kullanıcıların katılmasına izin vermek için planınızı yükseltin veya mevcut kullanıcıları engelleyin. ' warning_registration_token_expired: 'Etkinleştirme e-postası süresi doldu. Sana yeni bir %{email} gönderdik. Hesabınızı etkinleştirmek için linki tıklayınız. ' - warning_user_limit_reached: 'User limit reached. You cannot activate any more users. - Please upgrade your plan or block members to allow - for additional users. + warning_user_limit_reached: 'Kullanıcı limitine ulaşıldı. Daha fazla kullanıcıyı + etkinleştiremezsiniz. Lütfen planınızı yükseltin + veya ek kullanıcılara izin vermek için üyeleri engelleyin. ' - warning_user_limit_reached_instructions: 'You reached your user limit (%{current}/%{max} - active users). Please contact sales@openproject.com to upgrade your Enterprise - Edition plan and add additional users. + warning_user_limit_reached_instructions: 'Kullanıcı sınırınıza ulaştınız (%{current}/%{max} + aktif kullanıcılar). Enterprise Edition planınızı yükseltmek ve ek kullanıcılar + eklemek için lütfen sales@openproject.com adresine başvurun. ' menu_item: Menü seçeneği @@ -2816,117 +2820,115 @@ tr: schema: Şema doorkeeper: pre_authorization: - status: Pre-authorization + status: Ön yetkilendirme errors: messages: - invalid_request: The request is missing a required parameter, includes an - unsupported parameter value, or is otherwise malformed. - invalid_redirect_uri: The requested redirect uri is malformed or doesn't match - client redirect URI. - unauthorized_client: The client is not authorized to perform this request - using this method. - access_denied: The resource owner or authorization server denied the request. - invalid_scope: The requested scope is invalid, unknown, or malformed. - invalid_code_challenge_method: The code challenge method must be plain or - S256. - server_error: The authorization server encountered an unexpected condition - which prevented it from fulfilling the request. - temporarily_unavailable: The authorization server is currently unable to handle - the request due to a temporary overloading or maintenance of the server. - credential_flow_not_configured: Resource Owner Password Credentials flow failed - due to Doorkeeper.configure.resource_owner_from_credentials being unconfigured. - resource_owner_authenticator_not_configured: Resource Owner find failed due - to Doorkeeper.configure.resource_owner_authenticator being unconfigured. - admin_authenticator_not_configured: Access to admin panel is forbidden due - to Doorkeeper.configure.admin_authenticator being unconfigured. - unsupported_response_type: The authorization server does not support this - response type. - invalid_client: Client authentication failed due to unknown client, no client - authentication included, or unsupported authentication method. - invalid_grant: The provided authorization grant is invalid, expired, revoked, - does not match the redirection URI used in the authorization request, or - was issued to another client. - unsupported_grant_type: The authorization grant type is not supported by the - authorization server. + invalid_request: İstekte gerekli bir parametre eksik, desteklenmeyen bir parametre + değeri içeriyor veya başka türlü hatalı biçimlendirilmiş. + invalid_redirect_uri: İstenen yönlendirme uri hatalı biçimlendirilmiş veya + müşteri yönlendirme URI'siyle eşleşmiyor. + unauthorized_client: Müşterinin bu yöntemi kullanarak bu talebi gerçekleştirme + yetkisi yok. + access_denied: Kaynak sahibi veya yetkilendirme sunucusu isteği reddetti. + invalid_scope: İstenen kapsam geçersiz, bilinmeyen veya hatalı biçimlendirilmiş. + invalid_code_challenge_method: Kod yükleme yöntemi düz veya S256 olmalıdır. + server_error: Yetkilendirme sunucusu, isteği yerine getirmesini engelleyen + beklenmeyen bir koşulla karşılaştı. + temporarily_unavailable: Yetkilendirme sunucusu şu anda sunucunun geçici bir + aşırı yüklenmesi veya bakımı nedeniyle isteği yerine getiremiyor. + credential_flow_not_configured: Kaynak Sahibi Şifresi Kimlik Bilgileri akışı, + Doorkeeper.configure.resource_owner_from_credentials'ın yapılandırılmamış + olması nedeniyle başarısız oldu. + resource_owner_authenticator_not_configured: Kaynak Sahibi, Doorkeeper.configure.resource_owner_authenticator'ın + yapılandırılmamış olması nedeniyle başarısız oldu. + admin_authenticator_not_configured: Doorkeeper.configure.admin_authenticator'ın + yapılandırılmamış olması nedeniyle yönetici paneline erişim yasaktır. + unsupported_response_type: Yetkilendirme sunucusu bu yanıt türünü desteklemiyor. + invalid_client: Müşteri kimlik doğrulaması, bilinmeyen müşteri, müşteri kimlik + doğrulaması eklenmemiş veya desteklenmeyen kimlik doğrulama yöntemi nedeniyle + başarısız oldu. + invalid_grant: Sağlanan yetkilendirme izni geçersiz, süresi dolmuş, iptal + edilmiş, yetkilendirme isteğinde kullanılan yönlendirme URI'siyle eşleşmiyor + veya başka bir müşteriye verilmiş. + unsupported_grant_type: Yetkilendirme izni türü, yetkilendirme sunucusu tarafından + desteklenmiyor. invalid_token: - revoked: The access token was revoked - expired: The access token expired - unknown: The access token is invalid + revoked: Erişim belirteci iptal edildi + expired: Erişim kartının süresi doldu + unknown: Erişim belirteci geçersiz unsupported_browser: title: Tarayıcınız güncel değil ya da desteklenmiyor. - message: You may run into errors and degraded experience on this page. + message: Bu sayfada hatalara ve bozulmuş deneyime maruz kalabilirsiniz. update_message: Lütfen tarayıcınızı güncelleyin. close_warning: Bu uyarıyı yoksay. oauth: application: - singular: OAuth application - plural: OAuth applications - named: OAuth application '%{name}' - new: New OAuth application - default_scopes: "(Default scopes)" + singular: OAuth uygulaması + plural: OAuth uygulamaları + named: Oauth uygulaması %{name} + new: Yeni OAuth uygulaması + default_scopes: "(Varsayılan kapsamlar)" instructions: - name: The name of your application. This will be displayed to other users - upon authorization. - redirect_uri_html: 'The allowed URLs authorized users can be redirected to. - One entry per line.
If you''re registering a desktop application, - use the following URL. + name: Uygulamanızın adı. Bu, yetkilendirildikten sonra diğer kullanıcılara + gösterilecektir. + redirect_uri_html: 'İzin verilen URL''ler yetkili kullanıcılar adresine yönlendirilebilir. + Her satıra bir giriş.
Bir masaüstü uygulamasına kaydoluyorsanız, aşağıdaki + URL''yi kullanın. ' - confidential: Check if the application will be used where the client secret - can be kept confidential. Native mobile apps and Single Page Apps are assumed - non-confidential. - client_credential_user_id: Optional user ID to impersonate when clients use - this application. Leave empty to allow public access only - register_intro: If you are developing an OAuth API client application for - OpenProject, you can register it using this form for all users to use. + confidential: Uygulamanın, müşteri sırrının gizli tutulabileceği yerlerde + kullanılıp kullanılmayacağını kontrol edin. Yerel mobil uygulamalar ve Tek + Sayfa Uygulamaları gizli değildir. + client_credential_user_id: İstemciler bu uygulamayı kullandıklarında kimliğe + bürünmek için isteğe bağlı kullanıcı kimliği. Yalnızca genel erişime izin + vermek için boş bırakın + register_intro: OpenProject için bir OAuth API istemci uygulaması geliştiriyorsanız, + tüm kullanıcıların kullanması için bu formu kullanarak kayıt olabilirsiniz. default_scopes: '' - client_id: Client ID - client_secret_notice: 'This is the only time we can print the client secret, please - note it down and keep it secure. It should be treated as a password and cannot - be retrieved by OpenProject at a later time. + client_id: Müşteri Kimliği + client_secret_notice: 'Müşterinin sırrını basabileceğimiz tek zaman bu, lütfen + not edin ve güvende tutun. Parola olarak değerlendirilmeli ve daha sonra OpenProject + tarafından alınamaz. ' authorization_dialog: authorize: Yetkilendir - cancel: Cancel and deny authorization. - prompt_html: Authorize %{application_name} to use your account - %{login}? - title: Authorize %{application_name} - wants_to_access_html: 'This application requests access to your OpenProject - account.
It has requested the following permissions: + cancel: İptal et ve izni reddet. + prompt_html: Hesabınızı %{application_name} kullanmak için + %{login}?yetkilendirilsin mi? + title: "%{application_name} adlı kişiyi yetkilendir" + wants_to_access_html: 'Bu uygulama OpenProject hesabınıza erişim istiyor.
+ Aşağıdaki izinleri istedi: ' scopes: - api_v3: Full API access - api_v3_text: Application will receive full read & write access to the OpenProject - API to perform actions on your behalf. + api_v3: Tam API erişimi + api_v3_text: Uygulama, sizin adınıza işlem yapmak için OpenProject API'sine + tam okuma ve yazma erişimi alır. grants: - created_date: Approved on + created_date: Tarihinde onaylandı scopes: İzinler - successful_application_revocation: Revocation of application %{application_name} - successful. - none_given: No OAuth applications have been granted access to your user account. + successful_application_revocation: "%{application_name} uygulamasının iptali + başarılı oldu." + none_given: Hiçbir OAuth uygulamasına kullanıcı hesabınıza erişim izni verilmedi. x_active_tokens: - one: one active token + one: "%{count} bir aktif belirteç" other: "%{count} active token" flows: - authorization_code: Authorization code flow - client_credentials: Client credentials flow - client_credentials: User used for Client credentials - client_credentials_impersonation_set_to: Client credentials user set to - client_credentials_impersonation_warning: 'Note: Clients using the ''Client credentials'' - flow in this application will have the rights of this user' - client_credentials_impersonation_html: 'By default, OpenProject provides OAuth - 2.0 authorization via %{authorization_code_flow_link}. You can optionally enable - %{client_credentials_flow_link}, but you must provide a user on whose behalf - requests will be performed. + authorization_code: Yetki kodu akışı + client_credentials: Müşteri kimlik bilgisi akışı + client_credentials: Müşteri kimlik bilgileri için kullanılan kullanıcı + client_credentials_impersonation_set_to: İstemci kimlik bilgileri kullanıcısı + olarak ayarlandı + client_credentials_impersonation_warning: 'Not: Bu uygulamadaki ''Müşteri kimlik + bilgileri'' akışını kullanan müşteriler bu kullanıcının haklarına sahip olacak' + client_credentials_impersonation_html: 'Varsayılan olarak, OpenProject,%{authorization_code_flow_link}. + yoluyla OAuth 2.0 yetkilendirmesi sağlar. İsteğe bağlı olarak%{client_credentials_flow_link} + özelliğini etkinleştirebilirsiniz, ancak kendi adına istekleri gerçekleştirilecek + bir kullanıcı sağlamanız gerekir. ' - authorization_error: An authorization error has occurred. - revoke_my_application_confirmation: Do you really want to remove this application? - This will revoke %{token_count} active for it. - my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Gelen e-posta web hizmetini etkinleştir - setting_mail_handler_api_description: E-posta web işleyici, OpenProject'in belirli - komutları enstrümantasyon mekanizması olarak (örneğin iş paketleri oluşturmak - ve güncellemek için) içeren e-postaları almasını sağlar. + authorization_error: Bir yetkilendirme hatası oluştu. + revoke_my_application_confirmation: Bu uygulamayı gerçekten kaldırmak istiyor + musunuz? Bu, %{token_count} aktif olanını iptal edecektir. + my_registered_applications: OAuth uygulamalarını kayıtedin diff --git a/config/locales/crowdin/uk.yml b/config/locales/crowdin/uk.yml index 5f62498d05..1b0f80a42b 100644 --- a/config/locales/crowdin/uk.yml +++ b/config/locales/crowdin/uk.yml @@ -2975,7 +2975,3 @@ uk: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Enable incoming email web service - setting_mail_handler_api_description: The email web handler enables OpenProject - to receive emails containing specific commands as an instrumentation mechanism - (e.g., to create and update work packages). diff --git a/config/locales/crowdin/vi.yml b/config/locales/crowdin/vi.yml index 5d3a282eab..00e29626ec 100644 --- a/config/locales/crowdin/vi.yml +++ b/config/locales/crowdin/vi.yml @@ -2928,7 +2928,3 @@ vi: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: Enable incoming email web service - setting_mail_handler_api_description: The email web handler enables OpenProject - to receive emails containing specific commands as an instrumentation mechanism - (e.g., to create and update work packages). diff --git a/config/locales/crowdin/zh-TW.yml b/config/locales/crowdin/zh-TW.yml index 6b3b8de0cd..db4619f467 100644 --- a/config/locales/crowdin/zh-TW.yml +++ b/config/locales/crowdin/zh-TW.yml @@ -2665,5 +2665,3 @@ zh-TW: revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: 啟用寄入電子郵件網路服務 - setting_mail_handler_api_description: 電子郵件網路接收使 OpenProject 可以接收包含特殊命令作為編輯機制的電子郵件(例如:建立或更新工作項目)。 diff --git a/config/locales/crowdin/zh.yml b/config/locales/crowdin/zh.yml index da4e0eb863..2c08595336 100644 --- a/config/locales/crowdin/zh.yml +++ b/config/locales/crowdin/zh.yml @@ -46,19 +46,18 @@ zh: no_results_content_title: 目前是非身份验证模式。 no_results_content_text: 创建一个新的身份验证模式 ldap_auth_sources: - connection_encryption: Connection encryption + connection_encryption: 连接加密 tls_mode: plain: 无 simple_tls: simple_tls start_tls: start_tls - plain_description: Plain unencrypted connection, no TLS negotiation. + plain_description: 明文不加密的连接,无TLS协商。 simple_tls_description: Implicit TLS encryption, but no certificate validation. Use with caution and implicit trust of the LDAP connection. start_tls_description: Explicit TLS encryption with full validation. Use for LDAP over TLS/SSL. - section_more_info_link_html: 'This section concerns the connection security - of this LDAP authentication source. For more information, visit the - Net::LDAP documentation. + section_more_info_link_html: '此部分涉及此LDAP认证源的连接安全。更多信息,访问 网络::LDAP + 文档。 ' boards: @@ -126,11 +125,11 @@ zh: delete: scheduled: Deletion has been scheduled and is perfomed in the background. You will be notified of the result. - schedule_failed: 'Project cannot be deleted: %{errors}' - failed: Deletion of project %{name} has failed + schedule_failed: '项目不能删除: %{errors}' + failed: 项目 %{name} 删除失败 failed_text: The request to delete project %{name} has failed. The project was left archived. - completed: Deletion of project %{name} completed + completed: 项目 %{name} 删除完成 completed_text: The request to delete project '%{name}' has been completed. index: no_results_title_text: 目前没有项目。 @@ -224,7 +223,7 @@ zh: one: One descendant work package other: "%{count} 个子工作包" bulk: - could_not_be_saved: 'The following work packages could not be saved:' + could_not_be_saved: 无法保存以下工作包: move: no_common_statuses_exists: 所有选中的工作包都没有可用的状态,因此无法更改其状态。 unsupported_for_multiple_projects: 不支持多个项目工作包的大批量移动/复制 @@ -338,10 +337,10 @@ zh: encoded_token: 企业版支持令牌 active_user_count_restriction: 最大活动用户数 grids/grid: - page: Page - row_count: Number of rows - column_count: Number of columns - widgets: Widgets + page: 页 + row_count: 行数 + column_count: 列数 + widgets: 小部件 relation: delay: 延迟 from: 工作包 @@ -431,13 +430,13 @@ zh: type: 类型 watcher: 关注者 doorkeeper/application: - uid: Client ID - secret: Client secret - owner: Owner - redirect_uri: Redirect URI - client_credentials_user_id: Client Credentials User ID - scopes: Scopes - confidential: Confidential + uid: 客户端 ID + secret: 客户端密钥 + owner: 所有者 + redirect_uri: 重定向 URI + client_credentials_user_id: 客户端证书用户 ID + scopes: 范围 + confidential: 保密 errors: messages: accepted: 必须接受。 @@ -493,18 +492,18 @@ zh: doorkeeper/application: attributes: redirect_uri: - fragment_present: cannot contain a fragment. - invalid_uri: must be a valid URI. - relative_uri: must be an absolute URI. - secured_uri: must be an HTTPS/SSL URI. - forbidden_uri: is forbidden by the server. + fragment_present: 不能包含片段。 + invalid_uri: 必须是有效的 URI。 + relative_uri: 必须是绝对URI。 + secured_uri: 必须是 HTTPS/SSL URI。 + forbidden_uri: 被服务器禁止。 scopes: - not_match_configured: doesn't match available scopes. + not_match_configured: 与可用范围不匹配。 enterprise_token: unreadable: 无法读取。是否确定为支持令牌? grids/grid: - overlaps: overlap. - outside: is outside of the grid. + overlaps: 重叠. + outside: 不在网格内。 end_before_start: end value needs to be larger than the start value. parse_schema_filter_params_service: attributes: @@ -624,7 +623,7 @@ zh: wiki_page: 维基页面 workflow: 工作流 work_package: 工作包 - doorkeeper/application: OAuth application + doorkeeper/application: OAuth应用程序 errors: header_invalid_fields: 以下字段有问题: field_erroneous_label: |- @@ -700,7 +699,7 @@ zh: button_change_password: 更改密码 button_check_all: 全选 button_clear: 清除 - button_click_to_reveal: Click to reveal + button_click_to_reveal: 单击以显示 button_close: 关闭 button_collapse_all: 全部折叠 button_configure: 配置 @@ -730,7 +729,7 @@ zh: button_remove: 移除 button_rename: 重命名 button_replace: 替换 - button_revoke: Revoke + button_revoke: 撤消 button_reply: 答复 button_reset: 重置 button_rollback: 回滚到此版本 @@ -1249,7 +1248,7 @@ zh: label_environment: 环境 label_estimates_and_time: 预估成本和时间 label_equals: 是 - label_everywhere: everywhere + label_everywhere: 任何位置 label_example: 示例 label_export_to: 在其中也可用: label_expanded_click_to_collapse: 展开。点击折叠 @@ -1286,7 +1285,7 @@ zh: label_history: 历史 label_hierarchy_leaf: 层次结构叶 label_home: 首页 - label_subject_or_id: Subject or ID + label_subject_or_id: 主题或ID label_impressum: Impressum label_in: 在 label_in_less_than: 在小于 @@ -1420,7 +1419,7 @@ zh: label_previous_week: 前一周 label_principal_invite_via_email: " 或通过电子邮件邀请新用户" label_principal_search: 添加现有用户或组 - label_privacy_policy: Data privacy and security policy + label_privacy_policy: 数据隐私和安全政策 label_product_version: 产品版本 label_professional_support: 专业支持 label_profile: 配置文件 @@ -1563,7 +1562,7 @@ zh: label_view_diff: 查看差异 label_view_revisions: 查看修订版本 label_watched_work_packages: 受关注的工作包 - label_what_is_this: What is this? + label_what_is_this: 这是什么? label_week: 周 label_wiki_content_added: 添加 Wiki 页面 label_wiki_content_updated: 更新 Wiki 页面 @@ -2064,7 +2063,7 @@ zh: setting_mail_handler_api_key: API 密钥 setting_mail_handler_body_delimiters: 在这些行之后截断电子邮件 setting_mail_handler_body_delimiter_regex: 清空符合此正则表达式的电子邮件 - setting_mail_handler_ignore_filenames: Ignored mail attachments + setting_mail_handler_ignore_filenames: 忽略的邮件附件 setting_new_project_user_role_id: 给创建项目的非管理员用户的角色 setting_password_active_rules: 激活支付类型 setting_password_count_former_banned: 禁止重复使用最近使用密码的数量 @@ -2074,7 +2073,7 @@ zh: setting_per_page_options: 每页对象选项 setting_plain_text_mail: 纯文本邮件 (没有 HTML) setting_protocol: 协议 - setting_security_badge_displayed: Display security badge + setting_security_badge_displayed: 显示安全徽章 setting_registration_footer: 注册页脚 setting_repositories_automatic_managed_vendor: 自动存储库供应商类型 setting_repositories_encodings: 代码库的编码 @@ -2546,7 +2545,7 @@ zh: schema: 方案 doorkeeper: pre_authorization: - status: Pre-authorization + status: 预授权 errors: messages: invalid_request: The request is missing a required parameter, includes an @@ -2556,7 +2555,7 @@ zh: unauthorized_client: The client is not authorized to perform this request using this method. access_denied: The resource owner or authorization server denied the request. - invalid_scope: The requested scope is invalid, unknown, or malformed. + invalid_scope: 申请范围无效、未知或形式错误 invalid_code_challenge_method: The code challenge method must be plain or S256. server_error: The authorization server encountered an unexpected condition @@ -2579,20 +2578,20 @@ zh: unsupported_grant_type: The authorization grant type is not supported by the authorization server. invalid_token: - revoked: The access token was revoked - expired: The access token expired - unknown: The access token is invalid + revoked: 访问令牌已被撤销 + expired: 访问令牌已过期 + unknown: 访问令牌无效 unsupported_browser: - title: Your browser is outdated and unsupported. - message: You may run into errors and degraded experience on this page. + title: 您的浏览器已经过时,或不被支持。 + message: 此页面可能会发生运行错误和不良用户体验。 update_message: 请升级您的浏览器。 close_warning: 请忽略这个警告。 oauth: application: - singular: OAuth application - plural: OAuth applications + singular: OAuth应用程序 + plural: OAuth应用程序 named: OAuth application '%{name}' - new: New OAuth application + new: 新的 OAuth 应用程序 default_scopes: "(Default scopes)" instructions: name: The name of your application. This will be displayed to other users @@ -2610,15 +2609,15 @@ zh: register_intro: If you are developing an OAuth API client application for OpenProject, you can register it using this form for all users to use. default_scopes: '' - client_id: Client ID + client_id: 客户端 ID client_secret_notice: 'This is the only time we can print the client secret, please note it down and keep it secure. It should be treated as a password and cannot be retrieved by OpenProject at a later time. ' authorization_dialog: - authorize: Authorize - cancel: Cancel and deny authorization. + authorize: 授权 + cancel: 取消并拒绝授权。 prompt_html: Authorize %{application_name} to use your account %{login}? title: Authorize %{application_name} @@ -2627,7 +2626,7 @@ zh: ' scopes: - api_v3: Full API access + api_v3: 完全 API 访问 api_v3_text: Application will receive full read & write access to the OpenProject API to perform actions on your behalf. grants: @@ -2641,7 +2640,7 @@ zh: other: "%{count} active token" flows: authorization_code: Authorization code flow - client_credentials: Client credentials flow + client_credentials: 客户端凭据流 client_credentials: User used for Client credentials client_credentials_impersonation_set_to: Client credentials user set to client_credentials_impersonation_warning: 'Note: Clients using the ''Client credentials'' @@ -2652,10 +2651,7 @@ zh: requests will be performed. ' - authorization_error: An authorization error has occurred. + authorization_error: 发生了验证错误。 revoke_my_application_confirmation: Do you really want to remove this application? This will revoke %{token_count} active for it. - my_registered_applications: Registered OAuth applications - setting_mail_handler_api_enabled: 启用接收电子邮件 web 服务 - setting_mail_handler_api_description: 电子邮件 web 处理程序启用 OpenProject来接收包含特定命令的电子邮件作为一种工作机制 - (例如,可以创建和更新工作包)。 + my_registered_applications: 已注册的 OAuth 应用程序 diff --git a/config/routes.rb b/config/routes.rb index c0b9155d54..44159acdf4 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -31,6 +31,12 @@ root to: 'homescreen#index', as: 'home' rails_relative_url_root = OpenProject::Configuration['rails_relative_url_root'] || '' + # Route for health_checks + get '/health_check' => 'ok_computer/ok_computer#show', check: 'web' + # Override the default `all` checks route to return the full check + get '/health_checks/all' => 'ok_computer/ok_computer#show', check: 'full' + mount OkComputer::Engine, at: "/health_checks" + # Redirect deprecated issue links to new work packages uris get '/issues(/)' => redirect("#{rails_relative_url_root}/work_packages") # The URI.escape doesn't escape / unless you ask it to. diff --git a/docker/Procfile b/docker/Procfile deleted file mode 100644 index 98bd8e1fa7..0000000000 --- a/docker/Procfile +++ /dev/null @@ -1,3 +0,0 @@ -web: ./docker/web -worker: ./docker/worker -cron: ./docker/cron diff --git a/docker/console b/docker/console new file mode 100755 index 0000000000..6cc60ce357 --- /dev/null +++ b/docker/console @@ -0,0 +1,3 @@ +#!/bin/bash +set -e +exec bundle exec rails c diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 8175f0e986..20578e052b 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -1,12 +1,52 @@ #!/bin/bash + set -e +set -o pipefail + +# handle legacy configs +if [ -d "$PGDATA_LEGACY" ]; then + echo "WARN: You are using a legacy volume path for your postgres data. You should mount your postgres volumes at $PGDATA instead of $PGDATA_LEGACY." + if [ "$(find "$PGDATA" -type f | wc -l)" = "0" ]; then + echo "INFO: $PGDATA is empty, so $PGDATA will be symlinked to $PGDATA_LEGACY as a temporary measure." + sed -i "s|$PGDATA|$PGDATA_LEGACY|" /etc/postgresql/9.6/main/postgresql.conf + export PGDATA="$PGDATA_LEGACY" + else + echo "ERROR: $PGDATA contains files, so we will not attempt to symlink $PGDATA to $PGDATA_LEGACY. Please fix your docker configuration." + exit 2 + fi +fi + +if [ -d "$APP_DATA_PATH_LEGACY" ]; then + echo "WARN: You are using a legacy volume path for your openproject data. You should mount your openproject volume at $APP_DATA_PATH instead of $APP_DATA_PATH_LEGACY." + if [ "$(find "$APP_DATA_PATH" -type f | wc -l)" = "0" ]; then + echo "INFO: $APP_DATA_PATH is empty, so $APP_DATA_PATH will be symlinked to $APP_DATA_PATH_LEGACY as a temporary measure." + # also set ATTACHMENTS_STORAGE_PATH back to its legacy value in case it hasn't been changed + if [ "$ATTACHMENTS_STORAGE_PATH" = "$APP_DATA_PATH/files" ]; then + export ATTACHMENTS_STORAGE_PATH="$APP_DATA_PATH_LEGACY/files" + fi + export APP_DATA_PATH="$APP_DATA_PATH_LEGACY" + else + echo "ERROR: $APP_DATA_PATH contains files, so we will not attempt to symlink $APP_DATA_PATH to $APP_DATA_PATH_LEGACY. Please fix your docker configuration." + exit 2 + fi +fi if [ "$(id -u)" = '0' ]; then - chown -R $APP_USER:$APP_USER $APP_PATH $APP_DATA /usr/local - sync - exec $APP_PATH/docker/gosu $APP_USER "$BASH_SOURCE" "$@" + mkdir -p $APP_DATA_PATH/{files,git,svn} + chown -R $APP_USER:$APP_USER $APP_DATA_PATH + + if [ ! -z "$ATTACHMENTS_STORAGE_PATH" ]; then + mkdir -p "$ATTACHMENTS_STORAGE_PATH" + chown -R "$APP_USER:$APP_USER" "$ATTACHMENTS_STORAGE_PATH" + fi + mkdir -p "$APP_PATH/log" "$APP_PATH/tmp/pids" "$APP_PATH/files" + chown "$APP_USER:$APP_USER" "$APP_PATH" + chown -R "$APP_USER:$APP_USER" "$APP_PATH/log" "$APP_PATH/tmp" "$APP_PATH/files" "$APP_PATH/public" + if [ "$1" = "./docker/supervisord" ]; then + exec "$@" + else + exec $APP_PATH/docker/gosu $APP_USER "$BASH_SOURCE" "$@" + fi fi -mkdir -p "$ATTACHMENTS_STORAGE_PATH" -chown -R "$(id -u)" "$ATTACHMENTS_STORAGE_PATH" 2>/dev/null || : exec "$@" diff --git a/docker/nginx.conf.erb b/docker/nginx.conf.erb deleted file mode 100644 index 82df5b8417..0000000000 --- a/docker/nginx.conf.erb +++ /dev/null @@ -1,212 +0,0 @@ -############################################################## -# Phusion Passenger Standalone uses a template file to -# generate an Nginx configuration file. The original template -# file can be found by running the following command: -# -# ls $(passenger-config about resourcesdir)/templates/standalone/config.erb -# -# You can create a copy of this template file and customize it -# to your liking. Just make sure you tell Phusion Passenger Standalone -# to use your template file by passing the --nginx-config-template -# parameter. -# -# *** NOTE *** -# If you customize the template file, make sure you keep an eye -# on the original template file and merge any changes. -# New Phusion Passenger features may require changes to the template -# file. -############################################################## - - -master_process on; -worker_processes 1; -daemon on; -error_log '<%= @options[:log_file] %>' <% if @options[:log_level] >= LVL_DEBUG %>info<% end %>; -pid '<%= @options[:pid_file] %>'; - -<% if Process.euid == 0 %> - <% if @options[:user] %> - <%# Run workers as the given user. The master process will always run as root and will be able to bind to any port. %> - user <%= @options[:user] %> <%= default_group_for(@options[:user]) %>; - <% else %> - <%# Prevent running Nginx workers as nobody. %> - user <%= current_user %> <%= default_group_for(current_user) %>; - <% end %> -<% end %> - -events { - worker_connections 1024; -} - -http { - log_format debug '[$time_local] $msec "$request" $status conn=$connection sent=$bytes_sent body_sent=$body_bytes_sent'; - include '<%= PhusionPassenger.resources_dir %>/mime.types'; - - <% if @options[:ruby] %> - passenger_ruby <%= @options[:ruby] %>; - <% else %> - passenger_ruby <%= PlatformInfo.ruby_command %>; - <% end %> - <% if @options[:nodejs] %> - passenger_nodejs <%= @options[:nodejs] %>; - <% end %> - <% if @options[:python] %> - passenger_python <%= @options[:python] %>; - <% end %> - - passenger_root '<%= PhusionPassenger.install_spec %>'; - passenger_abort_on_startup_error on; - passenger_ctl cleanup_pidfiles <%= serialize_strset("#{@working_dir}/temp_dir_toucher.pid") %>; - passenger_ctl integration_mode standalone; - passenger_ctl standalone_engine nginx; - passenger_user_switching off; - <%= nginx_option :passenger_log_level, :log_level %> - <%= nginx_option :passenger_max_pool_size, :max_pool_size %> - <%= nginx_option :passenger_min_instances, :min_instances %> - <%= nginx_option :passenger_pool_idle_time, :pool_idle_time %> - <%= nginx_option :passenger_max_preloader_idle_time, :max_preloader_idle_time %> - <%= nginx_option :passenger_turbocaching, :turbocaching %> - <% if @options[:user] %> - passenger_user <%= @options[:user] %>; - passenger_default_user <%= @options[:user] %>; - passenger_analytics_log_user <%= @options[:user] %>; - <% else %> - passenger_user <%= current_user %>; - passenger_default_user <%= current_user %>; - passenger_analytics_log_user <%= current_user %>; - <% end %> - <% if @options[:instance_registry_dir] %>passenger_instance_registry_dir '<%= @options[:instance_registry_dir] %>';<% end %> - <% if @options[:data_buffer_dir] %>passenger_data_buffer_dir '<%= @options[:data_buffer_dir] %>';<% end %> - <% if @options[:rolling_restarts] %>passenger_rolling_restarts on;<% end %> - <% if @options[:resist_deployment_errors] %>passenger_resist_deployment_errors on;<% end %> - <% if !@options[:load_shell_envvars] %>passenger_load_shell_envvars off;<% end %> - - <% if !@options[:friendly_error_pages].nil? -%> - passenger_friendly_error_pages <%= boolean_config_value(@options[:friendly_error_pages]) %>; - <% end %> - - <% if @options[:union_station_gateway_address] %> - union_station_gateway_address <%= @options[:union_station_gateway_address] %>; - <% end %> - <% if @options[:union_station_gateway_port] %> - union_station_gateway_port <%= @options[:union_station_gateway_port] %>; - <% end %> - <% if @options[:union_station_gateway_cert] %> - union_station_gateway_cert -; - <% end %> - - <% @options[:ctls].each do |ctl| %> - passenger_ctl '<%= ctl.split("=", 2)[0] %>' '<%= ctl.split("=", 2)[1] %>'; - <% end %> - - default_type application/octet-stream; - types_hash_max_size 2048; - server_names_hash_bucket_size 64; - client_max_body_size 20m; - access_log off; - keepalive_timeout 60; - underscores_in_headers on; - gzip on; - gzip_comp_level 3; - gzip_min_length 150; - gzip_proxied any; - gzip_types text/plain text/css text/json text/javascript - application/javascript application/x-javascript application/json - application/rss+xml application/vnd.ms-fontobject application/x-font-ttf - application/xml font/opentype image/svg+xml text/xml; - - <% if @app_finder.multi_mode? %> - # Default server entry for mass deployment mode. - server { - <% if @options[:ssl] %> - <% if @options[:ssl_port] %> - listen <%= nginx_listen_address %>; - listen <%= nginx_listen_address_with_ssl_port %> ssl; - <% else %> - listen <%= nginx_listen_address %> ssl; - <% end %> - <% else %> - listen <%= nginx_listen_address %>; - <% end %> - root '<%= PhusionPassenger.resources_dir %>/standalone_default_root'; - } - <% end %> - - <% for app in @apps %> - server { - <% if app[:ssl] %> - <% if app[:ssl_port] %> - listen <%= nginx_listen_address(app) %>; - listen <%= nginx_listen_address_with_ssl_port(app) %> ssl; - <% else %> - listen <%= nginx_listen_address(app) %> ssl; - <% end %> - <% else %> - listen <%= nginx_listen_address(app) %>; - <% end %> - server_name <%= app[:server_names].join(' ') %>; - <% if app[:static_files_dir] %> - root '<%= app[:static_files_dir] %>'; - <% else %> - root '<%= app[:root] %>/public'; - <% end %> - passenger_app_root '<%= app[:root] %>'; - passenger_enabled on; - passenger_app_env <%= app[:environment] %>; - passenger_spawn_method <%= app[:spawn_method] %>; - <% if app[:app_type] %>passenger_app_type <%= app[:app_type] %>;<% end %> - <% if app[:startup_file] %>passenger_startup_file <%= app[:startup_file] %>;<% end %> - <% if app[:concurrency_model] && app[:concurrency_model] != DEFAULT_CONCURRENCY_MODEL %>passenger_concurrency_model <%= app[:concurrency_model] %>;<% end %> - <% if app[:thread_count] && app[:thread_count] != DEFAULT_APP_THREAD_COUNT %>passenger_thread_count <%= app[:thread_count] %>;<% end %> - <% if app[:min_instances] %>passenger_min_instances <%= app[:min_instances] %>;<% end %> - <% if app[:restart_dir] %>passenger_restart_dir '<%= app[:restart_dir] %>';<% end %> - <% if app[:sticky_sessions] %>passenger_sticky_sessions on;<% end %> - <% if app[:sticky_sessions_cookie_name] %>passenger_sticky_sessions_cookie_name '<%= app[:sticky_sessions_cookie_name] %>';<% end %> - <% if app[:vary_turbocache_by_cookie] %>passenger_vary_turbocache_by_cookie '<%= app[:vary_turbocache_by_cookie] %>';<% end %> - <% if app[:union_station_key] %> - union_station_support on; - union_station_key <%= app[:union_station_key] %>; - <% end %> - <% if app[:ssl] %> - ssl_certificate <%= app[:ssl_certificate] %>; - ssl_certificate_key <%= app[:ssl_certificate_key] %>; - <% end %> - <% if @options[:meteor_app_settings] %> - passenger_meteor_app_settings <%= @options[:meteor_app_settings] %>; - <% end %> - - <% app[:envvars].each_pair do |name, value| %> - passenger_env_var '<%= name %>' '<%= value %>'; - <% end %> - - # Rails asset pipeline support. - location ~ "^/assets/.+-([0-9a-f]{32}|[0-9a-f]{64})\..+" { - error_page 490 = @static_asset; - error_page 491 = @dynamic_request; - recursive_error_pages on; - - if (-f $request_filename) { - return 490; - } - if (!-f $request_filename) { - return 491; - } - } - location @static_asset { - gzip_static on; - expires max; - add_header Cache-Control public; - add_header Access-Control-Allow-Origin "*"; - add_header ETag ""; - } - location @dynamic_request { - passenger_enabled on; - } - - <% (ENV['NGINX_ADDITIONAL_SERVER_RULES'] || "").split(";").each do |rule| %> - <%= rule.chomp(";") %>; - <% end %> - } - passenger_pre_start <%= listen_url(app) %>; - <% end %> -} diff --git a/docker/precompile-assets.sh b/docker/precompile-assets.sh new file mode 100644 index 0000000000..334fb23a18 --- /dev/null +++ b/docker/precompile-assets.sh @@ -0,0 +1,18 @@ +#!/bin/bash +set -e + +pushd "${APP_PATH}/frontend" + +# Installing frontend dependencies +RAILS_ENV=production npm install + +popd + +# Bundle assets +DATABASE_URL='nulldb://nohost' RAILS_ENV=production bundle exec rake assets:precompile + +# Remove node_modules and entire frontend +rm -rf "$APP_PATH/node_modules/" "$APP_PATH/frontend/node_modules/" + +# Clean cache in root +rm -rf /root/.npm diff --git a/docker/proxy b/docker/proxy index 370d6caeb6..a4f0725770 100755 --- a/docker/proxy +++ b/docker/proxy @@ -1,5 +1,5 @@ #!/bin/bash set -e -[ -f /etc/apache2/sites-enabled/openproject.conf ] || erb -r time /usr/src/app/docker/proxy.conf.erb > /etc/apache2/sites-enabled/openproject.conf +[ -f /etc/apache2/sites-enabled/openproject.conf ] || erb -r time $APP_PATH/docker/proxy.conf.erb > /etc/apache2/sites-enabled/openproject.conf exec /usr/sbin/apache2ctl -DFOREGROUND diff --git a/docker/proxy.conf.erb b/docker/proxy.conf.erb index 360c70bd5d..1376257b67 100644 --- a/docker/proxy.conf.erb +++ b/docker/proxy.conf.erb @@ -1,6 +1,6 @@ ServerName <%= ENV.fetch('SERVER_NAME') { "_default_" } %> - DocumentRoot /usr/src/app/public + DocumentRoot <%= ENV.fetch('APP_PATH') %>/public ProxyRequests off diff --git a/docker/entrypoint-all-in-one.sh b/docker/supervisord similarity index 78% rename from docker/entrypoint-all-in-one.sh rename to docker/supervisord index 0daec58c24..59e0fbad80 100755 --- a/docker/entrypoint-all-in-one.sh +++ b/docker/supervisord @@ -3,32 +3,30 @@ set -e set -o pipefail -PGDATA=${PGDATA:=/var/lib/postgresql/9.6/main} +indent() { + sed -u 's/^/ /' +} + +echo "-----> Starting the all-in-one OpenProject setup at $BASH_SOURCE..." + +if [ "$PGDATA" == "" ]; then + echo "No PGDATA environment variable defined. Aborting." | indent + exit 2 +fi + PGUSER=${PGUSER:=postgres} PGPASSWORD=${PGPASSWORD:=postgres} PG_STARTUP_WAIT_TIME=${PG_STARTUP_WAIT_TIME:=10} SUPERVISORD_LOG_LEVEL=${SUPERVISORD_LOG_LEVEL:=info} PGBIN="/usr/lib/postgresql/9.6/bin" -if [ ! -z "$ATTACHMENTS_STORAGE_PATH" ]; then - mkdir -p "$ATTACHMENTS_STORAGE_PATH" - chown -R app:app "$ATTACHMENTS_STORAGE_PATH" -fi - -if [ "$(id -u)" = '0' ]; then - echo "-----> Ensure $APP_PATH is owned by $APP_USER" - mkdir -p "$APP_PATH/log" "$APP_PATH/tmp" "$APP_PATH/files" - chown $APP_USER:$APP_USER "$APP_PATH" - chown -R $APP_USER:$APP_USER "$APP_PATH/log" "$APP_PATH/tmp" "$APP_PATH/files" "$APP_PATH/public" -fi - dbhost=$(ruby -ruri -e 'puts URI(ENV.fetch("DATABASE_URL")).host') pwfile=$(mktemp) echo "$PGPASSWORD" > $pwfile chown postgres $pwfile PLUGIN_GEMFILE_TMP=$(mktemp) -PLUGIN_GEMFILE=/usr/src/app/Gemfile.local +PLUGIN_GEMFILE=$APP_PATH/Gemfile.local if [ "$PLUGIN_GEMFILE_URL" != "" ]; then echo "Fetching custom gemfile from ${PLUGIN_GEMFILE_URL}..." @@ -37,37 +35,43 @@ if [ "$PLUGIN_GEMFILE_URL" != "" ]; then # set custom plugin gemfile if file is readable and non-empty if [ -s "$PLUGIN_GEMFILE_TMP" ]; then mv "$PLUGIN_GEMFILE_TMP" "$PLUGIN_GEMFILE" - chown app.app "$PLUGIN_GEMFILE" + chown $APP_USER:$APP_USER "$PLUGIN_GEMFILE" fi fi -indent() { - sed -u 's/^/ /' -} - install_plugins() { - pushd /usr/src/app + pushd $APP_PATH >/dev/null if [ -s "$PLUGIN_GEMFILE" ]; then echo "Installing plugins..." bundle install + + echo "Installing frontend dependencies..." + pushd $APP_PATH/frontend >/dev/null + if [ "$(id -u)" = '0' ]; then + su - $APP_USER -c "cd $APP_PATH/frontend && npm install" + else + npm install + fi + popd >/dev/null + echo "Precompiling new assets..." bundle exec rake assets:precompile echo "Plugins installed" fi - popd + popd >/dev/null } migrate() { wait_for_postgres - pushd /usr/src/app + pushd $APP_PATH >/dev/null /etc/init.d/memcached start bundle exec rake db:migrate db:seed db:structure:dump /etc/init.d/memcached stop - chown app:app db/structure.sql - popd + chown "$APP_USER.$APP_USER" db/structure.sql + popd >/dev/null } wait_for_postgres() { @@ -108,5 +112,4 @@ echo "-----> Database setup finished." echo " On first installation, the default admin credentials are login: admin, password: admin" echo "-----> Launching supervisord..." -exec /usr/bin/supervisord -e ${SUPERVISORD_LOG_LEVEL} - +exec /usr/bin/supervisord -c $APP_PATH/docker/supervisord.conf -e ${SUPERVISORD_LOG_LEVEL} diff --git a/docker/supervisord.conf b/docker/supervisord.conf index bc6608e555..7a5b74f53e 100644 --- a/docker/supervisord.conf +++ b/docker/supervisord.conf @@ -4,44 +4,60 @@ nodaemon=true [program:web] priority=4 user=app -directory=/usr/src/app +environment=HOME="/home/%(ENV_APP_USER)s",USER="%(ENV_APP_USER)s" +directory=%(ENV_APP_PATH)s command=./docker/web autorestart=true -stderr_logfile = /var/log/supervisor/%(program_name)s-stderr.log -stdout_logfile = /var/log/supervisor/%(program_name)s-stdout.log +stderr_logfile = /dev/stderr +stdout_logfile = /dev/stdout +stdout_logfile_maxbytes = 0 +stderr_logfile_maxbytes = 0 [program:worker] priority=5 user=app -directory=/usr/src/app +environment=HOME="/home/%(ENV_APP_USER)s",USER="%(ENV_APP_USER)s" +directory=%(ENV_APP_PATH)s command=./docker/worker +startretries=10 autorestart=true -stderr_logfile = /var/log/supervisor/%(program_name)s-stderr.log -stdout_logfile = /var/log/supervisor/%(program_name)s-stdout.log +stderr_logfile = /dev/stderr +stdout_logfile = /dev/stdout +stdout_logfile_maxbytes = 0 +stderr_logfile_maxbytes = 0 [program:memcached] priority=100 user=app +environment=HOME="/home/%(ENV_APP_USER)s",USER="%(ENV_APP_USER)s" command=/usr/bin/memcached autorestart=true -stderr_logfile = /var/log/supervisor/%(program_name)s-stderr.log -stdout_logfile = /var/log/supervisor/%(program_name)s-stdout.log +stderr_logfile = /dev/stderr +stdout_logfile = /dev/stdout +stdout_logfile_maxbytes = 0 +stderr_logfile_maxbytes = 0 [program:cron] priority=100 user=app -directory=/usr/src/app +environment=HOME="/home/%(ENV_APP_USER)s",USER="%(ENV_APP_USER)s" +directory=%(ENV_APP_PATH)s command=./docker/cron +autostart=false autorestart=true -stderr_logfile = /var/log/supervisor/%(program_name)s-stderr.log -stdout_logfile = /var/log/supervisor/%(program_name)s-stdout.log +stderr_logfile = /dev/stderr +stdout_logfile = /dev/stdout +stdout_logfile_maxbytes = 0 +stderr_logfile_maxbytes = 0 [program:apache2] priority=2 -directory=/usr/src/app +directory=%(ENV_APP_PATH)s command=./docker/proxy -stderr_logfile = /var/log/supervisor/%(program_name)s-stderr.log -stdout_logfile = /var/log/supervisor/%(program_name)s-stdout.log +stderr_logfile = /dev/stderr +stdout_logfile = /dev/stdout +stdout_logfile_maxbytes = 0 +stderr_logfile_maxbytes = 0 [program:postfix] priority=100 @@ -49,13 +65,18 @@ directory=/etc/postfix command=/usr/sbin/postfix -c /etc/postfix start startsecs=0 autorestart=false -stderr_logfile = /var/log/supervisor/%(program_name)s-stderr.log -stdout_logfile = /var/log/supervisor/%(program_name)s-stdout.log +stderr_logfile = /dev/stderr +stdout_logfile = /dev/stdout +stdout_logfile_maxbytes = 0 +stderr_logfile_maxbytes = 0 [program:postgres] user=postgres priority=1 -command=/usr/lib/postgresql/9.6/bin/postgres -D /var/lib/postgresql/9.6/main -c config_file=/etc/postgresql/9.6/main/postgresql.conf +command=/usr/lib/postgresql/9.6/bin/postgres -D %(ENV_PGDATA)s -c config_file=/etc/postgresql/9.6/main/postgresql.conf autorestart=true -stderr_logfile = /var/log/supervisor/%(program_name)s-stderr.log -stdout_logfile = /var/log/supervisor/%(program_name)s-stdout.log +stderr_logfile = /dev/stderr +stdout_logfile = /dev/stdout +stdout_logfile_maxbytes = 0 +stderr_logfile_maxbytes = 0 + diff --git a/docker/wait-for-it.sh b/docker/wait-for-it.sh deleted file mode 100755 index eca6c3b9c8..0000000000 --- a/docker/wait-for-it.sh +++ /dev/null @@ -1,161 +0,0 @@ -#!/usr/bin/env bash -# Use this script to test if a given TCP host/port are available - -cmdname=$(basename $0) - -echoerr() { if [[ $QUIET -ne 1 ]]; then echo "$@" 1>&2; fi } - -usage() -{ - cat << USAGE >&2 -Usage: - $cmdname host:port [-s] [-t timeout] [-- command args] - -h HOST | --host=HOST Host or IP under test - -p PORT | --port=PORT TCP port under test - Alternatively, you specify the host and port as host:port - -s | --strict Only execute subcommand if the test succeeds - -q | --quiet Don't output any status messages - -t TIMEOUT | --timeout=TIMEOUT - Timeout in seconds, zero for no timeout - -- COMMAND ARGS Execute command with args after the test finishes -USAGE - exit 1 -} - -wait_for() -{ - if [[ $TIMEOUT -gt 0 ]]; then - echoerr "$cmdname: waiting $TIMEOUT seconds for $HOST:$PORT" - else - echoerr "$cmdname: waiting for $HOST:$PORT without a timeout" - fi - start_ts=$(date +%s) - while : - do - (echo > /dev/tcp/$HOST/$PORT) >/dev/null 2>&1 - result=$? - if [[ $result -eq 0 ]]; then - end_ts=$(date +%s) - echoerr "$cmdname: $HOST:$PORT is available after $((end_ts - start_ts)) seconds" - break - fi - sleep 1 - done - return $result -} - -wait_for_wrapper() -{ - # In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692 - if [[ $QUIET -eq 1 ]]; then - timeout $TIMEOUT $0 --quiet --child --host=$HOST --port=$PORT --timeout=$TIMEOUT & - else - timeout $TIMEOUT $0 --child --host=$HOST --port=$PORT --timeout=$TIMEOUT & - fi - PID=$! - trap "kill -INT -$PID" INT - wait $PID - RESULT=$? - if [[ $RESULT -ne 0 ]]; then - echoerr "$cmdname: timeout occurred after waiting $TIMEOUT seconds for $HOST:$PORT" - fi - return $RESULT -} - -# process arguments -while [[ $# -gt 0 ]] -do - case "$1" in - *:* ) - hostport=(${1//:/ }) - HOST=${hostport[0]} - PORT=${hostport[1]} - shift 1 - ;; - --child) - CHILD=1 - shift 1 - ;; - -q | --quiet) - QUIET=1 - shift 1 - ;; - -s | --strict) - STRICT=1 - shift 1 - ;; - -h) - HOST="$2" - if [[ $HOST == "" ]]; then break; fi - shift 2 - ;; - --host=*) - HOST="${1#*=}" - shift 1 - ;; - -p) - PORT="$2" - if [[ $PORT == "" ]]; then break; fi - shift 2 - ;; - --port=*) - PORT="${1#*=}" - shift 1 - ;; - -t) - TIMEOUT="$2" - if [[ $TIMEOUT == "" ]]; then break; fi - shift 2 - ;; - --timeout=*) - TIMEOUT="${1#*=}" - shift 1 - ;; - --) - shift - CLI="$@" - break - ;; - --help) - usage - ;; - *) - echoerr "Unknown argument: $1" - usage - ;; - esac -done - -if [[ "$HOST" == "" || "$PORT" == "" ]]; then - echoerr "Error: you need to provide a host and port to test." - usage -fi - -TIMEOUT=${TIMEOUT:-15} -STRICT=${STRICT:-0} -CHILD=${CHILD:-0} -QUIET=${QUIET:-0} - -if [[ $CHILD -gt 0 ]]; then - wait_for - RESULT=$? - exit $RESULT -else - if [[ $TIMEOUT -gt 0 ]]; then - wait_for_wrapper - RESULT=$? - else - wait_for - RESULT=$? - fi -fi - -if [[ $CLI != "" ]]; then - if [[ $RESULT -ne 0 && $STRICT -eq 1 ]]; then - echoerr "$cmdname: strict mode, refusing to execute subprocess" - exit $RESULT - fi - exec $CLI -else - exit $RESULT -fi diff --git a/docker/web b/docker/web index 538fd524f5..28f0a92bbd 100755 --- a/docker/web +++ b/docker/web @@ -19,5 +19,4 @@ exec bundle exec passenger start \ --min-instances "$MIN_INSTANCES" \ --max-pool-size "$MAX_INSTANCES" \ --spawn-method "$SPAWN_METHOD" \ - --nginx-config-template "docker/nginx.conf.erb" \ --max-preloader-idle-time 0 diff --git a/frontend/src/app/components/op-context-menu/handlers/op-types-context-menu.directive.ts b/frontend/src/app/components/op-context-menu/handlers/op-types-context-menu.directive.ts index b799269256..4846291875 100644 --- a/frontend/src/app/components/op-context-menu/handlers/op-types-context-menu.directive.ts +++ b/frontend/src/app/components/op-context-menu/handlers/op-types-context-menu.directive.ts @@ -29,13 +29,14 @@ import {OpContextMenuItem} from 'core-components/op-context-menu/op-context-menu.types'; import {StateService} from '@uirouter/core'; import {OPContextMenuService} from "core-components/op-context-menu/op-context-menu.service"; -import {Directive, ElementRef, Input} from "@angular/core"; +import {Directive, ElementRef, Input, Inject} from "@angular/core"; import {LinkHandling} from "core-app/modules/common/link-handling/link-handling"; import {OpContextMenuTrigger} from "core-components/op-context-menu/handlers/op-context-menu-trigger.directive"; import {TypeResource} from 'core-app/modules/hal/resources/type-resource'; -import {TypeDmService} from "core-app/modules/hal/dm-services/type-dm.service"; import {Highlighting} from 'core-app/components/wp-fast-table/builders/highlighting/highlighting.functions'; import {BrowserDetector} from "core-app/modules/common/browser/browser-detector.service"; +import {WorkPackageCreateService} from 'core-components/wp-new/wp-create.service'; +import {IWorkPackageCreateServiceToken} from 'core-components/wp-new/wp-create.service.interface'; @Directive({ selector: '[opTypesCreateDropdown]' @@ -51,7 +52,7 @@ export class OpTypesContextMenuDirective extends OpContextMenuTrigger { readonly opContextMenu:OPContextMenuService, readonly browserDetector:BrowserDetector, readonly $state:StateService, - readonly typeDmService:TypeDmService) { + @Inject(IWorkPackageCreateServiceToken) protected wpCreate:WorkPackageCreateService) { super(elementRef, opContextMenu); } @@ -67,9 +68,12 @@ export class OpTypesContextMenuDirective extends OpContextMenuTrigger { this.stateName = 'work-packages.new'; } - this.loadingPromise = this.typeDmService - .loadAll(this.projectIdentifier) - .then(types => this.buildItems(types)); + this.loadingPromise = this + .wpCreate + .getEmptyForm(this.projectIdentifier) + .then(form => { + return this.buildItems(form.schema.type.allowedValues); + }) } protected open(evt:JQueryEventObject) { diff --git a/frontend/src/app/components/wp-table/context-menu-helper/wp-context-menu-helper.service.ts b/frontend/src/app/components/wp-table/context-menu-helper/wp-context-menu-helper.service.ts index 99a0ba5e54..6cbc47b646 100644 --- a/frontend/src/app/components/wp-table/context-menu-helper/wp-context-menu-helper.service.ts +++ b/frontend/src/app/components/wp-table/context-menu-helper/wp-context-menu-helper.service.ts @@ -78,9 +78,11 @@ export class WorkPackageContextMenuHelperService { } public getPermittedActionLinks(workPackage:WorkPackageResource, permittedActionConstants:any):WorkPackageAction[] { - var singularPermittedActions:any[] = []; + let singularPermittedActions: any[] = []; - var allowedActions = this.getAllowedActions(workPackage, permittedActionConstants); + let allowedActions = this.getAllowedActions(workPackage, permittedActionConstants); + + allowedActions = allowedActions.concat(this.getAllowedRelationActions(workPackage)); _.each(allowedActions, (allowedAction) => { singularPermittedActions.push({ @@ -95,10 +97,10 @@ export class WorkPackageContextMenuHelperService { } public getIntersectOfPermittedActions(workPackages:any) { - var bulkPermittedActions:any = []; + let bulkPermittedActions: any = []; - var permittedActions = _.filter(this.BULK_ACTIONS, (action:any) => { - return _.every(workPackages, (workPackage:WorkPackageResource) => { + let permittedActions = _.filter(this.BULK_ACTIONS, (action: any) => { + return _.every(workPackages, (workPackage: WorkPackageResource) => { return this.getAllowedActions(workPackage, [action]).length >= 1; }); }); @@ -115,22 +117,22 @@ export class WorkPackageContextMenuHelperService { } public getBulkActionLink(action:any, workPackages:any) { - var workPackageIdParams = { - 'ids[]': workPackages.map(function(wp:any){ + let workPackageIdParams = { + 'ids[]': workPackages.map(function (wp: any) { return wp.id; }) }; - var serializedIdParams = this.UrlParamsHelper.buildQueryString(workPackageIdParams); + let serializedIdParams = this.UrlParamsHelper.buildQueryString(workPackageIdParams); - var linkAndQueryString = action.href.split('?'); - var link = linkAndQueryString.shift(); - var queryParts = linkAndQueryString.concat(new Array(serializedIdParams)); + let linkAndQueryString = action.href.split('?'); + let link = linkAndQueryString.shift(); + let queryParts = linkAndQueryString.concat(new Array(serializedIdParams)); return link + '?' + queryParts.join('&'); } - public getAllowedActions(workPackage:WorkPackageResource, actions:WorkPackageAction[]):WorkPackageAction[] { - var allowedActions:WorkPackageAction[] = []; + private getAllowedActions(workPackage:WorkPackageResource, actions:WorkPackageAction[]):WorkPackageAction[] { + let allowedActions: WorkPackageAction[] = []; _.each(actions, (action) => { if (workPackage.hasOwnProperty(action.link)) { @@ -141,11 +143,17 @@ export class WorkPackageContextMenuHelperService { _.each(this.HookService.call('workPackageTableContextMenu'), (action) => { if (workPackage.hasOwnProperty(action.link)) { - var index = action.indexBy ? action.indexBy(allowedActions) : allowedActions.length; + let index = action.indexBy ? action.indexBy(allowedActions) : allowedActions.length; allowedActions.splice(index, 0, action) } }); + return allowedActions; + } + + private getAllowedRelationActions(workPackage:WorkPackageResource) { + let allowedActions: WorkPackageAction[] = []; + if (workPackage.addRelation && this.wpTableTimeline.isVisible) { allowedActions.push({ key: "relation-precedes", @@ -170,6 +178,7 @@ export class WorkPackageContextMenuHelperService { return allowedActions; } + public getPermittedActions(workPackages:WorkPackageResource[], permittedActionConstants:any):WorkPackageAction[] { if (workPackages.length === 1) { return this.getPermittedActionLinks(workPackages[0], permittedActionConstants); diff --git a/lib/open_project.rb b/lib/open_project.rb index 9c06d2d17b..489e4dc6c6 100644 --- a/lib/open_project.rb +++ b/lib/open_project.rb @@ -44,7 +44,6 @@ require 'csv' module OpenProject - ## # Shortcut to the OpenProject log delegator, which extends # default Rails error handling with other error handlers such as sentry. diff --git a/lib/open_project/null_db_fallback.rb b/lib/open_project/null_db_fallback.rb new file mode 100644 index 0000000000..f03edbbb61 --- /dev/null +++ b/lib/open_project/null_db_fallback.rb @@ -0,0 +1,68 @@ +#-- encoding: UTF-8 + +#-- copyright +# OpenProject is a project management system. +# Copyright (C) 2012-2018 the OpenProject Foundation (OPF) +# +# 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-2017 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 docs/COPYRIGHT.rdoc for more details. +#++ + +module OpenProject + module NullDbFallback + class << self + def fallback + ActiveRecord::Base.connection + rescue ActiveRecord::NoDatabaseError + applied! + ActiveRecord::Base.establish_connection adapter: :nulldb + end + + def reset + return unless applied? + + ActiveRecord::Base.establish_connection(database_config) + end + + private + + attr_accessor :applied + + def applied! + self.applied = true + end + + def unapplied! + self.applied = false + end + + def applied? + !!applied + end + + def database_config + YAML.load_file(File.join(Rails.root, "config", "database.yml"))[Rails.env] + end + end + end +end diff --git a/lib/open_project/version.rb b/lib/open_project/version.rb index 98b09d1d50..475cdc85cf 100644 --- a/lib/open_project/version.rb +++ b/lib/open_project/version.rb @@ -34,7 +34,7 @@ module OpenProject module VERSION #:nodoc: MAJOR = 8 MINOR = 3 - PATCH = 1 + PATCH = 2 TINY = PATCH # Redmine compat # Used by semver to define the special version (if any). diff --git a/spec/controllers/concerns/omniauth_login_spec.rb b/spec/controllers/concerns/omniauth_login_spec.rb index 6dbdf3d2a6..bfaaf54b61 100644 --- a/spec/controllers/concerns/omniauth_login_spec.rb +++ b/spec/controllers/concerns/omniauth_login_spec.rb @@ -34,12 +34,7 @@ User.current = nil end - context 'GET #omniauth_login' do - before do - allow(Setting).to receive(:self_registration?).and_return(true) - allow(Setting).to receive(:self_registration).and_return('3') - end - + context 'GET #omniauth_login', with_settings: { self_registration: '3' } do describe 'with on-the-fly registration' do context 'providing all required fields' do let(:omniauth_hash) do @@ -306,7 +301,7 @@ if auth.info.name == config.google_name dec.approve else - dec.reject "#{auth.info.name} can fuck right off" + dec.reject "Go away #{auth.info.name}!" end end @@ -382,7 +377,7 @@ post :omniauth_login, params: { provider: :google } expect(response).to redirect_to signin_path - expect(flash[:error]).to eq 'foo can fuck right off' + expect(flash[:error]).to eq 'Go away foo!' end it 'is approved against any other provider' do @@ -397,9 +392,9 @@ post :omniauth_login, params: { provider: :google } expect(response).to redirect_to home_url(first_time_user: true) - # authorization is successful which results in the registration + # The authorization is successful which results in the registration # of a new user in this case because we changed the provider - # and there isn't a user with that identity URL yet ... + # and there isn't a user with that identity URL yet. end # ... and to confirm that, here's what happens when the authorization fails @@ -419,7 +414,7 @@ end context 'with a registered and not activated accout', - with_settings: { self_registration: 1 } do + with_settings: { self_registration: '1' } do before do user.register user.save! @@ -428,7 +423,7 @@ end it 'should show an error about a not activated account' do - expect(flash[:error]).to eql(I18n.t('account.error_inactive_manual_activation')) + expect(flash[:error]).to eql(I18n.t('account.error_inactive_activation_by_mail')) end it 'should redirect to signin_path' do @@ -436,6 +431,24 @@ end end + context 'with an invited user and self registration disabled', + with_settings: { self_registration: '0' } do + before do + user.invite + user.save! + + post :omniauth_login, params: { provider: :google } + end + + it 'should show a notice about the activated account' do + expect(flash[:notice]).to eq(I18n.t('notice_account_registered_and_logged_in')) + end + + it 'should activate the user' do + expect(user.reload).to be_active + end + end + context 'with a locked account', with_settings: { brute_force_block_after_failed_logins?: false } do before do diff --git a/spec/features/users/brute_force_spec.rb b/spec/features/users/brute_force_spec.rb index a285089ab0..a575c02b73 100644 --- a/spec/features/users/brute_force_spec.rb +++ b/spec/features/users/brute_force_spec.rb @@ -104,12 +104,12 @@ def pretend_to_have_waited(time) login_with login, invalid_password expect(page) - .to have_content(I18n.t(:notice_account_invalid_credentials_or_blocked)) + .to have_content(I18n.t(:notice_account_invalid_credentials)) new_login_attempt(login, invalid_password) expect(page) - .to have_content(I18n.t(:notice_account_invalid_credentials_or_blocked)) + .to have_content(I18n.t(:notice_account_invalid_credentials)) new_login_attempt(login, password) diff --git a/spec/helpers/security_badge_helper_spec.rb b/spec/helpers/security_badge_helper_spec.rb index b885a80359..e6ca139c05 100644 --- a/spec/helpers/security_badge_helper_spec.rb +++ b/spec/helpers/security_badge_helper_spec.rb @@ -29,7 +29,12 @@ require 'spec_helper' describe SecurityBadgeHelper, type: :helper do - describe '#security_badge_url', with_settings: { installation_uuid: 'abcd1234' } do + describe '#security_badge_url' do + before do + # can't use with_settings since Setting.installation_uuid has a custom implementation + allow(Setting).to receive(:installation_uuid).and_return 'abcd1234' + end + it "generates a URL with the release API path and the details of the installation" do uri = URI.parse(helper.security_badge_url) query = Rack::Utils.parse_nested_query(uri.query) diff --git a/spec/models/setting_spec.rb b/spec/models/setting_spec.rb index 75a0bf28ae..e933cfca12 100644 --- a/spec/models/setting_spec.rb +++ b/spec/models/setting_spec.rb @@ -101,7 +101,10 @@ expect(Setting.installation_uuid).not_to be_blank end - it "returns the existing value if any", with_settings: { installation_uuid: "abcd1234" } do + it "returns the existing value if any" do + # can't use with_settings since Setting.installation_uuid has a custom implementation + allow(Setting).to receive(:installation_uuid).and_return "abcd1234" + expect(Setting.installation_uuid).to eq("abcd1234") end diff --git a/spec/support/shared/with_settings.rb b/spec/support/shared/with_settings.rb index 5c12c937fc..311e578dc8 100644 --- a/spec/support/shared/with_settings.rb +++ b/spec/support/shared/with_settings.rb @@ -46,21 +46,21 @@ def aggregate_mocked_settings(example, settings) if settings.present? settings = aggregate_mocked_settings(example, settings) + allow(Setting).to receive(:[]).and_call_original + settings.each do |k, v| - bare, questionmarked = if k.to_s.ends_with?('?') - [k.to_s[0..-2].to_sym, k] - else - [k, "#{k}?".to_sym] - end + name = k.to_s.sub(/\?\Z/, '') # remove trailing question mark if present to get setting name + + raise "#{k} is not a valid setting" unless Setting.respond_to?(name) - raise "#{k} is not a valid setting" unless Setting.respond_to?(bare) + expect(name).not_to start_with("localized_"), ->() do + base = name[10..-1] - if Setting.available_settings[bare.to_s] && Setting.available_settings[bare.to_s]['format'] == 'boolean' - allow(Setting).to receive(bare).and_return(v) - allow(Setting).to receive(questionmarked).and_return(v) - else - allow(Setting).to receive(k).and_return(v) + "Don't use `#{name}` in `with_settings`. Do this: `with_settings: { #{base}: { \"en\" => \"#{v}\" } }`" end + + allow(Setting).to receive(:[]).with(name).and_return v + allow(Setting).to receive(:[]).with(name.to_sym).and_return v end end end diff --git a/spec_legacy/functional/user_mailer_spec.rb b/spec_legacy/functional/user_mailer_spec.rb index 24586e4220..cd25c1c625 100644 --- a/spec_legacy/functional/user_mailer_spec.rb +++ b/spec_legacy/functional/user_mailer_spec.rb @@ -396,7 +396,9 @@ context 'layout', with_settings: { available_languages: [:en, :de], - localized_emails_header: 'deutscher header' + emails_header: { + "de" => 'deutscher header' + } } do it 'should include the emails_header depeding on the locale' do user = FactoryBot.create(:user, language: :de)