diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb index 820b4b5ee3d7..237cea344003 100644 --- a/app/controllers/account_controller.rb +++ b/app/controllers/account_controller.rb @@ -40,6 +40,7 @@ class AccountController < ApplicationController before_action :apply_csp_appends, only: %i[login] before_action :disable_api before_action :check_auth_source_sso_failure, only: :auth_source_sso_failed + before_action :check_internal_login_enabled, only: :internal_login layout 'no_menu' @@ -49,13 +50,17 @@ def login if user.logged? redirect_after_login(user) - elsif omniauth_direct_login? + elsif request.get? && omniauth_direct_login? direct_login(user) elsif request.post? authenticate_user end end + def internal_login + render 'account/login' + end + # Log out current user and redirect to welcome page def logout # Keep attributes from the session @@ -527,4 +532,8 @@ def apply_csp_appends append_content_security_policy_directives(appends) end + + def check_internal_login_enabled + render_404 unless omniauth_direct_login? + end end diff --git a/app/controllers/projects/templated_controller.rb b/app/controllers/projects/templated_controller.rb index 8d1ccdc6d7a8..514533f69268 100644 --- a/app/controllers/projects/templated_controller.rb +++ b/app/controllers/projects/templated_controller.rb @@ -48,10 +48,15 @@ def change_templated_action(templated) if service_call.success? flash[:notice] = t(:notice_successful_update) - redirect_to project_settings_general_path(@project) else - @errors = service_call.errors - render template: 'projects/settings/general' + messages = [ + t('activerecord.errors.template.header', model: Project.model_name.human, count: service_call.errors.count), + service_call.message + ] + + flash[:error] = messages.join(". ") end + + redirect_to project_settings_general_path(@project) end end diff --git a/app/helpers/meta_tags_helper.rb b/app/helpers/meta_tags_helper.rb index 975996418163..bdd13090653d 100644 --- a/app/helpers/meta_tags_helper.rb +++ b/app/helpers/meta_tags_helper.rb @@ -45,8 +45,9 @@ def initializer_meta_tag firstWeekOfYear: locale_first_week_of_year, firstDayOfWeek: locale_first_day_of_week, environment: Rails.env, - edition: OpenProject::Configuration.edition - } + edition: OpenProject::Configuration.edition, + 'asset-host': OpenProject::Configuration.rails_asset_host.presence + }.compact end ## diff --git a/app/views/announcement_mailer/announce.html.erb b/app/views/announcement_mailer/announce.html.erb index 6f5d9c32d034..20c8be32dddd 100644 --- a/app/views/announcement_mailer/announce.html.erb +++ b/app/views/announcement_mailer/announce.html.erb @@ -39,5 +39,11 @@ <% end %> + + + <%= placeholder_cell('20px', vertical: false) %> + +
+ <%= render partial: 'mailer/notification_settings_table' %> <% end %> diff --git a/app/views/groups/_memberships.html.erb b/app/views/groups/_memberships.html.erb index 075b216b8da8..d24d4f55b411 100644 --- a/app/views/groups/_memberships.html.erb +++ b/app/views/groups/_memberships.html.erb @@ -128,10 +128,11 @@ See COPYRIGHT and LICENSE files for more details. <%= label_tag "membership_project_id", t(:description_choose_project), class: "hidden-for-sighted" %> <% group_project_ids = @group.projects.ids %> - <% filter = group_project_ids.length > 0 ? [['id', '!', group_project_ids.map(&:to_s)]] : [] %> + <% filters = [['active', '=', ['t']]] %> + <% filters << ['id', '!', group_project_ids.map(&:to_s)] if group_project_ids.any? %> <%= angular_component_tag 'op-project-autocompleter', inputs: { - apiFilters: filter, + apiFilters: filters, name: 'membership[project_id]' }, data: { diff --git a/app/views/mailer/_border_table.html.erb b/app/views/mailer/_border_table.html.erb index c355803bd998..ee7c2bcd488b 100644 --- a/app/views/mailer/_border_table.html.erb +++ b/app/views/mailer/_border_table.html.erb @@ -13,9 +13,3 @@ <%= placeholder_cell('12px', vertical: false) %> - - - - <%= placeholder_cell('20px', vertical: false) %> - -
diff --git a/app/views/mailer/_notification_row.html.erb b/app/views/mailer/_notification_row.html.erb index 79c1ffddd2d4..8dc11b2b631d 100644 --- a/app/views/mailer/_notification_row.html.erb +++ b/app/views/mailer/_notification_row.html.erb @@ -97,3 +97,21 @@ <% end %> + + + + <%= placeholder_cell('0px', vertical: false) %> + +
+ + + <%= I18n.t('mail.work_packages.open_in_browser') %> + + + + + <%= placeholder_cell('20px', vertical: false) %> + +
diff --git a/app/workers/copy_project_job.rb b/app/workers/copy_project_job.rb index 75aae3cc35a5..18bb63b0567b 100644 --- a/app/workers/copy_project_job.rb +++ b/app/workers/copy_project_job.rb @@ -91,6 +91,7 @@ def title def successful_status_update payload = redirect_payload(url_helpers.project_url(target_project)) + .merge(hal_links(target_project)) if errors.any? payload[:errors] = errors @@ -111,6 +112,17 @@ def failure_status_update upsert_status status: :failure, message: end + def hal_links(project) + { + _links: { + project: { + href: ::API::V3::Utilities::PathHelper::ApiV3Path.project(project.id), + title: project.name + } + } + } + end + def user @user ||= User.find user_id end diff --git a/config/initializers/rack-attack.rb b/config/initializers/rack-attack.rb index 62b3c82be22c..8fcc7f910dc5 100644 --- a/config/initializers/rack-attack.rb +++ b/config/initializers/rack-attack.rb @@ -38,3 +38,23 @@ [404, {}, ['Not found']] end end + +Rack::Attack.throttled_responder = lambda do |request| + match_data = request.env['rack.attack.match_data'] + now = match_data[:epoch_time] + retry_after = match_data[:period] - (now % match_data[:period]) + + headers = { + 'RateLimit-Limit' => match_data[:limit].to_s, + 'RateLimit-Remaining' => '0', + 'RateLimit-Reset' => (now + (match_data[:period] - (now % match_data[:period]))).to_s + } + + [429, headers, ["Your request has been throttled. Try again at #{retry_after.seconds.from_now}.\n"]] +end + +Rack::Attack.throttle("limit-lost-password", limit: 3, period: 1.hour.to_i) do |req| + if req.post? && req.path.end_with?('/account/lost_password') + req.env.dig "rack.request.form_hash", "mail" + end +end diff --git a/config/locales/crowdin/af.yml b/config/locales/crowdin/af.yml index 6fd03e21c201..cb104b3a45f7 100644 --- a/config/locales/crowdin/af.yml +++ b/config/locales/crowdin/af.yml @@ -2076,6 +2076,7 @@ af: more_to_see: one: 'There is 1 more work package with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/ar.yml b/config/locales/crowdin/ar.yml index 04778c0fa8ea..f2b6a0412648 100644 --- a/config/locales/crowdin/ar.yml +++ b/config/locales/crowdin/ar.yml @@ -2143,6 +2143,7 @@ ar: few: 'There are %{count} more work packages with notifications.' many: 'There are %{count} more work packages with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/az.yml b/config/locales/crowdin/az.yml index f1bc1cd703e7..3ceb4038b52b 100644 --- a/config/locales/crowdin/az.yml +++ b/config/locales/crowdin/az.yml @@ -2076,6 +2076,7 @@ az: more_to_see: one: 'There is 1 more work package with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/be.yml b/config/locales/crowdin/be.yml index aad7e02511bc..73aad5058b57 100644 --- a/config/locales/crowdin/be.yml +++ b/config/locales/crowdin/be.yml @@ -2112,6 +2112,7 @@ be: few: 'There are %{count} more work packages with notifications.' many: 'There are %{count} more work packages with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/bg.yml b/config/locales/crowdin/bg.yml index 736539e6eb09..15f639b9b3c9 100644 --- a/config/locales/crowdin/bg.yml +++ b/config/locales/crowdin/bg.yml @@ -2076,6 +2076,7 @@ bg: more_to_see: one: 'There is 1 more work package with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/ca.yml b/config/locales/crowdin/ca.yml index bb2d80bec8f3..1e35a39c7b6f 100644 --- a/config/locales/crowdin/ca.yml +++ b/config/locales/crowdin/ca.yml @@ -49,7 +49,7 @@ ca: main-menu-border-color: "Vora del menú principal" custom_colors: "Colors personalitzats" customize: "Personalitza la teva instal·lació d'OpenProject amb el teu propi logotip i colors." - enterprise_notice: "Com un \"Gràcies!\" especial per la contribució financera al desenvolupament d'OpenProject, aquest petit add-on només està disponible pels subscriptors de l'edició Enterprise." + enterprise_notice: "Com un \"Gràcies!\" especial per la contribució financera al desenvolupament d'OpenProject, aquesta petita extensió només està disponible pels subscriptors de l'edició Enterprise." enterprise_more_info: "Nota: el logotip utilitzat serà accessible públicament." manage_colors: "Edita les opcions de selecció de colors" instructions: @@ -72,7 +72,7 @@ ca: replace_token: "Substitueix el teu token de suport actual" order: "Ordena l'edició Enterpise on-premises" paste: "Enganxa el teu token de suport de l'edició Enterprise" - required_for_feature: "Aquest add-om només està disponible amb un token de suport de l'edició Enterprise." + required_for_feature: "Aquesta extensió només està disponible amb un token de suport de l'edició Enterprise." enterprise_link: "Per a més informació, cliqueu aquí." start_trial: 'Inicia la prova gratuïta' book_now: 'Reserva ara' @@ -80,7 +80,7 @@ ca: buttons: upgrade: "Actualitza ara" contact: "Contacta amb nosaltres per una demostració" - enterprise_info_html: "és un add-on de l'edició Enterprise ." + enterprise_info_html: "és una extensió de l'edició Enterprise ." upgrade_info: "Si us plau, actualitza a una versió de pagament per tal d'activar i començar a utilitzar aquesta funcionalitat en el teu equip." journal_aggregation: explanation: @@ -1295,11 +1295,11 @@ ca: ee: upsale: form_configuration: - description: "Personalitza la configuració del formulari amb aquests add-ons extres:" + description: "Personalitza la configuració del formulari amb aquestes extensions addicionals:" add_groups: "Afegir un nou atribut de grups" rename_groups: "Reanomena els atributs de grups" project_filters: - description_html: "Filtrar i ordenar camps personalitzats és un add-on de l'edició Enterprise." + description_html: "Filtrar i ordenar camps personalitzats és una extensió de l'edició Enterprise." enumeration_activities: "Activitats de rastrejament del temps" enumeration_work_package_priorities: "Prioritats dels paquets de treball" enumeration_reported_project_statuses: "Estats de projecte notificats" @@ -2072,6 +2072,7 @@ ca: more_to_see: one: 'Hi ha un paquet de treball més amb notificacions.' other: 'Hi han %{count} paquets de treball més amb notificacions.' + open_in_browser: 'Obre al navegador' reason: watched: 'Observat' assigned: 'Assignat' @@ -2644,11 +2645,11 @@ ca: text_custom_field_hint_activate_per_project_and_type: > Els camps personalitzats han d'activar-se per classe de paquet de treball i per projecte. text_wp_custom_field_html: > - L'edició Enterprise afegirà add-ons extra pels camps personalitzats de paquets de treball:
+ L'edició Enterprise afegirà extensions addicionals pels camps personalitzats de paquets de treball:
text_wp_status_read_only_html: > - L'edició Enterprise afegirà add-ons extra pels estats de paquets de treball:
+ L'edició Enterprise afegirà extensions addicionals pels estats de paquets de treball:
text_project_custom_field_html: > - L'edició Enterprise afegirà add-ons extra pels camps personalitzats de projectes:
+ L'edició Enterprise afegirà extensions addicionals pels camps personalitzats de projectes:
text_custom_logo_instructions: > Es recomana un logo blanc amb fons transparent. Per a un millor resultat tant en pantalles retina o convencionals assegura't que la teva imatge té unes dimensions de 460px per 60px. text_custom_favicon_instructions: > diff --git a/config/locales/crowdin/ckb-IR.yml b/config/locales/crowdin/ckb-IR.yml index 6c7c19fff66a..17a4c096d3ee 100644 --- a/config/locales/crowdin/ckb-IR.yml +++ b/config/locales/crowdin/ckb-IR.yml @@ -2076,6 +2076,7 @@ ckb-IR: more_to_see: one: 'There is 1 more work package with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/cs.yml b/config/locales/crowdin/cs.yml index bc5b3e61029c..1af601ea1aa6 100644 --- a/config/locales/crowdin/cs.yml +++ b/config/locales/crowdin/cs.yml @@ -708,7 +708,7 @@ cs: non_working_day: attributes: date: - taken: "A non-working day already exists for %{value}." + taken: "Nepracovní den již existuje pro %{value}." format: "%{message}" parse_schema_filter_params_service: attributes: @@ -721,7 +721,7 @@ cs: foreign_wps_reference_version: 'Work packages in non descendant projects reference versions of the project or its descendants.' attributes: base: - archive_permission_missing_on_subprojects: "You do not have the permissions required to archive all sub-projects. Please contact an administrator." + archive_permission_missing_on_subprojects: "Nemáte dostatečná oprávnění k archivaci všech podprojektů. Obraťte se na správce." types: in_use_by_work_packages: "stále používáno pracovními balíčky: %{types}" enabled_modules: @@ -2112,6 +2112,7 @@ cs: few: 'Existuje ještě %{count} pracovních balíčků s notifikacema.' many: 'Existuje ještě %{count} pracovních balíčků s notifikacema.' other: 'Existuje ještě %{count} pracovních balíčků s notifikacema.' + open_in_browser: 'Open in browser' reason: watched: 'Sledováno' assigned: 'Přiřazen' @@ -2119,8 +2120,8 @@ cs: mentioned: 'Zmíněné' subscribed: 'vše' prefix: 'Obdrženo z důvodu nastavení notifikací: %{reason}' - date_alert_start_date: 'Date alert' - date_alert_due_date: 'Date alert' + date_alert_start_date: 'Upozornění na datum' + date_alert_due_date: 'Upozornění na datum' see_all: 'Zobrazit vše' updated_at: 'Aktualizováno v %{timestamp} uživatelem %{user}' mail_body_account_activation_request: "Nový uživatel (%{value}) byl zaregistrován. Účet čeká na Vaše schválení:" @@ -3039,8 +3040,8 @@ cs: journal_note: changed: _**Working days** changed (%{changes})._ days: - working: "%{day} is now working" - non_working: "%{day} is now non-working" + working: "%{day} je pracovní " + non_working: "%{day} je nepracovní " dates: working: "%{date} is now working" non_working: "%{date} is now non-working" diff --git a/config/locales/crowdin/da.yml b/config/locales/crowdin/da.yml index 9e9776d4f77f..b476efdd46d2 100644 --- a/config/locales/crowdin/da.yml +++ b/config/locales/crowdin/da.yml @@ -2074,6 +2074,7 @@ da: more_to_see: one: 'There is 1 more work package with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/de.yml b/config/locales/crowdin/de.yml index 8a9f2e3cae07..addf71ec1357 100644 --- a/config/locales/crowdin/de.yml +++ b/config/locales/crowdin/de.yml @@ -268,7 +268,7 @@ de: no_results_title_text: Zur Zeit stehen keine Zugangs-Tokens zur Verfügung. news: index: - no_results_title_text: Es gibt aktuell keine Nachrichten. + no_results_title_text: Es gibt aktuell keine Neuigkeiten. no_results_content_text: Neuigkeit hinzufügen users: groups: @@ -1761,7 +1761,7 @@ de: label_news_singular: "Neuigkeit" label_news_added: "Neuigkeit hinzugefügt" label_news_comment_added: "Kommentar einer Nachricht hinzugefügt" - label_news_latest: "Aktuellste Nachrichten" + label_news_latest: "Aktuellste Neuigkeiten" label_news_new: "Nachricht hinzufügen" label_news_edit: "Nachricht bearbeiten" label_news_plural: "Neuigkeiten" @@ -2071,6 +2071,7 @@ de: more_to_see: one: 'Es gibt ein weiteres Arbeitspaket mit Benachrichtigungen.' other: 'Es gibt %{count} weitere Arbeitspakete mit Benachrichtigungen.' + open_in_browser: 'Im Browser öffnen' reason: watched: 'Beobachtet' assigned: 'Zugewiesen' diff --git a/config/locales/crowdin/el.yml b/config/locales/crowdin/el.yml index 30f521c2498d..c5d4b1ce045b 100644 --- a/config/locales/crowdin/el.yml +++ b/config/locales/crowdin/el.yml @@ -2072,6 +2072,7 @@ el: more_to_see: one: 'There is 1 more work package with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/eo.yml b/config/locales/crowdin/eo.yml index 29a699de5a26..9e91c6ac82fc 100644 --- a/config/locales/crowdin/eo.yml +++ b/config/locales/crowdin/eo.yml @@ -2076,6 +2076,7 @@ eo: more_to_see: one: 'There is 1 more work package with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/es.yml b/config/locales/crowdin/es.yml index c87c9dc32a19..4d33cfeba2b3 100644 --- a/config/locales/crowdin/es.yml +++ b/config/locales/crowdin/es.yml @@ -26,7 +26,7 @@ es: no_results_title_text: No se ha producido ninguna actividad en el proyecto en este período de tiempo. admin: plugins: - no_results_title_text: No hay complementos disponibles. + no_results_title_text: No hay extensiones disponibles. custom_styles: color_theme: "Tema de color" color_theme_custom: "(Personalizado)" @@ -49,7 +49,7 @@ es: main-menu-border-color: "Borde del menú principal" custom_colors: "Colores personalizados" customize: "Personalice su instalación de OpenProject con su logotipo y colores." - enterprise_notice: "Como un agradecimiento especial por su contribución financiera para desarrollar OpenProject, este pequeño complemento solo está disponible para suscriptores de la edición Enterprise." + enterprise_notice: "Como un agradecimiento especial por su contribución financiera para desarrollar OpenProject, esta pequeña extensión solo está disponible para suscriptores de Enterprise." enterprise_more_info: "Nota: el logotipo utilizado será de acceso público." manage_colors: "Editar opciones de selección de colores" instructions: @@ -64,15 +64,15 @@ es: main-menu-bg-color: "Color de fondo del menú lateral izquierdo." theme_warning: Al cambiar el tema, se sobrescribirá su estilo personalizado y, como consecuencia, se perderá el diseño. ¿Seguro que quiere continuar? enterprise: - upgrade_to_ee: "Actualizar a la edición Enterprise" - add_token: "Cargue el token de soporte de la edición Enterprise" + upgrade_to_ee: "Actualizar a Enterprise" + add_token: "Cargue el token de soporte de Enterprise" delete_token_modal: - text: "¿Está seguro que desea eliminar el token actual de la edición Enterpise usado?" + text: "¿Está seguro que desea eliminar el token actual de Enterpise usado?" title: "Eliminar token" replace_token: "Reemplace su token de soporte actual" - order: "Solicitar la edición Enterprise on-premises" - paste: "Pegue su token de soporte de la edición Enterprise" - required_for_feature: "Este add-on solo está disponible con un token de soporte activo de la edición Enterprise." + order: "Solicitar Enterprise On-Premises" + paste: "Pegue su token de soporte de Enterprise" + required_for_feature: "Esta extensión solo está disponible con un token de soporte activo de Enterprise." enterprise_link: "Para obtener más información, haga clic aquí." start_trial: 'Iniciar prueba gratuita' book_now: 'Reservar ahora' @@ -80,7 +80,7 @@ es: buttons: upgrade: "Actualizar ahora" contact: "Contáctenos para una demostración" - enterprise_info_html: "es un add-on de la edición Enterprise ." + enterprise_info_html: "es una extensión de Enterprise ." upgrade_info: "Actualice a un plan de pago para activarlo y empezar a usarlo en su equipo." journal_aggregation: explanation: @@ -320,7 +320,7 @@ es: settings: "Configuración" form_configuration: "Configuración del formulario" more_info_text_html: > - La edición Enterprise te permite personalizar el formulario de configuración con estos add-ons adicionales:
+ Enterprise te permite personalizar el formulario de configuración con estas extensiones adicionales:
projects: "Proyectos" enabled_projects: "Proyectos habilitados" edit_query: "Editar tabla" @@ -452,7 +452,7 @@ es: starts_at: "Válido desde" expires_at: "Caduca el" subscriber: "Suscriptor" - encoded_token: "Token de soporte de la edición Enterprise" + encoded_token: "Token de soporte de Enterprise" active_user_count_restriction: "Máximo de usuarios activos" grids/grid: page: "Página" @@ -598,7 +598,7 @@ es: confirmation: "no coincide con %{attribute}." could_not_be_copied: "%{dependency} no se pudo copiar (en su totalidad)." does_not_exist: "no existe." - error_enterprise_only: "%{action} solo está disponible en OpenProject edición Enterprise" + error_enterprise_only: "%{action} solo está disponible en OpenProject Enterprise" error_unauthorized: "no se puede acceder." error_readonly: "se intentó escribir pero no se puede escribir." email: "no es una dirección de correo válida." @@ -1296,11 +1296,11 @@ es: ee: upsale: form_configuration: - description: "Personalice la configuración del formulario con estos add-ons extra:" + description: "Personalice la configuración del formulario con estas extensiones:" add_groups: "Añadir nuevos grupos de atributos" rename_groups: "Cambiar nombre de grupos de atributos" project_filters: - description_html: "Filtrar y ordenar en campos personalizados es un add-on de la edición Enterprise." + description_html: "Filtrar y ordenar en campos personalizados es una extensión de Enterprise." enumeration_activities: "Actividades de seguimiento del tiempo" enumeration_work_package_priorities: "Prioridades del paquete de trabajo" enumeration_reported_project_statuses: "Estatus del proyecto reportado" @@ -1322,7 +1322,7 @@ es: error_cookie_missing: 'No se encuentra la cookie de OpenProject. Por favor asegúrese de que las cookies están habilitadas, ya que sin ellas esta aplicación no funcionará correctamente.' error_custom_option_not_found: "Esta opción no existe." error_enterprise_activation_user_limit: "Su cuenta no puede ser activada (se alcanzó el límite del usuario). Por favor, contacte su administrador para obtener acceso." - error_enterprise_token_invalid_domain: "La edición Enterprise no está activa. Su dominio del token de Enterprise (%{actual}) no coincide con el nombre de host del sistema (%{expected})." + error_enterprise_token_invalid_domain: "Enterprise no está activo. Su dominio del token de Enterprise (%{actual}) no coincide con el nombre de host del sistema (%{expected})." error_failed_to_delete_entry: 'No se puede eliminar esta entrada.' error_in_dependent: "Error al intentar alterar el objeto dependiente: %{dependent_class} #%{related_id} - %{related_subject}: %{error}" #%{related_id} - %{related_subject}: %{error}" error_in_new_dependent: "Error al crear el objeto dependiente: %{dependent_class} - %{related_subject}: %{error}" @@ -1411,19 +1411,19 @@ es: no_visible_projects: "No hay ningún proyecto visible en esta instancia." users: "Usuarios registrados mas recientes en esta instancia." blocks: - community: "Comunidad de OpenProject" + community: "OpenProject Community" upsale: - title: "Actualizar a la edición Enterprise" + title: "Actualizar a Enterprise" more_info: "Más información" links: - upgrade_enterprise_edition: "Actualizar a la edición Enterprise" + upgrade_enterprise_edition: "Actualizar a Enterprise" postgres_migration: "Migrando su instalación a PostgreSQL" user_guides: "Guia de usuario" faq: "Preguntas Frecuentes" glossary: "Glosario" shortcuts: "Accesos directos" blog: "Blog de OpenProject" - forums: "Foro de la comunidad" + forums: "Foro de Community" newsletter: "Alertas de seguridad / boletín" image_conversion: imagemagick: 'Imagemagick' @@ -1632,7 +1632,7 @@ es: label_enumerations: "Enumeraciones" label_enterprise: "Empresa" label_enterprise_active_users: "%{current}/%{limit} usuarios activos que han reservado" - label_enterprise_edition: "Edición Enterprise" + label_enterprise_edition: "Enterprise" label_environment: "Entorno" label_estimates_and_time: "Valores estimados y tiempo" label_equals: "es" @@ -2073,6 +2073,7 @@ es: more_to_see: one: 'Hay un paquete de trabajo más con notificaciones.' other: 'Hay %{count} paquetes de trabajo más con notificaciones.' + open_in_browser: 'Open in browser' reason: watched: 'Supervisado' assigned: 'Asignado' @@ -2651,11 +2652,11 @@ es: text_custom_field_hint_activate_per_project_and_type: > Los campos personalizados se deben activar en cada tipo de paquete de trabajo y en cada proyecto por separado. text_wp_custom_field_html: > - La edición Enterprise añadirá estos add-ons extra para los campos personalizados de los paquetes de trabajo:
+ Enterprise añadirá estas extensiones para los campos personalizados de los paquetes de trabajo:
text_wp_status_read_only_html: > - La edición Enterprise añadirá estos add-ons extras para los campos de estado de los paquetes de trabajo:
+ Enterprise añadirá estas extensiones para los campos de estado de los paquetes de trabajo:
text_project_custom_field_html: > - La edición Enterprise añadirá estos add-ons extra para los campos personalizados de los proyectos:
+ Enterprise añadirá estas extensiones para los campos personalizados de los proyectos:
text_custom_logo_instructions: > Se recomienda usar un logotipo blanco sobre un fondo transparente. Para obtener los mejores resultados, tanto en pantallas convencionales como en las del tipo Retina, asegúrese de que las dimensiones de la imagen sean de 460 × 60 px. text_custom_favicon_instructions: > @@ -2710,7 +2711,7 @@ es: text_notice_security_badge_displayed_html: > Nota: al activarse, se mostrará una insignia con el estado de instalación en el %{information_panel_label} panel de administración, y en la página principal. Solamente será visible para administradores.
La insignia comprobará tu versión actual de OpenProject comparada con la base de datos oficial de OpenProject para alertarte de cualquier actualización o vulnerabilidad. Para más información sobre las funciones de la comprobación, los datos necesarios para conseguir actualizaciones disponibles, o para desactivar esta comprobación, por favor visita la documentación de configuración. text_own_membership_delete_confirmation: "Estás a punto de eliminar algunos o todos tus permisos, y podrías no poder volver a editar este proyecto.\n¿Estás seguro/a de que quieres continuar?" - text_plugin_assets_writable: "Directorio de Extensiones activos escribible" + text_plugin_assets_writable: "Directorio de extensiones activos escribible" text_powered_by: "Con tecnología de %{link}" text_project_identifier_info: "Se permiten sólo letras minúsculas (a-z), números, guiones y guiones bajos, debe comenzar con una letra minúscula." text_reassign: "Reasignar al paquete de trabajo:" @@ -2957,7 +2958,7 @@ es: warning_user_limit_reached: > Alcanzado el límite de usuarios. No se puede activar ningún usuario más. actualice su plan o bloquee miembros para permitir usuarios adicionales. warning_user_limit_reached_instructions: > - Has alcanzado el límite de usuarios (%{current}/%{max} usuarios activos). Por favor, contacta con sales@openproject.com para mejorar tu plan de edición Enterprise y añadir usuarios adicionales. + Has alcanzado el límite de usuarios (%{current}/%{max} usuarios activos). Por favor, contacta con sales@openproject.com para mejorar tu plan de Enterprise y añadir usuarios adicionales. warning_protocol_mismatch_html: > warning_bar: diff --git a/config/locales/crowdin/et.yml b/config/locales/crowdin/et.yml index cdb4f03a1323..800eb65b2489 100644 --- a/config/locales/crowdin/et.yml +++ b/config/locales/crowdin/et.yml @@ -2076,6 +2076,7 @@ et: more_to_see: one: 'There is 1 more work package with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/eu.yml b/config/locales/crowdin/eu.yml index e2c4bd938209..597a337454c6 100644 --- a/config/locales/crowdin/eu.yml +++ b/config/locales/crowdin/eu.yml @@ -2076,6 +2076,7 @@ eu: more_to_see: one: 'There is 1 more work package with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/fa.yml b/config/locales/crowdin/fa.yml index efafd2dbaf55..266d34fa19ce 100644 --- a/config/locales/crowdin/fa.yml +++ b/config/locales/crowdin/fa.yml @@ -2076,6 +2076,7 @@ fa: more_to_see: one: 'There is 1 more work package with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/fi.yml b/config/locales/crowdin/fi.yml index eea507484d17..3de3dfc695cb 100644 --- a/config/locales/crowdin/fi.yml +++ b/config/locales/crowdin/fi.yml @@ -2076,6 +2076,7 @@ fi: more_to_see: one: 'There is 1 more work package with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/fil.yml b/config/locales/crowdin/fil.yml index 096283943aef..04ec78dae0e3 100644 --- a/config/locales/crowdin/fil.yml +++ b/config/locales/crowdin/fil.yml @@ -2076,6 +2076,7 @@ fil: more_to_see: one: 'There is 1 more work package with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/fr.yml b/config/locales/crowdin/fr.yml index 9df43323398c..820470a955d1 100644 --- a/config/locales/crowdin/fr.yml +++ b/config/locales/crowdin/fr.yml @@ -2076,6 +2076,7 @@ fr: more_to_see: one: 'Il y a encore 1 lot de travaux avec des notifications.' other: 'Il y a encore %{count} lots de travaux avec des notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Surveillé' assigned: 'Assigné' diff --git a/config/locales/crowdin/he.yml b/config/locales/crowdin/he.yml index f097ccf68a8c..cf848cd5eb4a 100644 --- a/config/locales/crowdin/he.yml +++ b/config/locales/crowdin/he.yml @@ -2112,6 +2112,7 @@ he: two: 'There are %{count} more work packages with notifications.' many: 'There are %{count} more work packages with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/hi.yml b/config/locales/crowdin/hi.yml index aadfef854c21..94dde5a07afc 100644 --- a/config/locales/crowdin/hi.yml +++ b/config/locales/crowdin/hi.yml @@ -2074,6 +2074,7 @@ hi: more_to_see: one: 'There is 1 more work package with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/hr.yml b/config/locales/crowdin/hr.yml index 14177208eb36..3c82e62d73b0 100644 --- a/config/locales/crowdin/hr.yml +++ b/config/locales/crowdin/hr.yml @@ -2094,6 +2094,7 @@ hr: one: 'There is 1 more work package with notifications.' few: 'There are %{count} more work packages with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/hu.yml b/config/locales/crowdin/hu.yml index 0a4bfb160a9c..15c81ff60f4c 100644 --- a/config/locales/crowdin/hu.yml +++ b/config/locales/crowdin/hu.yml @@ -2073,6 +2073,7 @@ hu: more_to_see: one: "Még 1 munkacsomag van értesítésekkel.\n" other: 'Még %{count} munkacsomag van értesítésekkel.' + open_in_browser: 'Open in browser' reason: watched: 'Megfigyelt' assigned: 'Hozzárendelve' diff --git a/config/locales/crowdin/id.yml b/config/locales/crowdin/id.yml index 867c13a23294..6fb00e7245b9 100644 --- a/config/locales/crowdin/id.yml +++ b/config/locales/crowdin/id.yml @@ -269,22 +269,22 @@ id: no_results_content_text: Add a news item users: groups: - member_in_these_groups: 'This user is currently a member of the following groups:' - no_results_title_text: This user is currently not a member in any group. + member_in_these_groups: 'Pengguna ini saat ini adalah anggota dari grup berikut:' + no_results_title_text: Pengguna ini saat ini bukan anggota di grup mana pun. memberships: no_results_title_text: This user is currently not a member of a project. placeholder_users: right_to_manage_members_missing: > - You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. - delete_tooltip: "Delete placeholder user" + Anda tidak diizinkan untuk menghapus pengguna placeholder. Anda tidak memiliki hak untuk mengelola anggota untuk semua proyek yang menjadi anggota pengguna placeholder. + delete_tooltip: "Hapus pengguna placeholder" deletion_info: - heading: "Delete placeholder user %{name}" + heading: "Hapus pengguna placeholder %{name}" data_consequences: > - All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be 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. - irreversible: "This action is irreversible" - confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + Semua kemunculan pengguna placeholder (mis., sebagai penerima tugas, penanggung jawab, atau nilai pengguna lainnya) akan dipindahkan ke akun yang disebut "Pengguna yang dihapus". Karena data setiap akun yang dihapus dipindahkan ke akun ini, data yang dibuat pengguna tidak dapat dibedakan dari data akun lain yang dihapus. + irreversible: "Tindakan ini tidak dapat diubah" + confirmation: "Masukkan nama pengguna placeholder %{name} untuk mengonfirmasi penghapusan." upsale: - title: Placeholder users + title: Pengguna placeholder description: > Placeholder users are a way to assign work packages to users who are not part of your project. They can be useful in a range of scenarios; for example, if you need to track tasks for a resource that is not yet named or available, or if you don’t want to give that person access to OpenProject but still want to track tasks assigned to them. prioritiies: @@ -299,13 +299,13 @@ id: statuses: edit: status_readonly_html: | - Check this option to mark work packages with this status as read-only. - No attributes can be changed with the exception of the status. + Centang opsi ini untuk menandai paket pekerjaan dengan status ini sebagai hanya-baca. + Tidak ada atribut yang dapat diubah kecuali status.
- Note: Inherited values (e.g., from children or relations) will still apply. + Catatan: Nilai yang diwariskan (mis., dari anak atau relasi) akan tetap berlaku. 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. + Klik untuk ditugaskan atau mengubah warna status ini. + Itu ditampilkan di tombol status dan dapat digunakan untuk menyorot paket kerja di tabel. index: no_results_title_text: There are currently no work package statuses. no_results_content_text: Add a new status @@ -324,15 +324,14 @@ id: query_group_placeholder: "Berikan nama untuk table" reset: "Disetel ulang ke kondisi bawaan" type_color_text: | - The selected color distinguishes different types - in Gantt charts or work packages tables. It is therefore recommended to use a strong color. + Warna yang dipilih membedakan Jenis yang berbeda dalam bagan Gantt atau tabel paket kerja. Oleh karena itu disarankan untuk menggunakan warna yang kuat. versions: overview: no_results_title_text: There are currently no work packages assigned to this version. wiki: - page_not_editable_index: The requested page does not (yet) exist. You have been redirected to the index of all wiki pages. + page_not_editable_index: Halaman yang diminta tidak (belum) ada. anda telah dialihkan ke indeks semua halaman Wiki. no_results_title_text: There are currently no wiki pages. - print_hint: This will print the content of this wiki page without any navigation bars. + print_hint: Ini akan mencetak konten halaman wiki ini tanpa bilah navigasi apa pun. index: no_results_content_text: Add a new wiki page work_flows: @@ -340,17 +339,17 @@ id: no_results_title_text: There are currently no workflows. work_packages: x_descendants: - other: '%{count} work package descendants' + other: "Satu\nSatu paket pekerjaan turunan\n\nLainnya\n%{count} keturunan paket kerja" bulk: - copy_failed: "The work packages could not be copied." - move_failed: "The work packages could not be moved." - could_not_be_saved: "The following work packages could not be saved:" - none_could_be_saved: "None of the %{total} work packages could be updated." - x_out_of_y_could_be_saved: "%{failing} out of the %{total} work packages could not be updated while %{success} could." - selected_because_descendants: "While %{selected} work packages where selected, in total %{total} work packages are affected which includes descendants." - descendant: "descendant of selected" + copy_failed: "Paket pekerjaan tidak dapat disalin." + move_failed: "Paket pekerjaan tidak dapat dipindahkan." + could_not_be_saved: "Paket pekerjaan berikut tidak dapat disimpan:" + none_could_be_saved: "Tak satu pun dari %{total} paket pekerjaan dapat diperbarui." + x_out_of_y_could_be_saved: "%{failing} out of the %{total} work packages tidak bisa diupdate sedangkan %{success} bisa." + selected_because_descendants: "Sementara %{selected} paket kerja yang dipilih, secara total %{total} paket kerja terpengaruh yang mencakup keturunan." + descendant: "keturunan terpilih" move: - no_common_statuses_exists: "There is no status available for all selected work packages. Their status cannot be changed." + no_common_statuses_exists: "Tidak ada status yang tersedia untuk semua paket pekerjaan yang dipilih. Status mereka tidak dapat diubah." unsupported_for_multiple_projects: 'Bulk move/copy is not supported for work packages from multiple projects' summary: reports: @@ -372,7 +371,7 @@ id: account: delete: "Hapus akun" delete_confirmation: "Yakin Anda ingin menghapus akun?" - deletion_pending: "Account has been locked and was scheduled for deletion. Note that this process takes place in the background. It might take a few moments until the user is fully deleted." + deletion_pending: "Akun telah dikunci dan dijadwalkan untuk dihapus. Perhatikan bahwa proses ini berlangsung di latar belakang. Mungkin perlu beberapa saat hingga pengguna dihapus sepenuhnya." deletion_info: data_consequences: other: "Data yang dibuat pengguna (seperti email, preferensi, Work Package, entri wiki) akan dihapus. Namun, data seperti Work Package dan entri wiki yang terhubung dengan pengguna lain tidak bisa dihapus. Data seperti ini akan dipindahkan ke sebuah akun bernama \"Pengguna Terhapus\". Karena data dari setiap akun terhapus dipindahkan ke akun tersebut, maka pembedaan antara data yang dibuat pengguna dengan data dari akun terhapus lainnya tidak akan bisa dilakukan." @@ -385,8 +384,8 @@ id: other: "Akun akan dihapus dari sistem. User tidak akan bisa Login kembali." self: "Akun Anda akan dihapus dari sistem. Anda tidak akan bisa Login kembali." 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: "Masukkan login %{name} untuk memverifikasi penghapusan. Setelah dikirimkan, Anda akan diminta untuk mengkonfirmasi kata sandi Anda." + self: "Masukkan login Anda %{name} untuk memverifikasi penghapusan. Setelah dikirimkan, Anda akan diminta untuk mengkonfirmasi kata sandi Anda." error_inactive_activation_by_mail: > Akun anda belum diaktifkan. Untuk mengaktifkan, klik pada link yang ada di email anda. error_inactive_manual_activation: > @@ -416,7 +415,7 @@ id: account: "Akun" attr_firstname: "Atribut nama depan" attr_lastname: "Atribut nama belakang" - attr_login: "Username attribute" + attr_login: "Atribut nama pengguna" attr_mail: "Atribut email" base_dn: "Base DN" host: "Host" @@ -461,27 +460,27 @@ id: to: "Work package terkait" status: is_closed: "Paket-Penugasan telah berakhir" - is_readonly: "Work package read-only" + is_readonly: "Hanya baca paket kerja" journal: notes: "Note" member: roles: "Roles" project: active_value: - true: "unarchived" + true: "tidak diarsipkan" false: "diarsipkan" identifier: "Pengenal" latest_activity_at: "Latest activity at" parent: "Sub-Project dari" public_value: title: "Visibilitas" - true: "public" - false: "private" + true: "publik" + false: "pribadi" queries: "Query" - templated: "Template project" + templated: "proyek templat" templated_value: - true: "marked as template" - false: "unmarked as template" + true: "ditandai sebagai templat" + false: "tidak ditandai sebagai templat" types: "Tipe" versions: "Versi" work_packages: "Paket-Penugasan" @@ -512,10 +511,10 @@ id: spent_on: "Tanggal" type: "Tipe" type: - description: "Default text for description" + description: "Teks default untuk deskripsi" attribute_groups: '' - is_in_roadmap: "Displayed in roadmap by default" - is_default: "Activated for new projects by default" + is_in_roadmap: "Ditampilkan di roadmap secara default" + is_default: "Diaktifkan untuk proyek baru secara default" is_milestone: "Is milestone" color: "Warna" user: @@ -536,7 +535,7 @@ id: auto_hide_popups: "Pemberitahuan Auto-hide sukses" warn_on_leaving_unsaved: "Ingatkan saya ketika meninggalkan sebuah paket kerja dengan perubahan yang belum disimpan" version: - effective_date: "Finish date" + effective_date: "Tanggal selesai" sharing: "Sharing" wiki_content: text: "Teks" @@ -548,23 +547,23 @@ id: work_package: begin_insertion: "Begin of the insertion" begin_deletion: "Begin of the deletion" - children: "Subelements" + children: "Subelemen" done_ratio: "Progress (%)" duration: "Durasi" end_insertion: "End of the insertion" end_deletion: "End of the deletion" - ignore_non_working_days: "Ignore non working days" + ignore_non_working_days: "Abaikan hari tidak bekerja" include_non_working_days: - title: 'Working days' - false: 'working days only' - true: 'include non-working days' + title: 'Hari kerja' + false: 'hari kerja saja' + true: 'termasuk hari tidak bekerja' parent: "Induk" parent_issue: "Induk" parent_work_package: "Induk" priority: "Prioritas" progress: "Progress (%)" - readonly: "Read only" - schedule_manually: "Manual scheduling" + readonly: "Baca saja" + schedule_manually: "Penjadwalan manual" spent_hours: "Durasi" spent_time: "Durasi" subproject: "Sub-Project" @@ -574,12 +573,12 @@ id: watcher: "Pemantau" 'doorkeeper/application': uid: "ID Pelanggan" - secret: "Client secret" + secret: "Rahasia klien" owner: "Pemilik" - redirect_uri: "Redirect URI" - client_credentials_user_id: "Client Credentials User ID" + redirect_uri: "Alihkan URI" + client_credentials_user_id: "ID Pengguna Kredensial Klien" scopes: "Cakupan" - confidential: "Confidential" + confidential: "Rahasia" errors: messages: accepted: "harus disetujui." @@ -616,12 +615,12 @@ id: invalid_url_scheme: 'bukanlah sebuah protokol yang didukung (diperbolehkan: %{allowed_schemes}).' less_than_or_equal_to: "harus kurang dari atau sama dengan %{count}." not_available: "tidak tersedia karena konfigurasi sistem." - not_deletable: "cannot be deleted." - not_current_user: "is not the current user." + not_deletable: "tidak dapat dihapus." + not_current_user: "bukan pengguna saat ini." not_a_date: "bukan tanggal yang valid." not_a_datetime: "bukan tanggal waktu yang valid." not_a_number: "harus diisi angka." - not_allowed: "is invalid because of missing permissions." + not_allowed: "tidak valid karena tidak ada izin." not_an_integer: "harus bilangan bulat." not_an_iso_date: "is not a valid date. Required format: YYYY-MM-DD." not_same_project: "harus berasal dari proyek yang sama." @@ -631,11 +630,11 @@ id: taken: "sudah dipakai." too_long: "panjang karakter maksimal %{count}." too_short: "minimal %{count} karakter." - type_mismatch: "is not of type '%{type}'" - type_mismatch_nested: "is not of type '%{type}' at path '%{path}'" - unchangeable: "cannot be changed." - unknown_property: "is not a known property." - unknown_property_nested: "has the unknown path '%{path}'." + type_mismatch: "bukan tipe '%{type}'" + type_mismatch_nested: "bukan tipe '%{type}' di jalur '%{path}'" + unchangeable: "tidak bisa diubah." + unknown_property: "bukanlah properti yang diketahui." + unknown_property_nested: "memiliki jalur yang tidak diketahui '%{path}'." unremovable: "tidak bisa dihapus." url_not_secure_context: > is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. @@ -649,34 +648,34 @@ id: attachment: attributes: content_type: - blank: "The content type of the file cannot be blank." - not_whitelisted: "The file was rejected by an automatic filter. '%{value}' is not whitelisted for upload." + blank: "Jenis konten file tidak boleh kosong." + not_whitelisted: "File ditolak oleh filter otomatis. '%{value}' tidak masuk daftar putih untuk unggahan." format: "%{message}" capability: context: global: 'Global' query: filters: - minimum: "need to include at least one filter for principal, context or id with the '=' operator." + minimum: "perlu menyertakan setidaknya satu filter untuk prinsipal, konteks, atau id dengan operator '='." custom_field: at_least_one_custom_option: "Paling tidak, satu pilihan dibutuhkan untuk tersedia." 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}." + only_one_allowed: "(%{name}) hanya satu nilai yang diperbolehkan." + empty: "Nilai (%{name}) tidak boleh kosong." + inclusion: "nilai (%{name}) tidak disetel ke salah satu nilai yang diperbolehkan." + not_logged_in: "Nilai (%{name}) tidak dapat disetel karena Anda belum masuk." + not_an_integer: "(%{nama}) bukan bilangan bulat." + smaller_than_or_equal_to: "(%{name}) harus lebih kecil dari atau sama dengan %{count}." + greater_than_or_equal_to: "(%{name}) harus lebih besar dari atau sama dengan %{count}." format: "%{message}" 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.' + fragment_present: 'tidak dapat berisi fragmen.' + invalid_uri: 'harus berupa URI yang valid.' + relative_uri: 'harus berupa URI absolut.' secured_uri: 'is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost.' - forbidden_uri: 'is forbidden by the server.' + forbidden_uri: 'dilarang oleh server.' scopes: not_match_configured: "doesn't match available scopes." enterprise_token: @@ -686,20 +685,20 @@ id: outside: 'berada di luar jaringan.' end_before_start: 'nilai akhir harus lebih besar dari nilai awal.' notifications: - at_least_one_channel: 'At least one channel for sending notifications needs to be specified.' + at_least_one_channel: 'Setidaknya satu saluran untuk mengirim notifikasi harus ditentukan.' attributes: read_ian: - read_on_creation: 'cannot be set to true on notification creation.' + read_on_creation: 'tidak dapat disetel ke true pada pembuatan notifikasi.' mail_reminder_sent: - set_on_creation: 'cannot be set to true on notification creation.' + set_on_creation: 'tidak dapat disetel ke true pada pembuatan notifikasi.' reason: - no_notification_reason: 'cannot be blank as IAN is chosen as a channel.' + no_notification_reason: 'tidak boleh kosong karena IAN dipilih sebagai saluran.' reason_mail_digest: - no_notification_reason: 'cannot be blank as mail digest is chosen as a channel.' + no_notification_reason: 'tidak boleh kosong karena mail digest dipilih sebagai saluran.' non_working_day: attributes: date: - taken: "A non-working day already exists for %{value}." + taken: "Hari non-kerja sudah ada untuk %{value}." format: "%{message}" parse_schema_filter_params_service: attributes: @@ -885,7 +884,7 @@ id: news: "News" notification: other: "Notifications" - placeholder_user: "Placeholder user" + placeholder_user: "Pengguna placeholder" project: "Project" query: "Query kustom" role: @@ -897,24 +896,24 @@ id: wiki_page: "Halaman Wiki" workflow: "Workflow" work_package: "Paket-Penugasan" - 'doorkeeper/application': "OAuth application" + 'doorkeeper/application': "aplikasi OAuth" errors: header_invalid_fields: "Eror pada isian berikut :" field_erroneous_label: "Bidang ini tidak valid: %{full_errors} masukkan nilai yang berlaku." activity: item: - created_by_on: "created by %{user} on %{datetime}" - created_on: "created on %{datetime}" - updated_by_on: "updated by %{user} on %{datetime}" - updated_on: "updated on %{datetime}" + created_by_on: "dibuat oleh %{user} pada %{datetime}" + created_on: "dibuat pada %{datetime}" + updated_by_on: "diperbarui oleh %{user} pada %{datetime}" + updated_on: "diperbarui pada %{datetime}" parent_without_of: "Sub-Project" - parent_no_longer: "No longer subproject of" + parent_no_longer: "Tidak lagi menjadi subproyek dari" filter: changeset: "Set perubahan" message: "Forum" news: "News" - project_attribute: "Project attributes" - subproject: "Include subprojects" + project_attribute: "Atribut proyek" + subproject: "Sertakan subproyek" time_entry: "Durasi" wiki_edit: "Wiki" work_package: "Paket-Penugasan" @@ -938,11 +937,11 @@ id: date: "Tanggal" default_columns: "Kolom default" description: "Deskripsi" - derived_due_date: "Derived finish date" - derived_estimated_hours: "Derived estimated time" - derived_start_date: "Derived start date" + derived_due_date: "Tanggal selesai turunan" + derived_estimated_hours: "Perkiraan waktu turunan" + derived_start_date: "Tanggal mulai turunan" display_sums: "Tampilkan jumlah" - due_date: "Finish date" + due_date: "Tanggal selesai" estimated_hours: "Estimasi Waktu" estimated_time: "Estimasi Waktu" firstname: "Nama depan" @@ -961,7 +960,7 @@ id: password: "Password" priority: "Prioritas" project: "Project" - responsible: "Accountable" + responsible: "Akuntabel" role: "Role" roles: "Roles" start_date: "Tanggal start" @@ -972,39 +971,39 @@ id: type: "Tipe" updated_at: "Diperbarui" updated_on: "Diperbarui" - uploader: "Uploader" + uploader: "Pengunggah" user: "User" value: "Nilai" version: "Versi" work_package: "Paket-Penugasan" backup: - failed: "Backup failed" - label_backup_token: "Backup token" - label_create_token: "Create backup token" - label_delete_token: "Delete backup token" - label_reset_token: "Reset backup token" - label_token_users: "The following users have active backup tokens" + failed: "Pencadangan gagal" + label_backup_token: "Token cadangan" + label_create_token: "Buat token cadangan" + label_delete_token: "Hapus token cadangan" + label_reset_token: "Setel ulang token cadangan" + label_token_users: "Pengguna berikut memiliki token cadangan aktif" reset_token: action_create: Buat baru action_reset: Reset - heading_reset: "Reset backup token" - heading_create: "Create backup token" + heading_reset: "Setel ulang token cadangan" + heading_create: "Buat token cadangan" implications: > - Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. + Mengaktifkan cadangan akan memungkinkan setiap pengguna dengan izin yang diperlukan dan token cadangan ini untuk mengunduh cadangan yang berisi semua data instalasi OpenProject ini. Ini termasuk data semua pengguna lain. info: > - You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. + Anda harus membuat token cadangan agar dapat membuat cadangan. Setiap kali Anda ingin meminta cadangan, Anda harus memberikan token ini. Anda dapat menghapus token cadangan untuk menonaktifkan cadangan bagi pengguna ini. verification: > - Enter %{word} to confirm you want to %{action} the backup token. - verification_word_reset: reset - verification_word_create: create + Masukkan %{word} untuk mengonfirmasi bahwa Anda ingin %{action} token cadangan. + verification_word_reset: mengatur ulang + verification_word_create: membuat warning: > - When you create a new token you will only be allowed to request a backup after 24 hours. This is a safety measure. After that you can request a backup any time using that token. - text_token_deleted: Backup token deleted. Backups are now disabled. + Saat Anda membuat token baru, Anda hanya akan diizinkan untuk meminta cadangan setelah 24 jam. Ini adalah langkah keamanan. Setelah itu Anda dapat meminta cadangan kapan saja menggunakan token itu. + text_token_deleted: Token cadangan dihapus. Cadangan sekarang dinonaktifkan. error: - invalid_token: Invalid or missing backup token - token_cooldown: The backup token will be valid in %{hours} hours. - backup_pending: There is already a backup pending. - limit_reached: You can only do %{limit} backups per day. + invalid_token: Token cadangan tidak valid atau tidak ada + token_cooldown: Token cadangan akan valid dalam %{hours} jam. + backup_pending: Sudah ada cadangan yang tertunda. + limit_reached: Anda hanya dapat melakukan %{limit} pencadangan per hari. button_add: "Tambah" button_add_comment: "Tambah komentar" button_add_member: Add member @@ -1019,7 +1018,7 @@ id: button_change_password: "Ubah password" button_check_all: "Cek semua" button_clear: "Clear" - button_click_to_reveal: "Click to reveal" + button_click_to_reveal: "Klik untuk mengungkapkan" button_close: 'Tutup' button_collapse_all: "Tutup semua" button_configure: "Konfigurasi" @@ -1048,12 +1047,12 @@ id: button_remove: Remove button_rename: "Ubah nama" button_replace: "Ganti" - button_revoke: "Revoke" + button_revoke: "Menarik kembali" button_reply: "Balas" button_reset: "Reset" button_rollback: "Kembali ke versi ini" button_save: "Simpan" - button_apply_changes: "Apply changes" + button_apply_changes: "Menerapkan perubahan" button_save_back: "Save and back" button_show: "Tampilkan" button_sort: "Urutkan" @@ -1077,25 +1076,25 @@ id: failure_message: Persetujuan gagal, tidak bisa dilanjutkan. title: Persetujuan Pengguna decline_warning_message: Anda telah menolak untuk menyetujui dan telah dikeluarkan. - 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}" + user_has_consented: Pengguna telah menyetujui pernyataan yang Anda konfigurasikan pada waktu yang ditentukan. + not_yet_consented: Pengguna belum memberikan persetujuan, akan diminta saat login berikutnya. + contact_mail_instructions: Tentukan alamat email yang dapat dijangkau pengguna ke pengontrol data untuk melakukan permintaan perubahan atau penghapusan data. + contact_your_administrator: Silakan hubungi administrator Anda jika Anda ingin akun Anda dihapus. + contact_this_mail_address: Harap hubungi %{mail_address} jika Anda ingin akun Anda dihapus. + text_update_consent_time: Centang kotak ini untuk memaksa pengguna memberikan izin lagi. Aktifkan jika Anda telah mengubah aspek hukum dari informasi izin di atas. + update_consent_last_time: "Pembaruan persetujuan terakhir: %{update_time}" copy_project: - title: 'Copy project "%{source_project_name}"' + title: 'Salin proyek "%{source_project_name}"' 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: "Tidak dapat meng-copy Project %{source_project_name}" - failed_internal: "Copying failed due to an internal error." + failed_internal: "Penyalinan gagal karena kesalahan internal." succeeded: "Project %{target_project_name} telah dibuat" errors: "Eror" project_custom_fields: 'Field kustom pada proyek' x_objects_of_this_type: - zero: 'No objects of this type' - one: 'One object of this type' - other: '%{count} objects of this type' + zero: 'Tidak ada objek jenis ini' + one: 'Salah satu objek jenis ini' + other: '%{count} objek jenis ini' text: failed: "Tidak dapat meng-copy Project \"%{source_project_name}\" ke Project \"%{target_project_name}\"." succeeded: "Project \"%{source_project_name}\" ke \"%{target_project_name}\" telah di-copy." @@ -1250,7 +1249,7 @@ id: description_choose_project: "Project" description_compare_from: "Bandingkan dari" description_compare_to: "Bandingkan dengan" - description_current_position: "You are here: " + description_current_position: "Kamu di sini:" description_date_from: "Masukkan tanggal start" description_date_to: "Masukkan tanggal finish" description_enter_number: "Masukkan nomor" @@ -1281,36 +1280,36 @@ id: rename_groups: "Menamai ulang atribut kelompok-kelompok" project_filters: description_html: "Filtering and sorting on custom fields is an Enterprise edition add-on." - enumeration_activities: "Time tracking activities" + enumeration_activities: "Kegiatan pelacakan waktu" enumeration_work_package_priorities: "Paket-Penugasan prioritas" enumeration_reported_project_statuses: "Status Project yang di-Report" error_auth_source_sso_failed: "Single Sign-On (SSO) untuk pengguna '%{value}' gagal" - error_can_not_archive_project: "This project cannot be archived: %{errors}" + error_can_not_archive_project: "Proyek ini tidak dapat diarsipkan: %{errors}" error_can_not_delete_entry: "Tidak dapat menghapus isian" error_can_not_delete_custom_field: "Tidak dapat menghapus isian kustom" error_can_not_delete_type: - explanation: 'This type contains work packages and cannot be deleted. You can see all affected work packages in this view.' - archived_projects: 'There are also work packages in archived projects. You need to reactivate the following projects first, before you can change the type of the respective work packages: %{archived_projects}' + explanation: 'Jenis ini berisi paket pekerjaan dan tidak dapat dihapus. Anda dapat melihat semua paket pekerjaan yang terpengaruh di tampilan ini.' + archived_projects: 'Ada juga paket pekerjaan dalam proyek yang diarsipkan. Anda perlu mengaktifkan kembali proyek-proyek berikut terlebih dahulu, sebelum Anda dapat mengubah jenis paket pekerjaan masing-masing: %{archived_projects}' error_can_not_delete_standard_type: "Tipe standar tidak dapat dihapus." error_can_not_invite_user: "Gagal untuk mengirimkan undangan kepada pengguna." error_can_not_remove_role: "Role ini sedang dipakai dan tidak dapat dihapus." error_can_not_reopen_work_package_on_closed_version: "Paket-Penugasan yang telah berakhir tidak dapat dibuka kembali" error_can_not_find_all_resources: "Tidak dapat menemukan semua sumber daya terkait permintaan ini." - error_can_not_unarchive_project: "This project cannot be unarchived: %{errors}" + error_can_not_unarchive_project: "Proyek ini tidak dapat diarsipkan: %{errors}" error_check_user_and_role: "Silakan pilih user dan Role." error_code: "Error %{code}" 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: "Pilihan tidak ada." - 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: "Akun Anda tidak dapat diaktifkan (batas pengguna tercapai). Silakan hubungi administrator Anda untuk mendapatkan akses." error_enterprise_token_invalid_domain: "The Enterprise edition is not active. Your Enterprise token's domain (%{actual}) does not match the system's host name (%{expected})." error_failed_to_delete_entry: 'Gagal untuk menghapus isian ini.' - error_in_dependent: "Error attempting to alter dependent object: %{dependent_class} #%{related_id} - %{related_subject}: %{error}" #%{related_id} - %{related_subject}: %{error}" - error_in_new_dependent: "Error attempting to create dependent object: %{dependent_class} - %{related_subject}: %{error}" - error_invalid_selected_value: "Invalid selected value." - error_journal_attribute_not_present: "Journal does not contain attribute %{attribute}." + error_in_dependent: "Kesalahan saat mencoba mengubah objek dependen: %{dependent_class} #%{related_id} - %{related_subject}: %{error}" #%{related_id} - %{related_subject}: %{error}" + error_in_new_dependent: "Kesalahan saat mencoba membuat objek dependen: %{dependent_class} - %{related_subject}: %{error}" + error_invalid_selected_value: "Nilai yang dipilih tidak valid." + error_journal_attribute_not_present: "Jurnal tidak mengandung atribut %{attribute}." error_pdf_export_too_many_columns: "Kolom yang dipilih utnuk ekspor PDF terlalu banyak. Mohon kurangi jumlah kolom." - 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_pdf_failed_to_export: "Ekspor PDF tidak dapat disimpan: %{error}" + error_token_authenticity: 'Tidak dapat memverifikasi token Pemalsuan Permintaan Lintas Situs. Apakah Anda mencoba mengirimkan data di beberapa browser atau tab? Harap tutup semua tab dan coba lagi.' error_work_package_done_ratios_not_updated: "Paket-Penugasan selesai, rasio tidak diupdate." error_work_package_not_found_in_project: "Paket-Penugasan tidak ditemukan atau tidak termasuk dalam Project ini" error_must_be_project_member: "harus sbg Project Member" @@ -1319,8 +1318,8 @@ id: error_no_default_work_package_status: "Status Paket-Penugasan default tidak didefinisikan. Silakan periksa konfigurasi (ke \"Administrasi -> Paket-Penugasan Status\")." error_no_type_in_project: "Tidak ada Tipe terasosiasi dengan Project ini. Silakan cek Pengaturan Project." error_omniauth_registration_timed_out: "Timed out. Silakan coba lagi." - error_omniauth_invalid_auth: "The authentication information returned from the identity provider was invalid. Please contact your administrator for further help." - error_password_change_failed: 'An error occurred when trying to change the password.' + error_omniauth_invalid_auth: "Informasi autentikasi yang dikembalikan dari penyedia identitas tidak valid. Silakan hubungi administrator Anda untuk bantuan lebih lanjut." + error_password_change_failed: 'Terjadi kesalahan saat mencoba mengubah kata sandi.' error_scm_command_failed: "Error ketika mengakses repositori: %{value}" error_scm_not_found: "Entri atau revisi tidak ditemukan dalam repositori." error_unable_delete_status: "Work package tidak dapat dihapus karena dipakai oleh work package lain." @@ -1334,13 +1333,13 @@ id: error_menu_item_not_saved: Menu item tidak bisa disimpan 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 occurred during external authentication. Please try again." - error_attribute_not_highlightable: "Attribute(s) not highlightable: %{attributes}" + error_external_authentication_failed: "Terjadi kesalahan selama autentikasi eksternal. Silakan coba lagi." + error_attribute_not_highlightable: "Atribut tidak dapat disorot: %{attributes}" events: changeset: 'Set-Perubahan telah diedit' message: Pesan telah diedit news: News - project_attributes: 'Project attributes edited' + project_attributes: 'Atribut proyek diubah' projects: 'Project edited' reply: Telah direspon time_entry: 'Timelog telah diedit' @@ -1349,12 +1348,12 @@ id: work_package_edit: 'Paket-Penugasan telah diedit' work_package_note: 'Catatan Paket-Penugasan telah ditambah' title: - project: "Project: %{name}" - subproject: "Subproject: %{name}" + project: "Proyek: %{name}" + subproject: "Subproyek: %{name}" export: - your_work_packages_export: "Your work packages export" - succeeded: "The export has completed successfully." - failed: "The export has failed: %{message}" + your_work_packages_export: "Ekspor paket pekerjaan Anda" + succeeded: "Ekspor berhasil diselesaikan." + failed: "Ekspor gagal: %{message}" format: atom: "Atom" csv: "CSV" @@ -1363,15 +1362,15 @@ id: pdf_with_descriptions_and_attachments: "PDF with descriptions and attachments" pdf_with_attachments: "PDF dengan lampiran" image: - omitted: "Image not exported." + omitted: "Gambar tidak diekspor." 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)" + pdftotext: "Pdf2teks tersedia (opsional)" + unrtf: "Unrtf tersedia (opsional)" + catdoc: "Catdoc tersedia (opsional)" + xls2csv: "Xls2csv tersedia (opsional)" + catppt: "Catppt tersedia (opsional)" + tesseract: "Tesseract tersedia (opsional)" general_csv_decimal_separator: "." general_csv_encoding: "UTF-8" general_csv_separator: "," @@ -1388,7 +1387,7 @@ id: homescreen: additional: projects: "Newest visible projects in this instance." - no_visible_projects: "There are no visible projects in this instance." + no_visible_projects: "Tidak ada proyek yang terlihat dalam contoh ini." users: "Newest registered users in this instance." blocks: community: "OpenProject community" @@ -1408,19 +1407,19 @@ id: image_conversion: imagemagick: 'Imagemagick' journals: - changes_retracted: "The changes were retracted." + changes_retracted: "Perubahan ditarik kembali." links: configuration_guide: 'Petunjuk Konfigurasi' - get_in_touch: "You have questions? Get in touch with us." + get_in_touch: "Anda punya pertanyaan? Hubungi kami." instructions_after_registration: "Anda dapat login setelah akun Anda diaktifkan, klik %{signin}." instructions_after_logout: "Anda dapat login kembali dengan mengklik %{signin}." instructions_after_error: "Anda dapat login lagi dengan mengklik %{signin}. Jika masih muncul error, tanyakan admin Anda untuk bantuan." menus: admin: mail_notification: "Notifikasi email" - mails_and_notifications: "Emails and notification" + mails_and_notifications: "Email dan pemberitahuan" aggregation: 'Aggregation' - api_and_webhooks: "API and webhooks" + api_and_webhooks: "API dan webhook" quick_add: label: "Buka cepat tambah menu" my_account: @@ -1428,32 +1427,32 @@ id: 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_tokens: "Access tokens" + access_tokens: "Token akses" headers: action: "Action" expiration: "Expires" indefinite_expiration: "Never" notifications: - send_notifications: "Send notifications for this action" + send_notifications: "Kirim pemberitahuan untuk tindakan ini" work_packages: subject: - created: "The work package was created." - assigned: "You have been assigned to %{work_package}" - subscribed: "You subscribed to %{work_package}" - mentioned: "You have been mentioned in %{work_package}" - responsible: "You have become accountable for %{work_package}" - watched: "You are watching %{work_package}" + created: "Paket kerja telah dibuat." + assigned: "Anda telah ditugaskan ke %{work_package}" + subscribed: "Anda berlangganan %{work_package}" + mentioned: "Anda telah disebutkan di %{work_package}" + responsible: "Anda telah bertanggung jawab atas %{work_package}" + watched: "Anda sedang menonton %{work_package}" update_info_mail: body: > - We are excited to announce the release of OpenProject 12.0. It's a major release that will hopefully significantly improve the way you use OpenProject. - Starting with this release, we are introducing in-app notifications. From now on, you will receive notifications for updates to work packages directly in OpenProject. You can mark these notifications as read, reply to a comment or even directly modify work package attributes without leaving the notification center. - This also means that we will no longer be using emails for notifications. We think the new notification center is a better place to view and act upon these updates. Nevertheless, if you would like continue receiving updates via email, you can choose to receive daily email reminders at particular times of your choosing. - Please make sure to verify your new default notification settings, and set your preferences for notifications and email reminders via your account settings. You can do this through the “Change email settings” button bellow. - We hope you find in-app notifications useful and that they makes you even more productive. - Sincerely, The OpenProject team - body_header: 'Version 12.0 with Notification Center' + Kami sangat senang mengumumkan rilis OpenProject 12.0. Ini adalah rilis utama yang diharapkan akan secara signifikan meningkatkan cara Anda menggunakan OpenProject. + Dimulai dengan rilis ini, kami memperkenalkan notifikasi dalam aplikasi. Mulai sekarang, Anda akan menerima pemberitahuan untuk pembaruan paket kerja langsung di OpenProject. Anda dapat menandai notifikasi ini sebagai telah dibaca, membalas komentar, atau bahkan langsung mengubah atribut paket kerja tanpa meninggalkan pusat notifikasi. + Ini juga berarti bahwa kami tidak akan lagi menggunakan email untuk pemberitahuan. Menurut kami, pusat notifikasi baru adalah tempat yang lebih baik untuk melihat dan menindaklanjuti pembaruan ini. Namun demikian, jika Anda ingin terus menerima pembaruan melalui email, Anda dapat memilih untuk menerima pengingat email setiap hari pada waktu tertentu yang Anda pilih. + Pastikan untuk memverifikasi pengaturan notifikasi default baru Anda, dan atur preferensi Anda untuk notifikasi dan pengingat email melalui pengaturan akun Anda. Anda dapat melakukannya melalui tombol "Ubah setelan email" di bawah. + Kami harap notifikasi dalam aplikasi bermanfaat dan membuat Anda semakin produktif. + Hormat kami, Tim OpenProject + body_header: 'Versi 12.0 dengan Notification Center' body_subheader: 'News' - subject: 'Important changes to notifications with the release of 12.0' + subject: 'Perubahan penting pada notifikasi dengan rilis 12.0' label_accessibility: "Kemampuan akses" label_account: "Akun" label_active: "Aktif" @@ -1477,7 +1476,7 @@ id: label_all: "semua" label_all_time: "Sepanjang waktu" label_all_words: "Semua kata" - label_all_open_wps: "All open" + label_all_open_wps: "Semua terbuka" label_always_visible: "Always displayed" label_announcement: "Announcement" label_api_access_key: "API access key" @@ -1498,12 +1497,12 @@ id: label_auth_source_plural: "Mode otentikasi" label_authentication: "Otentikasi" label_available_project_work_package_categories: 'Available work package categories' - label_available_project_work_package_types: 'Available work package types' + label_available_project_work_package_types: 'Jenis paket pekerjaan yang tersedia' label_available_project_forums: 'Forums tersedia' label_available_project_versions: 'Available versions' label_available_project_repositories: 'Available repositories' label_api_documentation: "API documentation" - label_backup: "Backup" + label_backup: "Cadangan" label_between: "antara" label_blocked_by: "diblokir oleh" label_blocks: "blok" @@ -1538,11 +1537,11 @@ id: 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: "Sub-elemen" - label_chronological_order: "Oldest first" + label_chronological_order: "Terlama dulu" label_close_versions: "Tutup versi yang sudah komplit" label_closed_work_packages: "berakhir" label_collapse: "Tampilkan" - label_collapsed_click_to_show: "Collapsed. Click to show" + label_collapsed_click_to_show: "Runtuh. Klik untuk menampilkan" label_configuration: Konfigurasi label_comment_add: "Tambahkan komentar" label_comment_added: "Komentar telah ditambahkan" @@ -1568,7 +1567,7 @@ id: label_custom_field_plural: "Isian kustom" label_custom_field_default_type: "Tipe kosong" label_custom_style: "Rancangan" - label_database_version: "PostgreSQL version" + label_database_version: "Versi PostgreSQL" label_date: "Tanggal" label_date_and_time: "Tanggal dan waktu" label_date_from: "Dari" @@ -1580,8 +1579,8 @@ id: label_delete_project: "Hapus proyek" label_deleted: "dihapus" label_deleted_custom_field: "(isian kustom dihapus)" - label_deleted_custom_option: "(deleted option)" - label_missing_or_hidden_custom_option: "(missing value or lacking permissions to access)" + label_deleted_custom_option: "(opsi dihapus)" + label_missing_or_hidden_custom_option: "(nilai hilang atau kurang izin untuk mengakses)" label_descending: "Deskending" label_details: "Detil" label_development_roadmap: "Development roadmap" @@ -1611,16 +1610,16 @@ id: label_enumeration_value: "Enumeration value" label_enumerations: "Enumerasi" label_enterprise: "Perusahaan" - label_enterprise_active_users: "%{current}/%{limit} booked active users" + label_enterprise_active_users: "%{current}/%{limit} pengguna aktif yang dipesan" label_enterprise_edition: "Enterprise edition" label_environment: "Environment" label_estimates_and_time: "Perkiraan dan waktu" label_equals: "adalah" - label_everywhere: "everywhere" + label_everywhere: "di mana pun" label_example: "Contoh" label_import: "Impor" label_export_to: "Juga tersedia dalam:" - label_expanded_click_to_collapse: "Expanded. Click to collapse" + label_expanded_click_to_collapse: "Diperluas. Klik untuk menciutkan" label_f_hour: "%{value} jam" label_f_hour_plural: "%{value} jam" label_feed_plural: "Feed" @@ -1645,15 +1644,15 @@ id: label_group_by: "Pengelompokan" label_group_new: "Grup baru" label_group: "Grup" - label_group_named: "Group %{name}" + label_group_named: "Grup %{name}" label_group_plural: "Grup" label_help: "Support" label_here: disini label_hide: "Sembunyikan" label_history: "Histori" - label_hierarchy_leaf: "Hierarchy leaf" + label_hierarchy_leaf: "Daun hierarki" label_home: "Home" - label_subject_or_id: "Subject or ID" + label_subject_or_id: "Subyek atau ID" label_impressum: "Pernyataan hukum" label_in: "dalam" label_in_less_than: "kurang dari" @@ -1668,7 +1667,7 @@ id: label_installation_guides: 'Installation guides' label_integer: "Integer" label_internal: "Internal" - label_introduction_video: "Introduction video" + label_introduction_video: "Video pengantar" label_invite_user: "Invite user" label_show_hide: "Show/hide" label_show_all_registered_users: "Menampilkan semua pengguna teregistrasi" @@ -1676,7 +1675,7 @@ id: label_journal_diff: "Deskripsi perbandingan" label_language: "Bahasa" label_jump_to_a_project: "Lompat ke Project..." - label_keyword_plural: 'Keywords' + label_keyword_plural: 'Kata kunci' label_language_based: "Berdasarkan bahasa user" label_last_activity: "Aktivitas terakhir" label_last_change_on: "Last change on" @@ -1705,13 +1704,13 @@ id: label_max_size: "Ukuran maks." label_me: "saya" label_member_new: "Member baru" - label_member_all_admin: "(All roles due to admin status)" + label_member_all_admin: "(Semua peran karena status admin)" label_member_plural: "Member" - lable_membership_added: 'Member added' - lable_membership_updated: 'Member updated' + lable_membership_added: 'Anggota ditambahkan' + lable_membership_updated: 'Anggota diperbarui' label_menu_badge: - pre_alpha: 'pre-alpha' - alpha: 'alpha' + pre_alpha: 'pra-alfa' + alpha: 'alfa' beta: 'beta' label_menu_item_name: "Nama item menu" label_message: "Message" @@ -1738,7 +1737,7 @@ id: label_name: "Nama" label_never: "Never" label_new: "Baru" - label_new_features: "New features" + label_new_features: "Fitur baru" label_new_statuses_allowed: "Status baru yang diijinkan" label_news_singular: "News" label_news_added: "News ditambahkan" @@ -1752,7 +1751,7 @@ id: label_next_week: "Minggu depan" label_no_change_option: "(tdk berubah)" label_no_data: "Tidak ada data untuk ditampilkan" - label_no_parent_page: "No parent page" + label_no_parent_page: "Tidak ada halaman induk" label_nothing_display: "Tidak ada yang ditampilkan" label_nobody: "tidak ada" label_not_found: 'tidak ditemukan' @@ -1761,14 +1760,14 @@ id: label_not_contains: "tidak berisi" label_not_equals: "tidak" label_on: "pada" - label_operator_all: "is not empty" - label_operator_none: "is empty" - label_operator_equals_or: "is (OR)" - label_operator_equals_all: "is (AND)" + label_operator_all: "tidak kosong" + label_operator_none: "kosong" + label_operator_equals_or: "adalah (ATAU)" + label_operator_equals_all: "adalah (DAN)" label_open_menu: "Buka menu" label_open_work_packages: "buka" label_open_work_packages_plural: "buka" - label_openproject_website: "OpenProject website" + label_openproject_website: "Situs web OpenProject" label_optional_description: "Deskripsi" label_options: "Opsi" label_other: "Lainnya" @@ -1788,9 +1787,9 @@ id: label_permissions: "Hak akses" label_permissions_report: "Laporan" label_personalize_page: "Personalisasi halaman" - label_placeholder_user: "Placeholder user" + label_placeholder_user: "Pengguna placeholder" label_placeholder_user_new: "New placeholder user" - label_placeholder_user_plural: "Placeholder users" + label_placeholder_user_plural: "Pengguna placeholder" label_planning: "Perencanaan" label_please_login: "Silakan login" label_plugins: "Plugin" @@ -1807,7 +1806,7 @@ id: label_professional_support: "Professional support" label_profile: "Profil" label_project_activity: "Project activity" - label_project_attribute_plural: "Project attributes" + label_project_attribute_plural: "Atribut proyek" label_project_count: "Jumlah proyek" label_project_copy_notifications: "Kirim email notifikasi selama meng-copy Project" label_project_latest: "Project terbaru" @@ -1983,7 +1982,7 @@ id: label_workflow: "Workflow" label_workflow_plural: "Alur kerja" label_workflow_summary: "Ringkasan" - label_working_days: "Working days" + label_working_days: "Hari kerja" label_x_closed_work_packages_abbr: one: "1 closed" other: "%{count} tertutup" @@ -2052,82 +2051,83 @@ id: mentioned_by: '%{user} mentioned you in a comment' more_to_see: other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' - responsible: 'Accountable' + responsible: 'Akuntabel' mentioned: 'Mentioned' subscribed: 'semua' prefix: 'Received because of the notification setting: %{reason}' - date_alert_start_date: 'Date alert' - date_alert_due_date: 'Date alert' - see_all: 'See all' - updated_at: 'Updated at %{timestamp} by %{user}' + date_alert_start_date: 'Peringatan tanggal' + date_alert_due_date: 'Peringatan tanggal' + see_all: 'Lihat semua' + updated_at: 'Diperbarui pada %{timestamp} oleh %{user}' mail_body_account_activation_request: "User (%{value}) telah terdaftar. Akun Anda menunggu persetujuan Anda:" mail_body_account_information: "Info akun Anda" mail_body_account_information_external: "Anda dapat gunakan akun %{value} untuk login." - mail_body_backup_ready: "Your requested backup is ready. You can download it here:" - mail_body_backup_token_reset_admin_info: The backup token for user '%{user}' has been reset. - mail_body_backup_token_reset_user_info: Your backup token has been reset. - mail_body_backup_token_info: The previous token is no longer valid. - mail_body_backup_waiting_period: The new token will be enabled in %{hours} hours. - mail_body_backup_token_warning: If this wasn't you, login to OpenProject immediately and reset it again. - mail_body_incoming_email_error: The email you sent to OpenProject could not be processed. - mail_body_incoming_email_error_in_reply_to: "At %{received_at} %{from_email} wrote" - mail_body_incoming_email_error_logs: "Logs" + mail_body_backup_ready: "Cadangan yang Anda minta sudah siap. Anda dapat mengunduhnya di sini:" + mail_body_backup_token_reset_admin_info: Token cadangan untuk pengguna '%{user}' telah disetel ulang. + mail_body_backup_token_reset_user_info: Token cadangan Anda telah disetel ulang. + mail_body_backup_token_info: Token sebelumnya tidak lagi valid. + mail_body_backup_waiting_period: Token baru akan diaktifkan dalam %{hours} jam. + mail_body_backup_token_warning: Jika ini bukan Anda, segera masuk ke OpenProject dan reset lagi. + mail_body_incoming_email_error: Email yang Anda kirim ke OpenProject tidak dapat diproses. + mail_body_incoming_email_error_in_reply_to: "Di %{received_at} %{from_email} menulis" + mail_body_incoming_email_error_logs: "Log" mail_body_lost_password: "Untuk mengubah password, klik link berikut :" - mail_body_register: "Welcome to %{app_title}. Please activate your account by clicking on this link:" - mail_body_register_header_title: "Project member invitation email" - mail_body_register_user: "Dear %{name}, " + mail_body_register: "Selamat datang di %{app_title}. Silakan aktifkan akun Anda dengan mengklik tautan ini:" + mail_body_register_header_title: "Email undangan anggota proyek" + mail_body_register_user: "%{name} yang terhormat," mail_body_register_links_html: | - Please feel free to browse our youtube channel (%{youtube_link}) where we provide a webinar (%{webinar_link}) - and “Get started” videos (%{get_started_link}) to make your first steps in OpenProject as easy as possible. + Silakan menelusuri saluran youtube kami (%{youtube_link}) tempat kami menyediakan webinar (%{webinar_link}) + dan video “Memulai” (%{get_started_link}) untuk membuat langkah pertama Anda di OpenProject semudah mungkin.
- If you have any further questions, consult our documentation (%{documentation_link}) or contact your administrator. - mail_body_register_closing: "Your OpenProject team" - mail_body_register_ending: "Stay connected! Kind regards," + Jika Anda memiliki pertanyaan lebih lanjut, lihat dokumentasi kami (%{documentation_link}) atau hubungi administrator Anda. + mail_body_register_closing: "Tim OpenProject Anda" + mail_body_register_ending: "Tetap terhubung! Salam Hormat," mail_body_reminder: "%{count} Paket-Penugasan yang dilimpahkan kepada Anda akan berakhir dalam %{days} hari :" - mail_body_group_reminder: "%{count} work package(s) that are assigned to group \"%{group}\" are due in the next %{days} days:" + mail_body_group_reminder: "%{count} paket pekerjaan yang ditugaskan ke grup \"%{group}\" akan jatuh tempo dalam %{days} hari ke depan:" mail_body_wiki_content_added: "Halaman Wiki '%{id}' telah ditambahkan oleh %{author}." mail_body_wiki_content_updated: "Halaman Wiki '%{id}' telah diupdate oleh %{author}." mail_subject_account_activation_request: "Permintaan aktivasi akun %{value}" - mail_subject_backup_ready: "Your backup is ready" - mail_subject_backup_token_reset: "Backup token reset" - mail_subject_incoming_email_error: "An email you sent to OpenProject could not be processed" + mail_subject_backup_ready: "Cadangan Anda sudah siap" + mail_subject_backup_token_reset: "Atur ulang token cadangan" + mail_subject_incoming_email_error: "Email yang Anda kirim ke OpenProject tidak dapat diproses" mail_subject_lost_password: "Password Anda %{value}" mail_subject_register: "Kode aktivasi Akun Anda %{value}" mail_subject_wiki_content_added: "Halaman Wiki '%{id}' telah ditambahkan" mail_subject_wiki_content_updated: "Halaman Wiki '%{id}' telah diupdate" mail_member_added_project: - subject: "%{project} - You have been added as a member" + subject: "%{project} - Anda telah ditambahkan sebagai anggota" body: added_by: - without_message: "%{user} added you as a member to the project '%{project}'." - with_message: "%{user} added you as a member to the project '%{project}' writing:" - roles: "You have the following roles:" + without_message: "%{user} menambahkan Anda sebagai anggota proyek '%{project}'." + with_message: "%{user} menambahkan Anda sebagai anggota proyek '%{project}' dengan tulisan:" + roles: "Anda memiliki peran berikut:" mail_member_updated_project: - subject: "%{project} - Your roles have been updated" + subject: "%{project} - Peran Anda telah diperbarui" body: updated_by: - without_message: "%{user} updated the roles you have in the project '%{project}'." - with_message: "%{user} updated the roles you have in the project '%{project}' writing:" - roles: "You now have the following roles:" + without_message: "%{user} memperbarui peran yang Anda miliki dalam proyek '%{project}'." + with_message: "%{user} memperbarui peran yang Anda miliki dalam penulisan proyek '%{project}':" + roles: "Anda sekarang memiliki peran berikut:" mail_member_updated_global: - subject: "Your global permissions have been updated" + subject: "Izin global Anda telah diperbarui" body: updated_by: - without_message: "%{user} updated the roles you have globally." - with_message: "%{user} updated the roles you have globally writing:" - roles: "You now have the following roles:" + without_message: "%{user} memperbarui peran yang Anda miliki secara global." + with_message: "%{user} memperbarui peran yang Anda tulis secara global:" + roles: "Anda sekarang memiliki peran berikut:" mail_user_activation_limit_reached: - subject: User activation limit reached + subject: Batas aktivasi pengguna tercapai 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. + Pengguna baru (%{email}) mencoba membuat akun di lingkungan OpenProject yang Anda kelola (%{host}). + Pengguna tidak dapat mengaktifkan akun mereka karena batas pengguna telah tercapai. steps: - label: "To allow the user to sign in you can either: " - a: "Upgrade your payment plan ([here](upgrade_url))" #here turned into a link - b: "Lock or delete an existing user ([here](users_url))" #here turned into a link + label: "Untuk mengizinkan pengguna masuk, Anda dapat:" + a: "Tingkatkan paket pembayaran Anda ([here](upgrade_url))" #here turned into a link + b: "Kunci atau hapus pengguna yang ada ([here](users_url))" #here turned into a link more_actions: "Fungsi lainnya" noscript_description: "Aktifkan JavaScript di browser Anda untuk menjalankan Software ini!" noscript_heading: "JavaScript dinonaktifkan" @@ -2147,7 +2147,7 @@ id: notice_account_unknown_email: "User tak diketahui." notice_account_update_failed: "Account setting could not be saved. Please have a look at your account page." notice_account_updated: "Akun berhasil diperbarui." - notice_account_other_session_expired: "All other sessions tied to your account have been invalidated." + notice_account_other_session_expired: "Semua sesi lain yang terkait dengan akun Anda telah dibatalkan." notice_account_wrong_password: "Password salah" notice_account_registered_and_logged_in: "Selamat datang, akun Anda telah diaktifkan. Anda sudah login sekarang." notice_activation_failed: The account could not be activated. @@ -2160,7 +2160,7 @@ id: notice_email_sent: "Email telah dikirim ke %{value}" notice_failed_to_save_work_packages: "Gagal menyimpan %{count} Paket-Penugasan untuk %{total} yang terpilih: %{ids}." notice_failed_to_save_members: "Gagal menyimpan member : %{errors}." - notice_deletion_scheduled: "The deletion has been scheduled and is performed asynchronously." + notice_deletion_scheduled: "Penghapusan telah dijadwalkan dan dilakukan secara asinkron." notice_file_not_found: "Halaman yang Anda akses sudah dihapus atau dipindahkan." notice_forced_logout: "Anda secara otomatis telah Logout setelah %{ttl_time} menit tanpa aktivitas." notice_internal_server_error: "Error pada halaman yang Anda akses. Jika Anda tetap mengalami masalah hubungi administrator %{app_title} untuk bantuan." @@ -2185,11 +2185,9 @@ id: notice_successful_delete: "Berhasil dihapus." notice_successful_update: "Berhasil diperbarui." notice_successful_update_custom_fields_added_to_project: | - Successful update. The custom fields of the activated types are automatically activated - on the work package form. See more. + Pembaruan berhasil. Bidang kustom dari jenis yang diaktifkan secara otomatis diaktifkan pada formulir paket pekerjaan. Lihat selengkapnya. notice_successful_update_custom_fields_added_to_type: | - Successful update. The active custom fields are automatically activated for - the associated projects of this type. + Pembaruan berhasil. Bidang kustom aktif secara otomatis diaktifkan untuk proyek terkait jenis ini. notice_to_many_principals_to_display: "Ada terlalu banyak hasil. Persempit pencarian dengan mengetik nama member baru (atau grup)." notice_user_missing_authentication_method: User has yet to choose a password or another way to sign in. notice_user_invitation_resent: Sebuah undangan telah dikirim ke %{email}. @@ -2221,25 +2219,25 @@ id: tb: "TB" onboarding: heading_getting_started: "Mendapatkan gambaran" - text_getting_started_description: "Get a quick overview of project management and team collaboration with OpenProject. You can restart this video from the help menu." - welcome: "Welcome to %{app_title}" - select_language: "Please select your language" + text_getting_started_description: "Dapatkan ikhtisar singkat manajemen proyek dan kolaborasi tim dengan OpenProject. Anda dapat memulai ulang video ini dari menu bantuan." + welcome: "Selamat datang di %{app_title}" + select_language: "Silakan pilih bahasa Anda" permission_add_work_package_notes: "Tambahkan catatan" permission_add_work_packages: "Tambah Paket-Penugasan" permission_add_messages: "Kirim pesan" permission_add_project: "Buat Project" permission_archive_project: "Proyek arsip" - permission_manage_user: "Create and edit users" + permission_manage_user: "Buat dan ubah pengguna" permission_manage_placeholder_user: "Buat, ubah, dan hapus pengguna placeholder" permission_add_subprojects: "Buat Sub Project" permission_add_work_package_watchers: "Tambah pemantau" - permission_assign_versions: "Assign versions" + permission_assign_versions: "Tetapkan versi" permission_browse_repository: "Read-only access to repository (browse and checkout)" permission_change_wiki_parent_page: "Ubah halaman induk Wiki" permission_comment_news: "Komentar berita" permission_commit_access: "Read/write access to repository (commit)" permission_copy_projects: "Copy Project" - permission_create_backup: "Create backup" + permission_create_backup: "Buat cadangan" permission_delete_work_package_watchers: "Hapus pemantau" permission_delete_work_packages: "Hapus Paket-Penugasan" permission_delete_messages: "Hapus pesan" @@ -2270,17 +2268,17 @@ id: permission_manage_members: "Kelola member" permission_manage_news: "Kelola Berita" permission_manage_project_activities: "Kelola Project Activity" - permission_manage_public_queries: "Manage public views" + permission_manage_public_queries: "Kelola tampilan publik" permission_manage_repository: "Kelola repositori" - permission_manage_subtasks: "Manage work package hierarchies" + permission_manage_subtasks: "Kelola hierarki paket kerja" permission_manage_versions: "Kelola Versi" permission_manage_wiki: "Kelola Wiki" permission_manage_wiki_menu: "Kelola menu Wiki" permission_move_work_packages: "Pindahkan Paket-Penugasan" permission_protect_wiki_pages: "Proteksi halaman Wiki" permission_rename_wiki_pages: "Rename halaman Wiki" - permission_save_queries: "Save views" - permission_select_custom_fields: "Select custom fields" + permission_save_queries: "Simpan tampilan" + permission_select_custom_fields: "Pilih bidang khusus" permission_select_project_modules: "Pilih modul Project" permission_manage_types: "Pilih Tipe" permission_view_changesets: "View repository revisions in OpenProject" @@ -2294,7 +2292,7 @@ id: permission_view_timelines: "Lihat Timeline" permission_view_wiki_edits: "Lihat Wiki histori" permission_view_wiki_pages: "Lihat Wiki" - permission_work_package_assigned: "Become assignee/responsible" + permission_work_package_assigned: "Menjadi penerima tugas/penanggung jawab" permission_work_package_assigned_explanation: "Paket kerja dapat ditetapkan untuk pengguna-pengguna tunggal dan kelompok-kelompok yang memiliki peran dalam proyek masing-masing" placeholders: default: "Hapus nilai" @@ -2311,13 +2309,13 @@ id: title: Change the project's identifier template: copying: > - Your project is being created from the selected template project. You will be notified by mail as soon as the project is available. - use_template: 'Use template' - make_template: 'Set as template' - remove_from_templates: 'Remove from templates' + Proyek Anda sedang dibuat dari proyek template yang dipilih. Anda akan diberi tahu melalui surat segera setelah proyek tersedia. + use_template: 'Gunakan templat' + make_template: 'Tetapkan sebagai templat' + remove_from_templates: 'Hapus dari template' archive: are_you_sure: "Are you sure you want to archive the project '%{name}'?" - archived: "Archived" + archived: "Diarsipkan" project_module_activity: "Activity" project_module_forums: "Forum" project_module_work_package_tracking: "Tracking Paket-Penugasan" @@ -2333,8 +2331,8 @@ id: assigned_to_role: "Ditugaskan untuk Role" member_of_group: "Ditugaskan untuk Grup" assignee_or_group: "Penerima atau anggota kelompok" - subproject_id: "Including subproject" - only_subproject_id: "Only subproject" + subproject_id: "Termasuk subproyek" + only_subproject_id: "Hanya subproyek" name_or_identifier: "Nama atau pengenal" repositories: at_identifier: 'at %{identifier}' @@ -2419,10 +2417,10 @@ id: storage: not_available: "Storage tidak tersedia untuk repository ini." update_timeout: "Pertahankan informasi kebutuhan disk repository selama N menit. Semakin besar nilai N akan mengurangi beban komputasi." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" - oauth_application_details_link_text: "Go to settings page" - setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " - setup_documentation_details_link_text: "File Storages setup" + oauth_application_details: "Nilai rahasia klien tidak akan dapat diakses lagi setelah Anda menutup jendela ini. Harap salin nilai-nilai ini ke pengaturan Nextcloud OpenProject Integration:" + oauth_application_details_link_text: "Buka halaman pengaturan" + setup_documentation_details: "Jika Anda memerlukan bantuan untuk mengonfigurasi penyimpanan file baru, harap periksa dokumentasinya:" + setup_documentation_details_link_text: "Pengaturan Penyimpanan File" show_warning_details: "To use this file storage remember to activate the module and the specific storage in the project settings of each desired project." subversion: existing_title: "Repository Subversion yang sudah ada" @@ -2438,26 +2436,26 @@ id: username: "Username Repository" truncated: "Maaf, kami harus menyingkat direktori ini ke file %{limit}. Isian %{truncated} dihilangkan dari daftar." named_repository: "%{vendor_name} repository" - update_settings_successful: "The settings have been successfully saved." + update_settings_successful: "Pengaturan telah berhasil disimpan." url: "URL repositori" warnings: cannot_annotate: "This file cannot be annotated." scheduling: - activated: 'activated' - deactivated: 'deactivated' + activated: 'diaktifkan' + deactivated: 'dinonaktifkan' search_input_placeholder: "Mencari ..." - setting_apiv3_cors_enabled: "Enable CORS" - setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" + setting_apiv3_cors_enabled: "Aktifkan CORS" + setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) memungkinkan asal" setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. - setting_apiv3_max_page_size: "Maximum API page size" + Jika CORS diaktifkan, ini adalah asal yang diizinkan untuk mengakses OpenProject API.
Harap periksa Dokumentasi pada header Asal tentang cara menentukan nilai yang diharapkan. + setting_apiv3_max_page_size: "Ukuran halaman API maksimum" setting_apiv3_max_page_instructions_html: > - Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page.
Warning: Please only change this value if you are sure why you need it. Setting to a high value will result in significant performance impacts, while a value lower than the per page options will cause errors in paginated views. + Tetapkan ukuran halaman maksimum yang akan ditanggapi oleh API. Tidak mungkin melakukan permintaan API yang mengembalikan lebih banyak nilai pada satu halaman.
Peringatan: Ubah nilai ini hanya jika Anda yakin mengapa Anda membutuhkannya. Menyetel ke nilai tinggi akan menghasilkan dampak kinerja yang signifikan, sedangkan nilai yang lebih rendah dari opsi per halaman akan menyebabkan kesalahan dalam tampilan paginasi. setting_apiv3_docs: "Dokumentasi" - setting_apiv3_docs_enabled: "Enable docs page" + setting_apiv3_docs_enabled: "Aktifkan halaman dokumen" setting_apiv3_docs_enabled_instructions_html: > - If the docs page is enabled you can get an interactive view of the APIv3 documentation under %{link}. - setting_attachment_whitelist: "Attachment upload whitelist" + Jika laman dokumen diaktifkan, Anda bisa mendapatkan tampilan interaktif dokumentasi APIv3 di bawah %{link}. + setting_attachment_whitelist: "Daftar putih upload lampiran" 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" @@ -2685,7 +2683,7 @@ id: text_no_notes: "There are no comments available for this work package." text_notice_too_many_values_are_inperformant: "Catatan: Menampilkan lebih dari 100 item per halaman dapat meningkatkan delay waktu membuka halaman." 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. + Catatan: jika diaktifkan, ini akan menampilkan lencana dengan status pemasangan Anda di panel administrasi %{information_panel_label}, dan di beranda. Ini hanya ditampilkan kepada administrator.
Lencana akan memeriksa versi OpenProject Anda saat ini dengan database rilis OpenProject resmi untuk memberi tahu Anda tentang pembaruan atau kerentanan yang diketahui. Untuk informasi lebih lanjut tentang apa yang diberikan pemeriksaan, data apa yang diperlukan untuk menyediakan pembaruan yang tersedia, dan cara menonaktifkan pemeriksaan ini, silakan kunjungi dokumentasi konfigurasi. text_own_membership_delete_confirmation: "Anda akan menghapus hak akses Anda dan mungkin Anda tidak dapat lagi mengedit Project ini. Apakah Anda yakin Anda ingin melanjutkan?" text_plugin_assets_writable: "Plugin aset direktori, bisa ditulisi" text_powered_by: "Didukung oleh %{link}" @@ -2705,7 +2703,7 @@ id: text_user_invited: The user has been invited and is pending registration. text_user_wrote: "%{value} wrote:" text_warn_on_leaving_unsaved: "Paket kerja berisi teks yang belum disimpan yang akan hilang jika Anda meninggalkan halaman ini." - text_what_did_you_change_click_to_add_comment: "What did you change? Click to add comment" + text_what_did_you_change_click_to_add_comment: "Apa yang Anda ubah? Klik untuk menambahkan komentar" text_wiki_destroy_confirmation: "Are you sure you want to delete this wiki and all its content?" text_wiki_page_destroy_children: "Hapus sub-halaman dan semua turunannya" text_wiki_page_destroy_question: "Halaman ini memiliki %{descendants} sub-halaman dan turunannya. Apa yang ingin Anda lakukan?" @@ -2806,7 +2804,7 @@ id: noneSelection: "(kosong)" outline: "Outline inisial untuk ekspansi" parent: "Tampilkan Sub-Project dari" - work_package_responsible: "Show work packages with accountable" + work_package_responsible: "Tunjukkan paket pekerjaan dengan akuntabel" work_package_assignee: "Tunjukkan Paket-Penugasan beserta pelimpahannya" types: "Tunjukka Tipe" status: "Tunjukkan status" @@ -2817,7 +2815,7 @@ id: project_time_filter_historical: "%{start_label} %{startdate} %{end_label} %{enddate}" project_time_filter_relative: "%{start_label} %{startspan}%{startspanunit} ago, %{end_label} %{endspan}%{endspanunit} dari sekarang" project_filters: "Filter Project" - project_responsible: "Show projects with accountable" + project_responsible: "Tunjukkan proyek dengan akuntabel" project_status: "Tampilkan status Project" timeframe: "Tampilkan Timeframe" timeframe_end: "untuk" @@ -2874,14 +2872,14 @@ id: quarters: "Kuartal" years: "Tahun" title_remove_and_delete_user: Remove the invited user from the project and delete him/her. - title_enterprise_upgrade: "Upgrade to unlock more users." + title_enterprise_upgrade: "Tingkatkan untuk membuka lebih banyak pengguna." tooltip_user_default_timezone: > - The default time zone for new users. Can be changed in a user's settings. + Zona waktu default untuk pengguna baru. Dapat diubah dalam pengaturan pengguna. tooltip_resend_invitation: > Kirim email undangan lain dengan token yang baru dalam hal yang lama kadaluwarsa atau pengguna tidak mendapat email yang asli. Dapat juga digunakan oleh pengguna aktif untuk memilih metode otentikasi baru. Ketika digunakan bersama pengguna aktif, status mereka akan berganti menjadi 'diundang'. tooltip: setting_email_login: > - If enabled a user will be unable to chose a login during registration. Instead their given email address will serve as the login. An administrator may still change the login separately. + Jika diaktifkan, pengguna tidak akan dapat memilih login saat pendaftaran. Sebaliknya alamat email yang diberikan akan berfungsi sebagai login. Administrator masih dapat mengubah login secara terpisah. queries: apply_filter: Terapkan Filter yang telah dikonfigurasikan top_menu: @@ -2915,7 +2913,7 @@ id: reset_failed_logins: "Reset gagal login" status_user_and_brute_force: "%{user} dan %{brute_force}" status_change: "Perubahan status" - text_change_disabled_for_provider_login: "The name is set by your login provider and can thus not be changed." + text_change_disabled_for_provider_login: "Nama ditetapkan oleh penyedia login Anda dan karenanya tidak dapat diubah." unlock: "Unlock" unlock_and_reset_failed_logins: "Unlock dan reset gagal login" version_status_closed: "berakhir" @@ -2926,12 +2924,12 @@ id: warning: Warning warning_attachments_not_saved: "%{count} file tidak akan disimpan." 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. + Anda mengundang lebih banyak pengguna daripada yang didukung oleh paket Anda saat ini. Pengguna yang diundang mungkin tidak dapat bergabung dengan lingkungan OpenProject Anda. Harap tingkatkan versi paket Anda atau blokir pengguna yang ada agar pengguna yang diundang dan terdaftar dapat bergabung. 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. + Email aktivasi telah kedaluwarsa. Kami mengirimkan Anda yang baru ke %{email}. + Silakan klik tautan di dalamnya untuk mengaktifkan akun Anda. 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. + Batas pengguna tercapai. Anda tidak dapat mengaktifkan pengguna lagi. Harap tingkatkan versi paket Anda atau blokir anggota untuk mengizinkan pengguna tambahan. 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_protocol_mismatch_html: > @@ -2942,9 +2940,9 @@ id: text_html: > Your application is running with HTTPS mode set to %{set_protocol}, but the request is an %{actual_protocol} request. This will result in errors! You will need to set the following configuration value: %{setting_value}. Please see the installation documentation on how to set this configuration. hostname_mismatch: - title: 'Hostname setting mismatch' + title: 'Ketidakcocokan pengaturan nama host' text_html: > - Your application is running with its host name setting set to %{set_hostname}, but the request is a %{actual_hostname} hostname. This will result in errors! Go to System settings and change the "Host name" setting to correct this. + Aplikasi Anda berjalan dengan pengaturan nama hostnya disetel ke %{set_hostname}, tetapi permintaannya adalah nama host %{actual_hostname}. Ini akan menghasilkan kesalahan! Buka Setelan sistem dan ubah setelan "Nama host" untuk memperbaikinya. menu_item: "Menu item" menu_item_setting: "Visibilitas" wiki_menu_item_for: "Menu untuk Halaman Wiki \"%{title}\"" @@ -2964,36 +2962,36 @@ id: Define days considered part of the work week
Days that are not selected are skipped when scheduling work packages (and not included in the day count). These can be overriden at a work-package level. instance_wide_info: > Specific non-working days (holidays and closures)
Dates added to the list below are considered non-working and skipped when scheduling work packages. - change_button: "Change working days" + change_button: "Ubah hari kerja" warning: > - Changing which days of the week are considered working days or non-working days can affect the start and finish days of all work packages in all projects in this instance.
Please note that changes are only applied after you click on the apply changes button. + Mengubah hari mana dalam seminggu yang dianggap sebagai hari kerja atau bukan hari kerja dapat memengaruhi hari mulai dan selesai dari semua paket pekerjaan di semua proyek dalam contoh ini.
Harap perhatikan bahwa perubahan hanya diterapkan setelah Anda mengeklik tombol terapkan perubahan. journal_note: - changed: _**Working days** changed (%{changes})._ + changed: _**Hari kerja** berubah (%{changes})._ days: - working: "%{day} is now working" - non_working: "%{day} is now non-working" + working: "%{day} sekarang bekerja" + non_working: "%{day} sekarang tidak berkerja" dates: - working: "%{date} is now working" - non_working: "%{date} is now non-working" + working: "%{date} sekarang berkerja" + non_working: "%{date} sekarang tidak berkerja" nothing_to_preview: "Tidak ada pre-view" api_v3: attributes: lock_version: "Lock Version" - property: 'Property' + property: 'Properti' errors: - code_400: "Bad request: %{message}" + code_400: "Permintaan buruk: %{message}" code_401: "Anda perlu dikonfirmasi untuk mengakses sumber ini." code_401_wrong_credentials: "You did not provide the correct credentials." code_403: "Anda tidak diizinkan untuk mengakses sumber ini." code_404: "The requested resource could not be found." - code_409: "Could not update the resource because of conflicting modifications." - code_429: "Too many requests. Please try again later." + code_409: "Tidak dapat memperbarui sumber daya karena modifikasi yang bertentangan." + code_429: "Terlalu banyak permintaan. Coba lagi nanti." code_500: "An internal error has occurred." not_found: - work_package: "The work package you are looking for cannot be found or has been deleted." + work_package: "Paket pekerjaan yang Anda cari tidak dapat ditemukan atau telah dihapus." expected: date: "YYYY-MM-DD (ISO 8601 date only)" - datetime: "YYYY-MM-DDThh:mm:ss[.lll][+hh:mm] (any compatible ISO 8601 datetime)" + datetime: "YYYY-MM-DDThh:mm:ss[.lll][+hh:mm] (setiap waktu ISO 8601 yang kompatibel)" duration: "ISO 8601 duration" invalid_content_type: "Diharapkan CONTENT-TYPE untuk menjadi '%{content_type}' tetapi mendapat '%{actual}'." invalid_format: "Invalid format for property '%{property}': Expected format like '%{expected_format}', but got '%{actual}'." @@ -3005,49 +3003,49 @@ id: select: "Permintaan terpilih %{invalid} tidak mendukung. Dukungan yang dipilih adalah %{supported}." invalid_user_status_transition: "The current user account status does not allow this operation." missing_content_type: "not specified" - missing_property: "Missing property '%{property}'." + missing_property: "Properti '%{property}' tidak ada." missing_request_body: "There was no request body." missing_or_malformed_parameter: "Parameter query '%{parameter}' hilang atau salah bentuk." 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: "Unduhan tidak bisa dibuat" - unable_to_create_attachment_permissions: "The attachment could not be saved due to lacking file system permissions" + unable_to_create_attachment_permissions: "Lampiran tidak dapat disimpan karena kurangnya izin sistem file" 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." + due_date: "Tanggal selesai tidak dapat diatur pada paket pekerjaan induk." estimated_hours: "Estimated hours cannot be set on parent work packages." invalid_user_assigned_to_work_package: "Pilihan pengguna tidak diperbolehkan untuk menjadi '%{property}' untuk paket pekerjaan ini." start_date: "Start date cannot be set on parent work packages." eprops: - invalid_gzip: "is invalid gzip: %{message}" - invalid_json: "is invalid json: %{message}" + invalid_gzip: "gzip tidak valid: %{message}" + invalid_json: "json tidak valid: %{message}" resources: schema: 'Schema' undisclosed: - parent: Undisclosed - The selected parent is invisible because of lacking permissions. - ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. + parent: Dirahasiakan - Induk yang dipilih tidak terlihat karena tidak memiliki izin. + ancestor: Dirahasiakan - Leluhur tidak terlihat karena tidak memiliki izin. doorkeeper: pre_authorization: - status: 'Pre-authorization' - auth_url: 'Auth URL' - access_token_url: 'Access token URL' + status: 'Pra-otorisasi' + auth_url: 'URL Autentikasi' + access_token_url: 'Akses URL token' errors: messages: #Common error messages invalid_request: - unknown: 'The request is missing a required parameter, includes an unsupported parameter value, or is otherwise malformed.' - missing_param: 'Missing required parameter: %{value}.' - request_not_authorized: 'Request need to be authorized. Required parameter for authorizing request is missing or invalid.' - 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.' + unknown: 'Permintaan tidak memiliki parameter wajib, menyertakan nilai parameter yang tidak didukung, atau formatnya salah.' + missing_param: 'Parameter yang diperlukan tidak ada: %{value}.' + request_not_authorized: 'Permintaan harus diotorisasi. Parameter yang diperlukan untuk permintaan otorisasi tidak ada atau tidak valid.' + invalid_redirect_uri: "Bentuk uri pengalihan yang diminta salah atau tidak cocok dengan URI pengalihan klien." + unauthorized_client: 'Klien tidak berwenang untuk melakukan permintaan ini menggunakan metode ini.' + access_denied: 'Pemilik sumber daya atau server otorisasi menolak permintaan tersebut.' + invalid_scope: 'Cakupan yang diminta tidak valid, tidak diketahui, atau formatnya salah.' + invalid_code_challenge_method: 'Metode tantangan kode harus polos atau S256.' + server_error: 'Server otorisasi mengalami kondisi tak terduga yang mencegahnya memenuhi permintaan.' temporarily_unavailable: 'The authorization server is currently unable to handle the request due to a temporary overloading or maintenance of the server.' #Configuration error messages credential_flow_not_configured: 'Resource Owner Password Credentials flow failed due to Doorkeeper.configure.resource_owner_from_credentials being unconfigured.' @@ -3075,7 +3073,7 @@ id: close_warning: "Abaikan peringatan ini." oauth: application: - singular: "OAuth application" + singular: "aplikasi OAuth" plural: "OAuth applications" named: "OAuth application '%{name}'" new: "New OAuth application" @@ -3126,45 +3124,45 @@ id: error: "Eror" failed_authorization: "Authorization failed" labels: - label_oauth_integration: "OAuth2 integration" - label_redirect_uri: "Redirect URI" - label_request_token: "Request token" - label_refresh_token: "Refresh token" + label_oauth_integration: "Integrasi OAuth2" + label_redirect_uri: "Alihkan URI" + label_request_token: "Minta token" + label_refresh_token: "Segarkan token" errors: - oauth_authorization_code_grant_had_errors: "OAuth2 returned an error" - oauth_reported: "OAuth2 provider reported" - oauth_returned_error: "OAuth2 returned an error" - oauth_returned_json_error: "OAuth2 returned a JSON error" - oauth_returned_http_error: "OAuth2 returned a network error" - oauth_returned_standard_error: "OAuth2 returned an internal error" - wrong_token_type_returned: "OAuth2 returned a wrong type of token, expecting AccessToken::Bearer" - oauth_issue_contact_admin: "OAuth2 reported an error. Please contact your system administrator." - oauth_client_not_found: "OAuth2 client not found in 'callback' endpoint (redirect_uri)." + oauth_authorization_code_grant_had_errors: "OAuth2 mengembalikan kesalahan" + oauth_reported: "Penyedia OAuth2 dilaporkan" + oauth_returned_error: "OAuth2 mengembalikan kesalahan" + oauth_returned_json_error: "OAuth2 mengembalikan kesalahan JSON" + oauth_returned_http_error: "OAuth2 mengembalikan kesalahan jaringan" + oauth_returned_standard_error: "OAuth2 mengembalikan kesalahan internal" + wrong_token_type_returned: "OAuth2 mengembalikan jenis token yang salah, mengharapkan AccessToken::Bearer" + oauth_issue_contact_admin: "OAuth2 melaporkan kesalahan. Silakan hubungi administrator sistem Anda." + oauth_client_not_found: "Klien OAuth2 tidak ditemukan di titik akhir 'panggilan balik' (redirect_uri)." refresh_token_called_without_existing_token: > - Internal error: Called refresh_token without a previously existing token. - refresh_token_updated_failed: "Error during update of OAuthClientToken" + Kesalahan internal: Disebut refresh_token tanpa token yang sudah ada sebelumnya. + refresh_token_updated_failed: "Kesalahan selama pembaruan OAuthClientToken" oauth_client_not_found_explanation: > - This error appears after you have updated the client_id and client_secret in OpenProject, but haven't updated the 'Return URI' field in the OAuth2 provider. - oauth_code_not_present: "OAuth2 'code' not found in 'callback' endpoint (redirect_uri)." + Error ini muncul setelah Anda mengupdate client_id dan client_secret di OpenProject, tetapi belum mengupdate kolom 'Return URI' di penyedia OAuth2. + oauth_code_not_present: "'Kode' OAuth2 tidak ditemukan di titik akhir 'panggilan balik' (redirect_uri)." oauth_code_not_present_explanation: > - This error appears if you have selected the wrong response_type in the OAuth2 provider. Response_type should be 'code' or similar. - oauth_state_not_present: "OAuth2 'state' not found in 'callback' endpoint (redirect_uri)." + Error ini muncul jika Anda memilih response_type yang salah di penyedia OAuth2. Response_type harus berupa 'kode' atau serupa. + oauth_state_not_present: "OAuth2 'status' tidak ditemukan di titik akhir 'panggilan balik' (redirect_uri)." oauth_state_not_present_explanation: > - The 'state' is used to indicate to OpenProject where to continue after a successful OAuth2 authorization. A missing 'state' is an internal error that may appear during setup. Please contact your system administrator. + 'State' digunakan untuk menunjukkan OpenProject ke mana harus melanjutkan setelah otorisasi OAuth2 berhasil. 'State' yang hilang adalah kesalahan internal yang mungkin muncul selama penyiapan. Silakan hubungi administrator sistem Anda. rack_oauth2: - client_secret_invalid: "Client secret is invalid (client_secret_invalid)" + client_secret_invalid: "Rahasia klien tidak valid (client_secret_invalid)" invalid_request: > - OAuth2 Authorization Server responded with 'invalid_request'. This error appears if you try to authorize multiple times or in case of technical issues. - invalid_response: "OAuth2 Authorization Server provided an invalid response (invalid_response)" - invalid_grant: "The OAuth2 Authorization Server asks you to reauthorize (invalid_grant)." - invalid_client: "The OAuth2 Authorization Server doesn't recognize OpenProject (invalid_client)." - unauthorized_client: "The OAuth2 Authorization Server rejects the grant type (unauthorized_client)" - unsupported_grant_type: "The OAuth2 Authorization Server asks you to reauthorize (unsupported_grant_type)." - invalid_scope: "You are not allowed to access the requested resource (invalid_scope)." + Server Otorisasi OAuth2 merespons dengan 'invalid_request'. Kesalahan ini muncul jika Anda mencoba mengotorisasi beberapa kali atau jika terjadi masalah teknis. + invalid_response: "Server Otorisasi OAuth2 memberikan respons yang tidak valid (invalid_response)" + invalid_grant: "Server Otorisasi OAuth2 meminta Anda untuk mengotorisasi ulang (invalid_grant)." + invalid_client: "Server Otorisasi OAuth2 tidak mengenali OpenProject (invalid_client)." + unauthorized_client: "Server Otorisasi OAuth2 menolak jenis hibah (unauthorized_client)" + unsupported_grant_type: "Server Otorisasi OAuth2 meminta Anda untuk mengotorisasi ulang (unsupported_grant_type)." + invalid_scope: "Anda tidak diizinkan mengakses sumber daya yang diminta (invalid_scope)." http: request: - failed_authorization: "The server side request failed authorizing itself." - missing_authorization: "The server side request failed due to missing authorization information." + failed_authorization: "Permintaan sisi server gagal mengotorisasi dirinya sendiri." + missing_authorization: "Permintaan sisi server gagal karena informasi otorisasi tidak ada." response: - unexpected: "Unexpected response received." - you: you + unexpected: "Tanggapan tak terduga diterima." + you: anda diff --git a/config/locales/crowdin/it.yml b/config/locales/crowdin/it.yml index bf10dc57e637..82416f99be69 100644 --- a/config/locales/crowdin/it.yml +++ b/config/locales/crowdin/it.yml @@ -2073,6 +2073,7 @@ it: more_to_see: one: 'C''è un altro pacchetto di lavoro con le notifiche.' other: 'Ci sono altri %{count} pacchetti di lavoro con notifiche.' + open_in_browser: 'Open in browser' reason: watched: 'Visto' assigned: 'Assegnato' diff --git a/config/locales/crowdin/ja.yml b/config/locales/crowdin/ja.yml index 60ed48f6ea48..689f97796c4f 100644 --- a/config/locales/crowdin/ja.yml +++ b/config/locales/crowdin/ja.yml @@ -2054,6 +2054,7 @@ ja: mentioned_by: '%{user} mentioned you in a comment' more_to_see: other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/js-ca.yml b/config/locales/crowdin/js-ca.yml index 14d7ad5bcfb5..2f29dd2f8e8a 100644 --- a/config/locales/crowdin/js-ca.yml +++ b/config/locales/crowdin/js-ca.yml @@ -228,7 +228,7 @@ ca: quick_overview: "Obté una visió general ràpida de la gestió de projectes i col·laboració d'equips amb l'edició Enterprise d'OpenProject." upsale: become_hero: "Sigues un heroi!" - enterprise_info_html: "%{feature_title} és un add-on de l'edició Enterprise ." + enterprise_info_html: "%{feature_title} és una extensió de l'edició Enterprise ." upgrade_info: "Si us plau, actualitza a una versió de pagament per tal d'activar i començar a utilitzar-la en el teu equip." benefits: description: "Quins són els beneficis de l'edició Enterprise on-premises?" @@ -236,7 +236,7 @@ ca: high_security_text: "Inici de sessió únic (SAML, OpenID Conenct, CAS), grups LDAP." installation: "Suport d'instal·lació" installation_text: "Enginyers de programari amb experiència et guien durant tot el procés d'instal·lació i configuració de la teva pròpia estructura." - premium_features: "Enterprise add-ons" + premium_features: "Extensions Enterprise" premium_features_text: "Taulells \"agile\", tema personalitzat i logotip, gràfiques, fluxos de treball amb accions personalitzades, cerca de text completa per a fitxers adjunt en paquets de treball i la selecció múltiple de camps personalitzats." professional_support: "Suport professional" professional_support_text: "Obté un suport de confiança i d'alt nivell dels nostres enginyers de suport sèniors amb experiència en manegar OpenProject en ambients empresarials crítics." @@ -249,7 +249,7 @@ ca: link_quote: "Obtenir un pressupost" more_info: "Més informació" text: > - L'edició Enterprise d'OpenProject es construeix a sobre de l'edició Community. Inclou Enterprise add-ons i suport professional pensat especialment per a organitzacions de més de 10 usuaris que manegin projectes empresarialment crítics amb OpenProject. + L'edició Enterprise d'OpenProject es construeix a sobre de l'edició Community. Inclou extensions Enterprise i suport professional pensat especialment per a organitzacions de més de 10 usuaris que manegin projectes empresarialment crítics amb OpenProject. unlimited: "Il·limitat" you_contribute: "Els desenvolupadors també han de pagar les seves factures. Actualitzant a l'edició Enterprise, donaràs suport aquesta comunitat de codi obert i contribuiràs al seu desenvolupament, manteniment i millora continua." working_days: @@ -328,7 +328,7 @@ ca: label_add_row_before: "Afegir una fila abans" label_add_selected_columns: "Afegir columnes seleccionades" label_added_by: "afegit per" - label_added_time_by: "Added by %{author} at %{age}" + label_added_time_by: "Afegit per %{author} el %{age}" label_ago: "dies abans" label_all: "tot" label_all_work_packages: "tots els paquets de treball" @@ -667,7 +667,7 @@ ca: Si us plau, selecciona un projecte on crear el paquet de treball per a veure tots els atributs. Només pots seleccionar projectes que tinguin activat la classe indicada anteriorment. details_activity: 'Detalls de l''activitat del projecte' context: 'Context del projecte' - click_to_switch_to_project: 'Project: %{projectname}' + click_to_switch_to_project: 'Projecte: %{projectname}' confirm_template_load: 'Canviar la plantilla tornarà a carregar la pàgina i perdràs totes les dades del formulari. Continuar?' use_template: "Utilitzar plantilla" no_template_selected: "(Cap)" @@ -863,7 +863,7 @@ ca: zooms: "Nivell de zoom" outlines: "Nivell de jerarquia" upsale: - ee_only: 'Add-on de l''edició Enterprise' + ee_only: 'Extensió de l''edició Enterprise' wiki_formatting: strong: "Negreta" italic: "Cursiva" @@ -1197,7 +1197,7 @@ ca: description: 'Permisos basats en el rol assignat en el projecte seleccionat' placeholder: title: 'Usuari de marcador de posició' - title_no_ee: 'Usuari de marcador de posició (add-on només de l''edició Enterprise)' + title_no_ee: 'Usuari de marcador de posició (extensió només de l''edició Enterprise)' description: 'No té accés al projecte i no s''han enviat els correus electrònics.' description_no_ee: 'No tens accés al projecte i per tant, no s''han enviat els correus electrònics.
Fes una ullada a l''edició Enterprise' principal: diff --git a/config/locales/crowdin/js-cs.yml b/config/locales/crowdin/js-cs.yml index d416731e22f2..2d1a91924dd7 100644 --- a/config/locales/crowdin/js-cs.yml +++ b/config/locales/crowdin/js-cs.yml @@ -225,7 +225,7 @@ cs: status_confirmed: "potvrzeno" status_waiting: "e-mail odeslán - čeká na potvrzení" test_ee: "Vyzkoušejte Enterprise Edition 14 dní zdarma" - quick_overview: "Get a quick overview of project management and team collaboration with OpenProject Enterprise edition." + quick_overview: "Získejte rychlý přehled o řízení projektu a týmové spolupráci s OpenProject Enterprise edion." upsale: become_hero: "Staň se hrdinou!" enterprise_info_html: "%{feature_title} is an Enterprise add-on." @@ -314,9 +314,9 @@ cs: #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. '12_5': standard: - learn_about_link: https://www.openproject.org/blog/openproject-12-5-release + learn_about_link: https://www.openproject.org/blog/openproject-12-0-release new_features_html: > - The release contains various new features and improvements:
+ Vydání obsahuje různé nové funkce a vylepšení:
label_activate: "Aktivovat" label_assignee: 'Řešitel' label_add_column_after: "Přidat sloupec za" @@ -328,7 +328,7 @@ cs: label_add_row_before: "Přidat řádek před" label_add_selected_columns: "Přidat vybrané sloupce" label_added_by: "přidal" - label_added_time_by: "Added by %{author} at %{age}" + label_added_time_by: "Přidal %{author} v %{age}" label_ago: "dnů před" label_all: "vše" label_all_work_packages: "všechny pracovní balíčky" @@ -483,8 +483,8 @@ cs: label_custom_queries: "Soukromé" label_columns: "Sloupce" label_attachments: Přílohy - label_drop_files: "Drop files here to attach files." - label_drop_or_click_files: "Drop files here or click to attach files." + label_drop_files: "Sem přetáhněte soubory pro připojení souborů." + label_drop_or_click_files: "Sem přetáhněte soubory nebo klikněte pro připojení souborů." label_drop_folders_hint: Není možné použít složku jako přílohu. Prosím vyberte jednotlivé soubory. label_add_attachments: "Připojit soubory" label_formattable_attachment_hint: "Připojit a propojit soubory smazáním tohoto pole nebo vložením ze schránky." @@ -557,7 +557,7 @@ cs: commented: 'komentováno' processed: 'zpracováno' prioritized: 'upřednostněno' - dateAlert: 'Date alert' + dateAlert: 'Upozornění na datum' date_alerts: milestone_date: 'Datum milníku' overdue: 'Po termínu' @@ -603,7 +603,7 @@ cs: inbox: 'Inbox' mentioned: 'Zmíněné' watched: 'Sledující' - date_alert: 'Date alert' + date_alert: 'Upozornění na datum' settings: change_notification_settings: 'You can modify your notification settings to ensure you never miss an important update.' title: "Nastavení oznámení" @@ -638,12 +638,12 @@ cs: description: 'Upozornění pro všechny aktivity v pracovních balíčcích, do kterých jste zapojeni (Řešitel, odpovědný nebo sledující).' delayed: title: 'Non-participating' - description: 'Additional notifications for activities in all projects.' + description: 'Další oznámení pro činnosti ve všech projektech.' date_alerts: title: 'Date alerts' description: 'Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher).' teaser_text: 'With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline.' - overdue: When overdue + overdue: Po termínu project_specific: title: "Nastavení upozornění pro konkrétní projekt\n" description: 'These project-specific settings override default settings above.' @@ -669,7 +669,7 @@ cs: Vyberte projekt pro vytvoření pracovního balíčku, abyste viděli všechny atributy. Můžete vybrat pouze projekty, které mají výše uvedený typ aktivován. details_activity: 'Aktivita podrobností projektu' context: 'Kontext projektu' - click_to_switch_to_project: 'Project: %{projectname}' + click_to_switch_to_project: 'Projekt: %{projectname}' confirm_template_load: 'Přepnutí šablony znovu načte stránku a ztratíte všechny vstupy do tohoto formuláře. Pokračovat?' use_template: "Použít šablonu" no_template_selected: "(Žádné)" diff --git a/config/locales/crowdin/js-de.yml b/config/locales/crowdin/js-de.yml index 4f859d610cdf..0767adb5cee0 100644 --- a/config/locales/crowdin/js-de.yml +++ b/config/locales/crowdin/js-de.yml @@ -327,7 +327,7 @@ de: label_add_row_before: "Zeile davor hinzufügen" label_add_selected_columns: "Ausgewählte Spalten hinzufügen" label_added_by: "hinzugefügt von" - label_added_time_by: "Added by %{author} at %{age}" + label_added_time_by: "Hinzugefügt von %{author} am %{age}" label_ago: "Tage her" label_all: "alle" label_all_work_packages: "alle Arbeitspakete" @@ -666,7 +666,7 @@ de: Bitte wählen Sie ein Projekt für das Arbeitspaket, um alle Attribute anzuzeigen. Sie können nur Projekte auswählen, für die der ausgewählte Typ oben aktiviert ist. details_activity: 'Projektdetails-Aktivität' context: 'Projektkontext' - click_to_switch_to_project: 'Project: %{projectname}' + click_to_switch_to_project: 'Projekt: %{projectname}' confirm_template_load: 'Das Ändern der Vorlage wird die Seite neu laden und Sie verlieren alle Eingaben zu diesem Formular. Fortfahren?' use_template: "Vorlage verwenden" no_template_selected: "(Keine)" diff --git a/config/locales/crowdin/js-es.yml b/config/locales/crowdin/js-es.yml index 3f3bca440a5c..aaf3d446456f 100644 --- a/config/locales/crowdin/js-es.yml +++ b/config/locales/crowdin/js-es.yml @@ -224,20 +224,20 @@ es: status_label: "Estado:" status_confirmed: "confirmado" status_waiting: "correo electrónico enviado - esperando confirmación" - test_ee: "Pruebe la edición Enterprise de forma gratuita durante 14 días" - quick_overview: "Obtenga un resumen rápido sobre la gestión de proyectos y la colaboración en equipo con OpenProject edición Enterprise." + test_ee: "Pruebe Enterprise de forma gratuita durante 14 días" + quick_overview: "Obtenga un resumen rápido sobre la gestión de proyectos y la colaboración en equipo con OpenProject Enterprise." upsale: become_hero: "¡Conviértete en un héroe!" - enterprise_info_html: "%{feature_title} es un add-on de la edición Enterprise ." + enterprise_info_html: "%{feature_title} es una extensión de la Enterprise ." upgrade_info: "Actualice a un plan de pago para activarla y empiece a usarla en su equipo." benefits: - description: "¿Cuáles son las ventajas de la edición Enterprise on-premises?" + description: "¿Cuáles son las ventajas de Enterprise On-Premises?" high_security: "Funciones de seguridad" high_security_text: "Inicio de sesión único (SAML, OpenID Connect, CAS), grupos LDAP." installation: "Ayuda en la instalación" installation_text: "Nuestros ingenieros de software especializados le guiarán en todo el proceso de instalación y configuración en su propia infraestructura." - premium_features: "Enterprise add-ons" - premium_features_text: "Paneles Agile, tema y logotipo personalizados, gráficos, flujos de trabajo inteligentes con acciones personalizadas, búsqueda de texto completo en archivos adjuntos de paquetes de trabajo y campos personalizados de selección múltiple." + premium_features: "Extensión Enterprise" + premium_features_text: "Tableros Agile, tema y logotipo personalizados, gráficos, flujos de trabajo inteligentes con acciones personalizadas, búsqueda de texto completo en archivos adjuntos de paquetes de trabajo y campos personalizados de selección múltiple." professional_support: "Soporte profesional" professional_support_text: "Obtenga ayuda rápida y de confianza de nuestros agentes de asistencia con conocimientos especializados sobre cómo ejecutar OpenProject en entornos empresariales críticos." button_start_trial: "Iniciar prueba gratuita" @@ -249,9 +249,9 @@ es: link_quote: "Solicitar presupuesto" more_info: "Más información" text: > - La edición Enterprise de OpenProject esta basada en la edición Community. Incluye Enterprise add-ons y soporte profesional dirigida principalmente a organizaciones con más de 10 usuarios que gestionen proyectos empresariales críticos con OpenProject. + OpenProject Enterprise esta basada en Community. Incluye extensiones Enterprise y soporte profesional dirigida principalmente a organizaciones con más de 10 usuarios que gestionen proyectos empresariales críticos con OpenProject. unlimited: "Ilimitado" - you_contribute: "Los desarrolladores también tienen que pagar sus facturas. Al actualizar a edición Enterprise, apoyará el esfuerzo de la comunidad de código abierto y contribuirá a su desarrollo, mantenimiento y mejora continua." + you_contribute: "Los desarrolladores también tienen que pagar sus facturas. Al actualizar a Enterprise, apoyará el esfuerzo de la comunidad de código abierto y contribuirá a su desarrollo, mantenimiento y mejora continua." working_days: calendar: empty_state_header: "Días no laborables" @@ -521,14 +521,14 @@ es: backlogs: overview: "Administre su trabajo en la vista de trabajos pendientes." sprints: "A la derecha verá los trabajos pendientes de productos y errores de código, y a la izquierda se muestran los sprints correspondientes. Aquí puede crear épicas, historias de usuario y errores de código, asignar prioridades mediante funciones de arrastrar y colocar, y añadir elementos a un sprint." - task_board_arrow: 'Para ver el panel de tareas, abra el menú desplegable sprint…' - task_board_select: '… y seleccione la entrada del panel de tareas.' - task_board: "En el panel de tareas, se muestra el progreso de este sprint. Haga clic en el icono del signo más (+) junto a una historia de usuario para añadir nuevas tareas o impedimentos.
Puede actualizar el estado mediante las funciones de arrastrar y colocar." + task_board_arrow: 'Para ver el tablero de tareas, abra el menú desplegable sprint…' + task_board_select: '… y seleccione la entrada del tablero de tareas.' + task_board: "En el tablero de tareas, se muestra el progreso de este sprint. Haga clic en el icono del signo más (+) junto a una historia de usuario para añadir nuevas tareas o impedimentos.
Puede actualizar el estado mediante las funciones de arrastrar y colocar." boards: - overview: 'Seleccione los paneles para cambiar la vista y gestione su proyecto con la vista de paneles Agile.' - lists_kanban: 'Aquí puede crear varias listas (columnas) en el panel. Por ejemplo, esta función le permite crear un panel Kanban.' - lists_basic: 'Aquí puede crear varias listas (columnas) en el panel Agile.' - add: 'Haga clic en el icono del signo más (+) para crear una tarjeta o añadir una tarjeta existente a la lista en el panel.' + overview: 'Seleccione los tableros para cambiar la vista y gestione su proyecto con la vista de tableros Agile.' + lists_kanban: 'Aquí puede crear varias listas (columnas) en el tablero. Por ejemplo, esta función le permite crear un tablero Kanban.' + lists_basic: 'Aquí puede crear varias listas (columnas) en el tablero Agile.' + add: 'Haga clic en el icono del signo más (+) para crear una tarjeta o añadir una tarjeta existente a la lista en el tablero.' drag: 'Arrastre y coloque las tarjetas en una lista específica para cambiar el orden o moverlas a otra lista.
Para ver los detalles, haga clic en el icono de información (i) de la esquina superior derecha o haga doble clic en una tarjeta.' wp: toggler: "Ahora, veamos la sección paquete de trabajo, que ofrece una vista más detallada de su trabajo." @@ -540,7 +540,7 @@ es: timeline: 'Aquí puede editar su plan de proyecto, crear nuevos paquetes de trabajo como tareas, hitos, fases y más, y añadir dependencias. Todos los miembros del equipo pueden ver y actualizar el plan más reciente en cualquier momento.' team_planner: overview: 'El planificador de equipo permite asignar de forma visual tareas a los miembros del equipo y obtener un resumen del trabajo de cada uno.' - calendar: 'En el panel de planificación semanal o bisemanal, se muestran todos los paquetes de trabajo asignados a los miembros del equipo.' + calendar: 'En el tablero de planificación semanal o bisemanal, se muestran todos los paquetes de trabajo asignados a los miembros del equipo.' add_assignee: 'Para empezar, añada usuarios asignados al planificador de equipo.' add_existing: 'Busque paquetes de trabajo existentes y arrástrelos hasta el planificador de equipo para asignarlos rápidamente a un miembro del equipo y defina las fechas de inicio y finalización.' card: 'Arrastre los paquetes de trabajo horizontalmente para hacerlos avanzar o retroceder en el tiempo, arrastre los bordes para cambiar las fechas de inicio y finalización, e incluso puede arrastrarlos verticalmente a otra fila para asignarlos a otro miembro.' @@ -715,8 +715,8 @@ es: reset_title: "Restablecer la configuración del formulario" confirm_reset: > Advertencia: ¿Está seguro de que quiere restablecer la configuración del formulario? Se restablecerán los atributos al grupo predeterminado y se deshabilitarán TODOS los campos personalizados. - upgrade_to_ee: "Actualizar a edición Enterprise on-premises" - upgrade_to_ee_text: "¡Vaya! Si necesita está opción, entonces ¡es un usuario experto! ¿Le importaría apoyar a los desarrolladores de código abierto convirtiéndose en cliente de la edición Enterprise?" + upgrade_to_ee: "Actualizar a Enterprise On-Premises" + upgrade_to_ee_text: "¡Vaya! Si necesita está extensión, entonces ¡es un usuario experto! ¿Le importaría apoyar a los desarrolladores de código abierto convirtiéndose en cliente de Enterprise?" more_information: "Más información" nevermind: "No importa" edit: @@ -863,7 +863,7 @@ es: zooms: "Nivel de zoom" outlines: "Nivel de jerarquía" upsale: - ee_only: 'Add-on de la edición Enterprise' + ee_only: 'Extensión Enterprise' wiki_formatting: strong: "Negrita" italic: "Cursiva" @@ -1054,7 +1054,7 @@ es: upsale: attribute_highlighting: '¿Necesita que algunos paquetes de trabajo destaquen del resto?' relation_columns: '¿Necesita ver las relaciones en la lista de paquetes de trabajo?' - check_out_link: 'Echa un vistazo a la edición Enterprise.' + check_out_link: 'Echa un vistazo a Enterprise.' relation_filters: filter_work_packages_by_relation_type: 'Filtrar paquetes de trabajo por tipo de relación' tabs: @@ -1197,9 +1197,9 @@ es: description: 'Permisos basados en el rol asignado en el proyecto seleccionado' placeholder: title: 'Usuario de marcador de posición' - title_no_ee: 'Usuario de marcador de posición (add-on solo para edición Enterprise)' + title_no_ee: 'Usuario de marcador de posición (extensión solo para Enterprise)' description: 'No tiene acceso al proyecto y no se enviarán correos electrónicos.' - description_no_ee: 'No tiene acceso al proyecto y no se enviarán correos electrónicos.
Consulte edición Enterprise' + description_no_ee: 'No tiene acceso al proyecto y no se enviarán correos electrónicos.
Consulte Enterprise' principal: label: name_or_email: 'Nombre o dirección de correo electrónico' diff --git a/config/locales/crowdin/js-fr.yml b/config/locales/crowdin/js-fr.yml index 09eed549b546..cff965599322 100644 --- a/config/locales/crowdin/js-fr.yml +++ b/config/locales/crowdin/js-fr.yml @@ -127,7 +127,7 @@ fr: description_available_columns: "Colonnes disponibles" description_current_position: "Vous êtes ici :" description_select_work_package: "Sélectionner le lot de travaux #%{id}" - description_selected_columns: "Colonnes Sélectionnées" + description_selected_columns: "Colonnes sélectionnées" description_subwork_package: "Enfant du lot de travaux #%{id}" editor: preview: 'Basculer en mode aperçu' @@ -319,7 +319,7 @@ fr: La version contient diverses nouvelles fonctionnalités et améliorations :
label_activate: "Activer" label_assignee: 'Responsable' - label_add_column_after: "Ajouter une colonne au-dessus" + 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" @@ -997,8 +997,8 @@ fr: hierarchy_disabled_by_group_by: "Le mode hiérarchie est désactivé, car les résultats sont groupés par %{column}." sort_ascending: "Trier par ordre croissant" sort_descending: "Trier par ordre décroissant" - move_column_left: "Déplacer la colonne de gauche" - move_column_right: "Déplacer le colonne de droite" + move_column_left: "Déplacer la colonne à gauche" + move_column_right: "Déplacer la colonne à droite" hide_column: "Masquer la colonne" insert_columns: "Insérer des colonnes" filters: "Filtres" @@ -1021,7 +1021,7 @@ fr: configure_button: 'Configurer le tableau du lot de travaux' summary: "Tableau avec lignes de lots de travaux et colonnes d’attributs de lots de travaux." text_inline_edit: "La plupart des cellules de ce tableau sont des boutons qui activent la fonctionnalité d'édition en ligne de l’attribut." - text_sort_hint: "Avec les liens dans les en-têtes de tableau vous pouvez trier, regrouper, réorganiser, supprimer et ajouter des colonnes." + text_sort_hint: "Avec les liens dans les entêtes de tableau, vous pouvez trier, regrouper, réorganiser, supprimer et ajouter des colonnes." text_select_hint: "Les boîtes de sélection doivent être ouvertes avec la touche « ALT » et les flèches directionelles." table_configuration: button: 'Configurer ce tableau du lot de travaux' @@ -1050,7 +1050,7 @@ fr: automatic: 'Automatique' manually: 'Manuellement' warning: 'Vous perdrez votre tri précédent lors de l''activation du mode de tri automatique.' - columns_help_text: "Utilisez le champ de saisie ci-dessus pour ajouter des colonnes à votre vue table. Vous pouvez glisser-déposer les colonnes pour les réorganiser." + columns_help_text: "Utilisez le champ de saisie ci-dessus pour ajouter des colonnes à votre vue de tableau. Vous pouvez glisser-déposer les colonnes pour les réorganiser." upsale: attribute_highlighting: 'Vous avez besoin de lots de travaux qui sortent du lot ?' relation_columns: 'Besoin de voir les relations sur la liste des lots de travaux ?' diff --git a/config/locales/crowdin/js-id.yml b/config/locales/crowdin/js-id.yml index 45e286a04225..be58cd5ba8d0 100644 --- a/config/locales/crowdin/js-id.yml +++ b/config/locales/crowdin/js-id.yml @@ -125,7 +125,7 @@ id: errors: could_not_load: 'The data to display the graph could not be loaded. The necessary permissions may be lacking.' description_available_columns: "Kolom tersedia" - description_current_position: "You are here: " + description_current_position: "Kamu di sini:" description_select_work_package: "Select work package #%{id}" description_selected_columns: "Kolom dipilih" description_subwork_package: "Child of work package #%{id}" @@ -260,7 +260,7 @@ id: add_non_working_day: "Non-working day" already_added_error: "A non-working day for this date exists already. There can only be one non-working day created for each unique date." change_button: "Save and reschedule" - change_title: "Change working days" + change_title: "Ubah hari kerja" removed_title: "You will remove the following days from the non-working days list:" change_description: "Changing which days of the week are considered working days or non-working days can affect the start and finish days of all work packages in all projects in this instance." warning: > @@ -557,7 +557,7 @@ id: commented: 'commented' processed: 'processed' prioritized: 'prioritized' - dateAlert: 'Date alert' + dateAlert: 'Peringatan tanggal' date_alerts: milestone_date: 'Milestone date' overdue: 'Overdue' @@ -594,13 +594,13 @@ id: message: 'There are new notifications.' link_text: 'Click here to load them' menu: - accountable: 'Accountable' + accountable: 'Akuntabel' by_project: 'Unread by project' by_reason: 'Reason' inbox: 'Inbox' mentioned: 'Mentioned' watched: 'Pemantau' - date_alert: 'Date alert' + date_alert: 'Peringatan tanggal' settings: change_notification_settings: 'You can modify your notification settings to ensure you never miss an important update.' title: "Notification settings" @@ -622,7 +622,7 @@ id: title: 'Mentioned' description: 'Receive a notification every time someone mentions me anywhere' assignee: 'Pelimpahan' - responsible: 'Accountable' + responsible: 'Akuntabel' watched: 'Pemantau' work_package_commented: 'All new comments' work_package_created: 'New work packages' @@ -668,7 +668,7 @@ id: context: 'Konteks proyek' click_to_switch_to_project: 'Project: %{projectname}' confirm_template_load: 'Switching the template will reload the page and you will lose all input to this form. Continue?' - use_template: "Use template" + use_template: "Gunakan templat" no_template_selected: "(None)" copy: copy_options: "Copy options" @@ -817,7 +817,7 @@ id: button_deactivate: 'Hide Gantt chart' cancel: Batal change: "Perubahan dalam perencanaan" - due_date: "Finish date" + due_date: "Tanggal selesai" empty: "(kosong)" error: "An error has occurred." errors: @@ -955,7 +955,7 @@ id: createdAt: "Dibuat" description: "Deskripsi" date: "Tanggal" - dueDate: "Finish date" + dueDate: "Tanggal selesai" duration: "Durasi" estimatedTime: "Estimasi Waktu" spentTime: "Durasi" @@ -978,7 +978,7 @@ id: created_by_me: "Created by me" assigned_to_me: "Assigned to me" recently_created: "Recently created" - all_open: "All open" + all_open: "Semua terbuka" summary: "Ringkasan" jump_marks: pagination: "Jump to table pagination" @@ -1193,7 +1193,7 @@ id: title: 'Grup' description: 'Permissions based on the assigned role in the selected project' placeholder: - title: 'Placeholder user' + title: 'Pengguna placeholder' title_no_ee: 'Placeholder user (Enterprise edition only add-on)' description: 'Has no access to the project and no emails are sent out.' description_no_ee: 'Has no access to the project and no emails are sent out.
Check out the Enterprise edition' @@ -1237,7 +1237,7 @@ id: clear_selection: 'Clear selection' apply: 'Apply' selected_filter: - all: 'All projects' + all: 'Semua proyek' selected: 'Only selected' search_placeholder: 'Search project...' include_subprojects: 'Include all sub-projects' diff --git a/config/locales/crowdin/js-ka.yml b/config/locales/crowdin/js-ka.yml index 10b80205fff1..2bfbef51e24a 100644 --- a/config/locales/crowdin/js-ka.yml +++ b/config/locales/crowdin/js-ka.yml @@ -241,7 +241,7 @@ ka: professional_support: "Professional support" professional_support_text: "Get reliable, high-touch support from senior support engineers with expert knowledge about running OpenProject in business-critical environments." button_start_trial: "Start free trial" - button_upgrade: "Upgrade now" + button_upgrade: "ახლავე განაახლე" button_contact_us: "Contact us for a demo" button_book_now: "Book now" confidence: > @@ -966,14 +966,14 @@ ka: projectName: "Project" responsible: "Responsible" startDate: "Start date" - status: "Status" + status: "სტატუსი" subject: "Subject" subproject: "Subproject" title: "Title" type: "Type" updatedAt: "Updated on" - versionName: "Version" - version: "Version" + versionName: "ვერსია" + version: "ვერსია" default_queries: latest_activity: "Latest activity" created_by_me: "Created by me" @@ -1042,7 +1042,7 @@ ka: inline: 'Highlighted attribute(s)' inline_all: 'All attributes' entire_row_by: 'Entire row by' - status: 'Status' + status: 'სტატუსი' priority: 'Priority' type: 'Type' sorting_mode: diff --git a/config/locales/crowdin/js-lt.yml b/config/locales/crowdin/js-lt.yml index c47e6fc1f52b..a9216ae8d98a 100644 --- a/config/locales/crowdin/js-lt.yml +++ b/config/locales/crowdin/js-lt.yml @@ -26,9 +26,9 @@ lt: loading: "Įkeliama…" updating: "Atnaujinama…" attachments: - delete: "Delete attachment" + delete: "Ištrinti priedą" delete_confirmation: | - Are you sure you want to delete this file? This action is not reversible. + Ar tikrai norite ištrinti šį failą? Šio veiksmo nebus galima atšaukti. draggable_hint: | Tempkite į redagavimo lauką, kad įtrauktumėte piešinį ar paminėtumėte priedą. Uždari redaktoriaus laukai bus atidaryti, kol jūs tempsite. autocomplete_select: @@ -85,10 +85,10 @@ lt: button_open_fullscreen: "Atverti pilno ekrano vaizdą" button_show_cards: "Rodyti kortelių vaizdą" button_show_list: "Rodyti sąrašo vaizdą" - button_show_table: "Show table view" - button_show_gantt: "Show Gantt view" - button_show_fullscreen: "Show fullscreen view" - button_more_actions: "More actions" + button_show_table: "Rodyti lentelės vaizdą" + button_show_gantt: "Rodyti Gantt vaizdą" + button_show_fullscreen: "Rodyti pilno ekrano vaizdą" + button_more_actions: "Daugiau veiksmų" button_quote: "Cituoti" button_save: "Įrašyti" button_settings: "Nustatymai" @@ -158,7 +158,7 @@ lt: language_hint: 'Įveskite formatavimo kalbą, kuri bus naudojama elementų išryškinimui (jei tai palaikoma).' dropdown: macros: 'Makrokomandos' - chose_macro: 'Choose macro' + chose_macro: 'Parinkite makrokomandą' toc: 'Turinys' toolbar_help: 'Spauskite, kad parinktumėte valdiklį ir rodytumėte įrankinę. Dvigubas paspaudimas valdiklio redagavimui' wiki_page_include: @@ -212,7 +212,7 @@ lt: label_expires_at: "Nustoja galioti" receive_newsletter: Noriu gauti OpenProject naujienlaiškį. taken_domain: Gali būti tik vienas aktyvus bandomasis periodas domenui. - domain_mismatch: The current request host name does not match the configured host name. Please double check your system settings. + domain_mismatch: Dabartinės užklausos stoties pavadinimas neatitinka sukonfigūruoto stoties vardo. Prašome patikrinti jūsų sistemos nustatymus. taken_email: Kiekvienas naudotojas gali sukurti tik vieną bandomąjį periodą. email_not_received: "Negavote el. laiško? Galite pakartotinai išsiųsti laišką naudodami nuorodą dešinėje." try_another_email: "Arba bandykite su kitu el. pašto adresu." @@ -224,19 +224,19 @@ lt: status_label: "Būsena:" status_confirmed: "patvirtinta" status_waiting: "laiškas išsiųstas -- laukiame patvirtinimo" - test_ee: "Test the Enterprise edition 14 days for free" - quick_overview: "Get a quick overview of project management and team collaboration with OpenProject Enterprise edition." + test_ee: "Išbandykite Enterprise versiją 14 dienų nemokamai" + quick_overview: "Gaukite greitą apžvalgą apie projektų valdymą ir komandos bendradarbiavimą naudojant OpenProject Enterprise versiją." upsale: become_hero: "Tapkite didvyriu!" - enterprise_info_html: "%{feature_title} is an Enterprise add-on." + enterprise_info_html: "%{feature_title} yra Enterprise priedas." upgrade_info: "Prašome atsinaujinti į mokamą planą, kad aktyvuotumėte ir pradėtumėte ji naudoti savo komandoje." benefits: - description: "What are the benefits of the Enterprise on-premises edition?" + description: "Kokie yra Enterprise vietinės versijos privalumai?" high_security: "Saugumo funkcijos" - high_security_text: "Single sign on (SAML, OpenID Connect, CAS), LDAP groups." + high_security_text: "Vienas prisijungimas (SAML, OpenID Connect, CAS), LDAP grupės." installation: "Diegimo pagalba" installation_text: "Patyręs programų inžinierius ves jus per visą diegimo ir nustatymo procesą naudojant jūsų pačių infrastruktūrą." - premium_features: "Enterprise add-ons" + premium_features: "Enterprise priedai" premium_features_text: "Agile lentos, savo tema ir logotipas, grafai, protingi darbo scenarijai su apibrėžtais veiksmais, pilna teksto paieška darbo paketų prieduose ir galimybė pasirinkti daugiau nei vieną reikšmę pritaikytuose laukuose." professional_support: "Profesionali pagalba" professional_support_text: "Gaukite patikimą, artimą pagalbą iš patyrusių pagalbos inžinierių su ekspertinėmis žiniomis apie OpenProject naudojimą verslui kritinėse aplinkose." @@ -247,25 +247,25 @@ lt: confidence: > Mes duodame patikrintos ir palaikomas korporacijos-lygio projektų valdymo programos užtikrintumą -- su atviru kodu ir plačiomis pažiūromis. link_quote: "Gauti pasiūlymą" - more_info: "More information" + more_info: "Daugiau informacijos" text: > - The OpenProject Enterprise edition builds on top of the Community edition. It includes Enterprise add-ons and professional support mainly aimed at organizations with more than 10 users that manage business critical projects with OpenProject. + OpenProject Enterprise versija yra pastatyta virš Bendruomenės versijos. Papildomai įdėti „premium“ priedai ir profesionalus aptarnavimas, pagrinde orientuotas į organizacijas su daugiau nei 10 vartotojų, kurie naudodami OpenProject valdo verslui kritinius projektus. unlimited: "Neribota" - you_contribute: "Developers need to pay their bills, too. By upgrading to the Enterprise edition, you will be supporting this open source community effort and contributing to its development, maintenance and continuous improvement." + you_contribute: "Vystotojams taip pat reikia apmokėti sąskaitas. Pereidami į Enterprise versiją, jūs paremsite šį atviro kodo bendruomenės projektą ir prisidėsite prie jo vystymo, palaikymo ir pastovaus tobulinimo." working_days: calendar: - empty_state_header: "Non-working days" - empty_state_description: 'No specific non-working days are defined for this year. Click on "+ Non-working day" below to add a date.' - new_date: '(new)' - add_non_working_day: "Non-working day" - already_added_error: "A non-working day for this date exists already. There can only be one non-working day created for each unique date." - change_button: "Save and reschedule" - change_title: "Change working days" - removed_title: "You will remove the following days from the non-working days list:" - change_description: "Changing which days of the week are considered working days or non-working days can affect the start and finish days of all work packages in all projects in this instance." + empty_state_header: "Nedarbo dienos" + empty_state_description: 'Šiems metams nėra nurodytų konkrečių nedarbo dienų. Spauskite „+ Nedarbo dieną“ žemiau, kad pridėtumėte datą.' + new_date: '(nauja)' + add_non_working_day: "Nedarbo diena" + already_added_error: "Nedarbo diena šiai datai jau yra. Kiekvienai unikaliai datai galima sukurti tik vieną nedarbo dieną." + change_button: "Įrašyti ir perplanuoti" + change_title: "Keisti darbo dienas" + removed_title: "Jūs išimsite šias dienas iš nedarbo dienų sąrašo:" + change_description: "Keičiant savaitės dienas, kurios yra darbo ar nedarbo dienos, gali kisti visų projektų darbo paketų pradžios ir pabaigos dienos." warning: > - The changes might take some time to take effect. You will be notified when all relevant work packages have been updated. - Are you sure you want to continue? + Pakeitimų įsigaliojimas gali užtrukti. Jums bus pranešta, kai visi susiję darbo paketai bus atnaujinti. + Ar tikrai norite tęsti? custom_actions: date: specific: 'įjungta' @@ -316,7 +316,7 @@ lt: standard: learn_about_link: https://www.openproject.org/blog/openproject-12-5-release new_features_html: > - The release contains various new features and improvements:
+ Šioje laidoje yra įvairios naujos savybės ir patobulinimai:
label_activate: "Aktyvuoti" label_assignee: 'Paskirtas' label_add_column_after: "Pridėti stulpelį po" @@ -328,7 +328,7 @@ lt: label_add_row_before: "Pridėti eilutę prieš" label_add_selected_columns: "Pridėti pažymėtus stulpelius" label_added_by: "pridėjo" - label_added_time_by: "Added by %{author} at %{age}" + label_added_time_by: "Pridėjo %{author} %{age}" label_ago: "dienų prieš" label_all: "visi" label_all_work_packages: "visi darbų paketai" @@ -388,7 +388,7 @@ lt: label_in_more_than: "daugiau nei" label_incoming_emails: "Gauti el. laiškai" label_information_plural: "Informacija" - label_invalid: "Invalid" + label_invalid: "Netinkamas" label_import: "Importuoti" label_latest_activity: "Paskutinė veikla" label_last_updated_on: "Paskiausias atnaujinimas" @@ -408,7 +408,7 @@ lt: label_no_data: "Nėra rodytinų duomenų" label_no_due_date: "be pabaigos datos" label_no_start_date: "nėra pradžios datos" - label_no_date: "no date" + label_no_date: "nėra datos" label_no_value: "Nenurodytas dydis" label_none: "joks" label_not_contains: "neturi" @@ -422,7 +422,7 @@ lt: label_per_page: "Puslapyje:" label_please_wait: "Prašome palaukti" label_project: "Projektas" - label_project_list: "Projects list" + label_project_list: "Projektų sąrašas" label_project_plural: "Projektai" label_visibility_settings: "Matomumo nustatymai" label_quote_comment: "Cituoti šį komentarą" @@ -473,20 +473,20 @@ lt: label_watch_work_package: "Stebėti darbų paketą" label_watcher_added_successfully: "Stebėtojas sėkmingai pridėtas!" label_watcher_deleted_successfully: "Stebėtojas sėkmingai ištrintas!" - label_work_package_details_you_are_here: "You are on the %{tab} tab for %{type} %{subject}." + label_work_package_details_you_are_here: "Esate %{type} %{subject} %{tab} skirtuke." label_unwatch: "Nestebėti" label_unwatch_work_package: "Nebestebėti darbų paketo" label_uploaded_by: "Įkėlė" label_default_queries: "Numatytasis" - label_starred_queries: "Favorite" + label_starred_queries: "Mėgstamas" label_global_queries: "Viešas" - label_custom_queries: "Private" + label_custom_queries: "Privatus" label_columns: "Stulpeliai" label_attachments: Priedai - label_drop_files: "Drop files here to attach files." - label_drop_or_click_files: "Drop files here or click to attach files." + label_drop_files: "Numeskite failus čia, kad prisegtumėte." + label_drop_or_click_files: "Numeskite failus čia arba paspauskite, kad prisegtumėte." label_drop_folders_hint: Aplankų negalima įkelti kaip priedų. Prašome pasirinkti atskirus failus. - label_add_attachments: "Attach files" + label_add_attachments: "Pridėti failus" label_formattable_attachment_hint: "Prisegti ir susieti failus užvelkant ant šio laukelio arba įklijuojant į iškarpinę." label_remove_file: "Naikinti %{fileName}" label_remove_watcher: "Pašalinti stebėtoją %{name}" @@ -511,7 +511,7 @@ lt: next: 'Kitas' got_it: 'Supratau' steps: - help_menu: 'The Help (?) menu provides additional help resources. Here you can find a user guide, helpful how-to videos and more.
Enjoy your work with OpenProject!' + help_menu: 'Pagalbos (?) meniu yra papildomi pagalbos resursai. Čia jūs galite rasti naudotojo vadovą, naudingus video kaip atlikti veiksmus ir dar daugiau.
Sėkmės naudojant OpenProject!' members: 'Pakvieskite naujus narius prisijungti prie projekto.' project_selection: 'Prašome paspausti ant vieno iš mūsų paruoštų demonstracinių projektų. Demonstraciniai duomenys yra tik anglų kalba.
Demo project geriausiai tinka klasikiniam projektų valdymui, o Scrum project labiau tinka Agile projektų valdymui.' quick_add_button: 'Paspauskite pliuso (+) ženklą navigacijos antraštėje ir sukursite naują projektą arba pakviesite bendradarbius.' @@ -549,29 +549,29 @@ lt: no_unread: "Nėra neperskaitytų pranešimų" reasons: mentioned: 'paminėtas' - watched: 'watcher' + watched: 'stebėtojas' assigned: 'paskirtas' responsible: 'atsakingas' - created: 'created' - scheduled: 'scheduled' - commented: 'commented' - processed: 'processed' - prioritized: 'prioritized' - dateAlert: 'Date alert' + created: 'sukurta' + scheduled: 'suplanuota' + commented: 'komentuota' + processed: 'apdorota' + prioritized: 'prioritetizuota' + dateAlert: 'Datos įspėjimas' date_alerts: - milestone_date: 'Milestone date' - overdue: 'Overdue' - overdue_since: 'since %{difference_in_days}' - property_today: 'is today' - property_is: 'is in %{difference_in_days}' - property_was: 'was %{difference_in_days} ago' - property_is_deleted: 'is deleted' + milestone_date: 'Gairės data' + overdue: 'Vėluojama' + overdue_since: 'nuo %{difference_in_days}' + property_today: 'yra šiandien' + property_is: 'yra %{difference_in_days}' + property_was: 'buvo prieš %{difference_in_days}' + property_is_deleted: 'yra ištrintas' upsale: - title: 'Date alerts' - description: 'With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline.' + title: 'Datos įspėjimai' + description: 'Su datos įspėjimais jus informuos apie ateinančias pradžios ir pabaigos datas, kad niekada nepraleistumėte ar nepamirštumėte svarbių terminų.' facets: unread: 'Neskaitytas' - unread_title: 'Show unread' + unread_title: 'Rodyti neperskaitytus' all: 'Visi' all_title: 'Rodyti viską' center: @@ -582,16 +582,16 @@ lt: many: 'ir dar %{count}' other: 'ir dar %{count}' no_results: - at_all: 'New notifications will appear here when there is activity that concerns you.' + at_all: 'Čia pasirodys nauji pranešimai, kai bus su jumis susijusi veikla.' with_current_filter: 'Šiuo metu šiame vaizde pranešimų nėra' mark_all_read: 'Pažymėti visus kaip perskaitytus' mark_as_read: 'Žymėti kaip skaitytą' text_update_date: "%{date} " total_count_warning: "Rodomi %{newest_count} paskutiniai pranešimai. Dar %{more_count} yra nerodomi." empty_state: - no_notification: "Looks like you are all caught up." - no_notification_with_current_project_filter: "Looks like you are all caught up with the selected project." - no_notification_with_current_filter: "Looks like you are all caught up for %{filter} filter." + no_notification: "Panašu, kad jūs pilnai pasivijote." + no_notification_with_current_project_filter: "Panašu, kad jūs jau pilnai pasivijote pažymėtą projektą." + no_notification_with_current_filter: "Panašu, kad jūs jau pilnai pasivijote filtrą %{filter}." no_selection: "Spauskite ant pranešimo, kad peržiūrėtumėte visas veiksmo detales." new_notifications: message: 'Yra naujų pranešimų.' @@ -599,27 +599,27 @@ lt: menu: accountable: 'Atsakingas' by_project: 'Neperskaityti pagal projektą' - by_reason: 'Reason' + by_reason: 'Priežastis' inbox: 'Gauti' mentioned: 'Paminėtas' watched: 'Stebėtojas' - date_alert: 'Date alert' + date_alert: 'Datos įspėjimas' settings: - change_notification_settings: 'You can modify your notification settings to ensure you never miss an important update.' + change_notification_settings: 'Jūs galite keisti savo pranešimų nustatymus, kad užtikrintumėte, jog niekada nepraleisite svarbaus atnaujinimo.' title: "Pranešimų nustatymai" notify_me: "Pranešti man" reminders: - no_notification: No notification + no_notification: Jokio pranešimo timeframes: normal: - PT0S: same day - P1D: 1 day before - P3D: 3 days before - P7D: a week before + PT0S: tą pačią dieną + P1D: prieš 1 dieną + P3D: prieš 3 dienas + P7D: prieš savaitę overdue: - P1D: every day - P3D: every 3 days - P7D: every week + P1D: kiekvieną dieną + P3D: kas 3 dienas + P7D: kiekvieną savaitę reasons: mentioned: title: 'Paminėtas' @@ -634,19 +634,19 @@ lt: work_package_scheduled: 'Visi datų pakeitimai' global: immediately: - title: 'Participating' - description: 'Notifications for all activities in work packages you are involved in (assignee, accountable or watcher).' + title: 'Dalyvaujate' + description: 'Pranešimai apie visus veiksmus darbo paketuose, su kuriais jūs susiję (priskirtasis, atsakingas ar stebėtojas).' delayed: - title: 'Non-participating' - description: 'Additional notifications for activities in all projects.' + title: 'Nedalyvaujate' + description: 'Papildomi pranešimai apie veiksmus visuose projektuose.' date_alerts: - title: 'Date alerts' - description: 'Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher).' - teaser_text: 'With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline.' - overdue: When overdue + title: 'Datos įspėjimai' + description: 'Automatiniai pranešimai apie artėjančias svarbias atvirų darbo paketų, su kuriais jūs susiję (paskirtasis, atsakingas ar stebėtojas), datas.' + teaser_text: 'Su datos įspėjimais jus informuos apie ateinančias pradžios ir pabaigos datas, kad niekada nepraleistumėte ar nepamirštumėte svarbių terminų.' + overdue: Kai pavėluota project_specific: title: 'Konkrečių projektų pranešimų nustatymai' - description: 'These project-specific settings override default settings above.' + description: 'Šie konkrečių projektų nustatymai permuša aukščiau esančius numatytuosius nustatymus.' add: 'Pridėti nustatymą projektui' already_selected: 'Šis projektas jau pažymėtas' remove: 'Išimti projekto nustatymus' @@ -662,14 +662,14 @@ lt: default: '-' subject: 'Įveskite temą čia' selection: 'Prašome pasirinkti' - description: 'Description: Click to edit...' + description: 'Aprašymas: spauskite, kad keistumėte...' relation_description: 'Paspauskite, kad pridėtumėte šio ryšio aprašymą' project: required_outside_context: > Prašau pasirinkti projektą, kuriame turi būti sukurtas darbo paketas, kad matytumėte visus atributus. Jūs galite pasirinkti tik tuos projektus, kurie turi aukščiau nurodytą tipą. - details_activity: 'Project details activity' + details_activity: 'Projekto detalių aktyvumas' context: 'Projekto kontekstas' - click_to_switch_to_project: 'Project: %{projectname}' + click_to_switch_to_project: 'Projektas: %{projectname}' confirm_template_load: 'Šablono pakeitimas perkraus puslapį ir jūs prarasite visą šioje formoje įvestą informaciją. Tęsti?' use_template: "Naudoti šabloną" no_template_selected: "(Nėra)" @@ -717,8 +717,8 @@ lt: reset_title: "Atstatyti formos konfigūraciją" confirm_reset: > Įspėjimas: Ar tikrai norite atstatyti pradinę formos konfigūraciją? Atributai bus perkelti į jų numatytąsias grupes ir VISUS savi laukeliai bus išjungti. - upgrade_to_ee: "Upgrade to Enterprise on-premises edition" - upgrade_to_ee_text: "Wow! If you need this add-on you are a super pro! Would you mind supporting us OpenSource developers by becoming an Enterprise edition client?" + upgrade_to_ee: "Patobulinkite į Enteprise vietinę versiją" + upgrade_to_ee_text: "Oho! Jei Jums reikia šio priedo, esate super pro! Ar nenorėtumėte paremti mus, OpenSource (atviro kodo) kūrėjus, tapdami Enterprise versijos klientu?" more_information: "Daugiau informacijos" nevermind: "Nesvarbu" edit: @@ -815,7 +815,7 @@ lt: farRight: 'Toli dešinėje' showNone: '-- Be etiketės --' description: > - Select the attributes you want to be shown in the respective positions of the Gantt chart at all times. Note that when hovering over an element, its date labels will be shown instead of these attributes. + Pasirinkite atributus, kuriuos visada norite pamatyti atitinkamose Ganto grafiko pozicijose. Atkreipkite dėmesį, kad kai pelės klavišas užvestas virš elemento, jo datos informacija bus rodoma vietoj šių atributų. button_activate: 'Parodyti Gantto diagramą' button_deactivate: 'Paslėpti Gantto diagramą' cancel: Nutraukti @@ -865,7 +865,7 @@ lt: zooms: "Didinimo lygis" outlines: "Hierarchinis lygmuo" upsale: - ee_only: 'Enterprise edition add-on' + ee_only: '„Enterprise“ versijos priedas' wiki_formatting: strong: "Paryškintas" italic: "Pasvirasis" @@ -894,14 +894,14 @@ lt: comment_updated: "Komentaras sėkmingai atnaujintas." confirm_edit_cancel: "Ar Jūs tikrai norite atšaukti darbo paketo redagavimą?" datepicker_modal: - automatically_scheduled_parent: "Automatically scheduled. Dates are derived from relations." - manually_scheduled: "Manual scheduling enabled, all relations ignored." - start_date_limited_by_relations: "Available start and finish dates are limited by relations." - changing_dates_affects_follow_relations: "Changing these dates will affect dates of related work packages." - click_on_show_relations_to_open_gantt: 'Click on "%{button_name}" for GANTT overview.' - show_relations: 'Show relations' + automatically_scheduled_parent: "Suplanuota automatiškai. Datos paskaičiuotos pagal ryšius." + manually_scheduled: "Įjungtas rankinis planavimas, visi ryšiai ignoruojami." + start_date_limited_by_relations: "Galimos pradžios ir pabaigos datos ribojamos pagal ryšius." + changing_dates_affects_follow_relations: "Šių datų keitimas įtakos susijusių darbo paketų datas." + click_on_show_relations_to_open_gantt: 'Spauskite „%{button_name}“ GANTT vaizdui.' + show_relations: 'Rodyti ryšius' ignore_non_working_days: - title: 'Working days only' + title: 'Tik darbo dienos' description_filter: "Filtras" description_enter_text: "Įveskite tekstą" description_options_hide: "Slėpti parinktis" @@ -1002,7 +1002,7 @@ lt: move_column_left: "Perkelti stulpelį į kairę" move_column_right: "Perkelti stulpelį į dešinę" hide_column: "Slėpti stulpelį" - insert_columns: "Insert columns" + insert_columns: "Įterpti stulpelius" filters: "Filtrai" display_sums: "Rodyti suvestines" confirm_edit_cancel: "Ar tikrai norite atšaukti pavadinimo pakeitimus? Pavadinimas bus atstatytas į prieš tai buvusį tekstą." @@ -1029,7 +1029,7 @@ lt: button: 'Konfigūruokite šią darbų paketo lentelę' choose_display_mode: 'Parodyti darbų paketą kaip' modal_title: 'Darbų paketų lentelės konfigūracija' - embedded_tab_disabled: "This configuration tab is not available for the embedded view you are editing." + embedded_tab_disabled: "Ši konfigūracijos kortelė nerodoma įterpiamam vaizdui, kurį jūs redaguojate." default: "numatytasis" display_settings: 'Rodymo nustatymai' default_mode: "Paprastas sąrašas" @@ -1056,7 +1056,7 @@ lt: upsale: attribute_highlighting: 'Reikia išskirti tam tikrus darbo paketus iš didelės masės?' relation_columns: 'Ar reikia matyti ryšius darbų paketų sąraše?' - check_out_link: 'Check out the Enterprise edition.' + check_out_link: 'Patikrinkite Enterprise versiją.' relation_filters: filter_work_packages_by_relation_type: 'Filtruokite darbo paketus pagal sąryšio tipą' tabs: @@ -1071,9 +1071,9 @@ lt: months: "mėnesiai" toolbar: settings: - configure_view: "Configure view" + configure_view: "Konfigūruoti vaizdą" columns: "Stulpeliai" - sort_by: "Rūšiuoti pagal" + sort_by: "Rikiuoti pagal" group_by: "Grupuoti pagal" display_sums: "Rodyti suvestines" display_hierarchy: "Rodyti hierarchiją" @@ -1101,8 +1101,8 @@ lt: text: 'Ar tikrai norite atlikti šį veiksmą?' destroy_work_package: title: "Patvirtinkite, jog %{label} ištrinamas" - single_text: "Are you sure you want to delete the work package" - bulk_text: "Are you sure you want to delete the following %{label}?" + single_text: "Ar tikrai norite ištrinti darbo paketą" + bulk_text: "Ar tikrai norite ištrinti %{label}?" has_children: "Darbų paketas turi %{childUnits}:" confirm_deletion_children: "Aš sutinku, kad VISI šio darbų paketo palikuoniai bus rekursiškai ištrinti." deletes_children: "Visi darbų paketo vaikai ir jų palikuoniai taip pat bus rekursiškai ištrinti." @@ -1157,7 +1157,7 @@ lt: day: one: "1 dieną" other: "%{count} dienas (-ą, -ų)" - zero: "0 days" + zero: "0 dienų" zen_mode: button_activate: 'Įjungti Zen režimą' button_deactivate: 'Išjungti Zen režimą' @@ -1203,9 +1203,9 @@ lt: description: 'Teisės, suteiktos pagal pasirinktame projekte turimą rolę' placeholder: title: 'Statytinis naudotojas' - title_no_ee: 'Placeholder user (Enterprise edition only add-on)' + title_no_ee: 'Statytiniai naudotojai (Enterprise versijos priedas)' description: 'Neturi prieigos prie projekto ir jokie el. pašto laiškai nebuvo išsiųsti.' - description_no_ee: 'Has no access to the project and no emails are sent out.
Check out the Enterprise edition' + description_no_ee: 'Neturi prieigos prie projekto ir jokie el. pašto laiškai nebuvo išsiųsti.
Pabandykite Enterprise versiją' principal: label: name_or_email: 'Vardas arba elektroninio pašto adresas' @@ -1224,12 +1224,12 @@ lt: role: label: 'Vaidmuo projekte %{project}' no_roles_found: 'Nerasta jokių vaidmenų' - description: 'This is the role that the user will receive when they join your project. The role defines which actions they are allowed to take and which information they are allowed to see. Learn more about roles and permissions. ' + description: 'Tai yra vaidmuo, kurį naudotojas gaus, kai prisijungs prie jūsų projekto. Vaidmuo nurodo, kokius veiksmus leidžiama atlikti ir kokią informaciją galima matyti. Sužinokite daugiau apie vaidmenis ir teises. ' required: 'Prašome parinkti vaidmenį' next_button: 'Kitas' message: label: 'Kvietimo pranešimas' - description: 'We will send an email to the user, to which you can add a personal message here. An explanation for the invitation could be useful, or prehaps a bit of information regarding the project to help them get started.' + description: 'Mes siųsime el. pašto laišką naudotojui, į kurį jūs galite pridėti asmeninį pranešimą. Paaiškinimas, kodėl šis pranešimas buvo atsiųstas, galėtų būti naudingas gavėjui. Taipogi šiek tiek informacijos apie projektą galbūt galėtų padėti pradėti darbą su projektu.' next_button: 'Kitas' summary: next_button: 'Siųsti pakvietimą' @@ -1251,10 +1251,10 @@ lt: search_placeholder: 'Ieškoti projekte...' include_subprojects: 'Įtraukti visus sub-projektus' tooltip: - include_all_selected: 'Project already included since Include all sub-projects is enabled.' + include_all_selected: 'Projektas jau įtrauktas, nes įjungta parinktis įtraukti visus sub-projektus.' current_project: 'Tai dabartinis projektas, kuriame jūs esate.' - does_not_match_search: 'Project does not match the search criteria.' - no_results: 'No project matches your search criteria.' + does_not_match_search: 'Projektas neatitinka paieškos kriterijaus.' + no_results: 'Nei vienas projektas neatitinka jūsų paieškos kriterijaus.' forms: submit_success_message: 'Forma buvo sėkmingai pateikta' load_error_message: 'Įkeliant formą įvyko klaida' @@ -1264,5 +1264,5 @@ lt: filter_chip: remove: 'Pašalinti' drop_modal: - focus_grab: 'This is a focus anchor for modals. Press shift+tab to go back to the modal trigger element.' + focus_grab: 'Tai fokuso inkaras modalams. Spauskite shift+tab, kad grįžtumėte į modalinių trigerių elementą.' Close: 'Uždaryti' diff --git a/config/locales/crowdin/js-nl.yml b/config/locales/crowdin/js-nl.yml index 97cbf6a64e1f..55024b9d05a1 100644 --- a/config/locales/crowdin/js-nl.yml +++ b/config/locales/crowdin/js-nl.yml @@ -254,12 +254,12 @@ nl: you_contribute: "Developers need to pay their bills, too. By upgrading to the Enterprise edition, you will be supporting this open source community effort and contributing to its development, maintenance and continuous improvement." working_days: calendar: - empty_state_header: "Non-working days" + empty_state_header: "Vrije dagen" empty_state_description: 'No specific non-working days are defined for this year. Click on "+ Non-working day" below to add a date.' - new_date: '(new)' - add_non_working_day: "Non-working day" + new_date: '(nieuw)' + add_non_working_day: "Vrije dagen" already_added_error: "A non-working day for this date exists already. There can only be one non-working day created for each unique date." - change_button: "Save and reschedule" + change_button: "Opslaan en opnieuw plannen" change_title: "Wijzig werkdagen" removed_title: "You will remove the following days from the non-working days list:" change_description: "Changing which days of the week are considered working days or non-working days can affect the start and finish days of all work packages in all projects in this instance." @@ -408,7 +408,7 @@ nl: label_no_data: "Geen gegevens om weer te geven" label_no_due_date: "geen einddatum" label_no_start_date: "geen startdatum" - label_no_date: "no date" + label_no_date: "geen datum" label_no_value: "Geen waarde" label_none: "geen" label_not_contains: "bevat geen" @@ -486,7 +486,7 @@ nl: label_drop_files: "Drop files here to attach files." label_drop_or_click_files: "Drop files here or click to attach files." label_drop_folders_hint: U kunt geen mappen uploaden als bijlage. Selecteer a. u. b. enkele bestanden. - label_add_attachments: "Attach files" + label_add_attachments: "Bestanden toevoegen" label_formattable_attachment_hint: "Hecht en link bestanden door deze in dit veld te slepen, of plak deze vanuit het klembord." label_remove_file: "%{fileName} verwijderen" label_remove_watcher: "Volger %{name} verwijderen" @@ -562,10 +562,10 @@ nl: milestone_date: 'Milestone date' overdue: 'Overdue' overdue_since: 'since %{difference_in_days}' - property_today: 'is today' + property_today: 'is vandaag' property_is: 'is in %{difference_in_days}' - property_was: 'was %{difference_in_days} ago' - property_is_deleted: 'is deleted' + property_was: 'was %{difference_in_days} geleden' + property_is_deleted: 'Is verwijderd' upsale: title: 'Date alerts' description: 'With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline.' @@ -587,7 +587,7 @@ nl: text_update_date: "%{date} door" total_count_warning: "De %{newest_count} meest recente meldingen weergeven. %{more_count} meer worden niet weergegeven." empty_state: - no_notification: "Looks like you are all caught up." + no_notification: "Het lijkt erop dat u helemaal bij bent." no_notification_with_current_project_filter: "Looks like you are all caught up with the selected project." no_notification_with_current_filter: "Looks like you are all caught up for %{filter} filter." no_selection: "Klik op een melding om alle activiteit details te bekijken." @@ -597,7 +597,7 @@ nl: menu: accountable: 'Verantwoording afleggen' by_project: 'Ongelezen per project' - by_reason: 'Reason' + by_reason: 'Reden' inbox: 'Inkomend' mentioned: 'Genoemd' watched: 'Kijker' @@ -607,17 +607,17 @@ nl: title: "Instellingen voor meldingen" notify_me: "Waarschuw mij" reminders: - no_notification: No notification + no_notification: Geen melding timeframes: normal: - PT0S: same day - P1D: 1 day before - P3D: 3 days before - P7D: a week before + PT0S: dezelfde dag + P1D: 1 dag ervoor + P3D: 3 dagen ervoor + P7D: een week ervoor overdue: - P1D: every day - P3D: every 3 days - P7D: every week + P1D: elke dag + P3D: elke 3 dagen + P7D: elke week reasons: mentioned: title: 'Genoemd' @@ -670,7 +670,7 @@ nl: click_to_switch_to_project: 'Project: %{projectname}' confirm_template_load: 'Switching the template will reload the page and you will lose all input to this form. Continue?' use_template: "Sjabloon gebruiken" - no_template_selected: "(None)" + no_template_selected: "(Geen)" copy: copy_options: "Copy options" autocompleter: @@ -704,8 +704,8 @@ nl: title: 'E-mail herinneringen' pause: label: 'Temporarily pause daily email reminders' - first_day: 'First day' - last_day: 'Last day' + first_day: 'Eerste dag' + last_day: 'Laatste dag' text_are_you_sure: "Weet u het zeker?" text_data_lost: "Alle ingevoerde gegevens zullen verloren gaan." types: @@ -899,7 +899,7 @@ nl: click_on_show_relations_to_open_gantt: 'Click on "%{button_name}" for GANTT overview.' show_relations: 'Show relations' ignore_non_working_days: - title: 'Working days only' + title: 'Alleen werkdagen' description_filter: "Filter" description_enter_text: "Tekst invoeren" description_options_hide: "Verberg opties" @@ -988,7 +988,7 @@ nl: label_content: "Klik hier om het menu overslaan en ga naar de inhoud" placeholders: default: "-" - date: "Select date" + date: "Datum selecteren" query: column_names: "Kolommen" group_by: "Groepeer resultaten op" @@ -1000,7 +1000,7 @@ nl: move_column_left: "Verplaats kolom naar links" move_column_right: "Verplaats kolom naar rechts" hide_column: "Verberg kolom" - insert_columns: "Insert columns" + insert_columns: "Kolommen invoegen" filters: "Filters" display_sums: "Bedragen weergeven" confirm_edit_cancel: "Weet u zeker dat u wilt stoppen met het bewerken van de naam van deze weergave? De Titel zal terug naar vorige waarde worden ingesteld." diff --git a/config/locales/crowdin/js-no.yml b/config/locales/crowdin/js-no.yml index 6a56fdd11901..4de1fbe7e84f 100644 --- a/config/locales/crowdin/js-no.yml +++ b/config/locales/crowdin/js-no.yml @@ -93,7 +93,7 @@ button_save: "Lagre" button_settings: "Innstillinger" button_uncheck_all: "Avmerk alle" - button_update: "Oppdatèr" + button_update: "Oppdater" button_export-pdf: "Last ned PDF" button_export-atom: "Download Atom" button_create: "Opprett" @@ -456,7 +456,7 @@ label_this_week: "denne uken" label_today: "I dag" label_time_entry_plural: "Tid brukt" - label_up: "Up" + label_up: "Opp" label_user_plural: "Brukere" label_activity_show_only_comments: "Show activities with comments only" label_activity_show_all: "Show all activities" @@ -572,7 +572,7 @@ facets: unread: 'Unread' unread_title: 'Show unread' - all: 'All' + all: 'Alle' all_title: 'Vis alle' center: label_actor_and: 'og' diff --git a/config/locales/crowdin/js-zh-TW.yml b/config/locales/crowdin/js-zh-TW.yml index e5e777d35435..dfbaec2170a1 100644 --- a/config/locales/crowdin/js-zh-TW.yml +++ b/config/locales/crowdin/js-zh-TW.yml @@ -713,7 +713,7 @@ zh-TW: reset_title: "重設表單配置" confirm_reset: > 警告: 確實要重置表單配置嗎?這將重置屬性到其預設組, 並禁用所有自訂欄位。 - upgrade_to_ee: "Upgrade to Enterprise on-premises edition" + upgrade_to_ee: "升級至地端企業版" upgrade_to_ee_text: "Wow! If you need this add-on you are a super pro! Would you mind supporting us OpenSource developers by becoming an Enterprise edition client?" more_information: "更多資訊" nevermind: "無視" diff --git a/config/locales/crowdin/ka.yml b/config/locales/crowdin/ka.yml index 184afe819607..77ffc77407ed 100644 --- a/config/locales/crowdin/ka.yml +++ b/config/locales/crowdin/ka.yml @@ -78,7 +78,7 @@ ka: book_now: 'Book now' get_quote: 'Get a quote' buttons: - upgrade: "Upgrade now" + upgrade: "ახლავე განაახლე" contact: "Contact us for a demo" enterprise_info_html: "is an Enterprise add-on." upgrade_info: "Please upgrade to a paid plan to activate and start using it in your team." @@ -577,7 +577,7 @@ ka: subproject: "Subproject" time_entries: "Log time" type: "Type" - version: "Version" + version: "ვერსია" watcher: "Watcher" 'doorkeeper/application': uid: "Client ID" @@ -903,7 +903,7 @@ ka: other: "Roles" type: "Type" user: "User" - version: "Version" + version: "ვერსია" wiki: "Wiki" wiki_page: "Wiki page" workflow: "Workflow" @@ -976,7 +976,7 @@ ka: role: "Role" roles: "Roles" start_date: "Start date" - status: "Status" + status: "სტატუსი" subject: "Subject" summary: "Summary" title: "Title" @@ -986,7 +986,7 @@ ka: uploader: "Uploader" user: "User" value: "Value" - version: "Version" + version: "ვერსია" work_package: "Work package" backup: failed: "Backup failed" @@ -1906,7 +1906,7 @@ ka: label_start_to_end: "start to end" label_start_to_start: "start to start" label_statistics: "Statistics" - label_status: "Status" + label_status: "სტატუსი" label_stay_logged_in: "Stay logged in" label_storage_free_space: "Remaining disk space" label_storage_used_space: "Used disk space" @@ -2076,6 +2076,7 @@ ka: more_to_see: one: 'There is 1 more work package with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' @@ -2806,7 +2807,7 @@ ka: type: "Type" due_date: "End date" name: "Name" - status: "Status" + status: "სტატუსი" start_date: "Start date" columns: "Columns" comparisons: "Comparisons" diff --git a/config/locales/crowdin/ko.yml b/config/locales/crowdin/ko.yml index f637d3a206a5..0d78641ef653 100644 --- a/config/locales/crowdin/ko.yml +++ b/config/locales/crowdin/ko.yml @@ -2057,6 +2057,7 @@ ko: mentioned_by: '%{user} 님이 코멘트에서 회원님을 멘션했습니다.' more_to_see: other: '알림이 있는 작업 패키지가 %{count}개 더 있습니다.' + open_in_browser: 'Open in browser' reason: watched: '지켜봄' assigned: '할당됨' diff --git a/config/locales/crowdin/lol.yml b/config/locales/crowdin/lol.yml index 04b531749397..3f3a4ed6f6bb 100644 --- a/config/locales/crowdin/lol.yml +++ b/config/locales/crowdin/lol.yml @@ -2053,6 +2053,7 @@ lol: more_to_see: one: 'crwdns799420:1crwdne799420:1' other: 'crwdns799420:5%{count}crwdne799420:5' + open_in_browser: 'crwdns858055:0crwdne858055:0' reason: watched: 'crwdns799422:0crwdne799422:0' assigned: 'crwdns799424:0crwdne799424:0' diff --git a/config/locales/crowdin/lt.yml b/config/locales/crowdin/lt.yml index 3cb1d94905cc..7a13f17be322 100644 --- a/config/locales/crowdin/lt.yml +++ b/config/locales/crowdin/lt.yml @@ -49,7 +49,7 @@ lt: main-menu-border-color: "Pagrindinio meniu kraštinės" custom_colors: "Pasirinktinės spalvos" customize: "Tinkinkite jūsų OpenProject naudodami savo logotipą ir spalvas." - enterprise_notice: "As a special 'Thank you!' for their financial contribution to develop OpenProject, this tiny add-on is only available for Enterprise edition support subscribers." + enterprise_notice: "Kaip specialus „AČIŪ!“ už finansinę paramą kuriant OpenProject, šį mažytį priedą galima naudoti tik „Enterprise Edition“ paramos prenumeratoriams." enterprise_more_info: "Pastaba: panaudotas logotipas bus viešai prieinamas." manage_colors: "Redaguoti spalvos pasirinkimo variantus" instructions: @@ -64,15 +64,15 @@ lt: main-menu-bg-color: "Kairiojo šoninio meniu fono spalva." theme_warning: Temos keitimas perrašys jūsų pritaikytą stilių. Ankstesnis dizainas bus prarastas. Ar tikrai norite tęsti? enterprise: - upgrade_to_ee: "Upgrade to the Enterprise edition" - add_token: "Upload an Enterprise edition support token" + upgrade_to_ee: "Pagerinti į Enterprise versiją" + add_token: "Įkelti Enterprise paramos raktą" delete_token_modal: - text: "Are you sure you want to remove the current Enterprise edition token used?" + text: "Ar tikrai norite išimti dabar naudojamą Enterprise versijos žetoną?" title: "Trinti žetoną" replace_token: "Pakeisti savo esamą paramos raktą" - order: "Order Enterprise on-premises edition" - paste: "Paste your Enterprise edition support token" - required_for_feature: "This add-on is only available with an active Enterprise edition support token." + order: "Užsisakykite Enterprise versiją pas save" + paste: "Įklijuokite savo Enterprise versijos paramos žetoną" + required_for_feature: "Šis priedas galimas tik su aktyviu Enterprise versijos palaikymo žetonu." enterprise_link: "Norėdami gauti daugiau informacijos, spustelėkite čia." start_trial: 'Pradėti bandomąjį laikotarpį' book_now: 'Užsakyti dabar' @@ -80,7 +80,7 @@ lt: buttons: upgrade: "Užsisakykite dabar" contact: "Susisiekite su mumis dėl demonstracijos" - enterprise_info_html: "is an Enterprise add-on." + enterprise_info_html: "yra Enterprise priedas." upgrade_info: "Prašome atsinaujinti į mokamą planą, kad aktyvuotumėte ir pradėtumėte ji naudoti savo komandoje." journal_aggregation: explanation: @@ -98,7 +98,7 @@ lt: add_new: 'Pridėti pagalbos tekstą' edit: "Redaguoti pagalbos tekstą atributui: %{attribute_caption}" enterprise: - description: 'Provide additional information for attributes (incl. custom fields) of work packages and projects. Help texts are displayed when users click on the question mark symbol next to input fields in projects and work packages.' + description: 'Teikia papildomą informaciją apie darbo paketų ir projektų atributus (įskaitant savus laukus).' auth_sources: index: no_results_content_title: Šiuo metu nėra jokių autentifikacijos būdų. @@ -136,7 +136,7 @@ lt: Jei pažymėsite šį lauką, OpenProject automatiškai sukurs naujus naudotojus pagal LDAP informaciją, kai tik šie naudotojai pirmą kartą prisijungs prie OpenProject. Nežymėkite šio lauko, jei norite, kad tik jau sukurti naudotojai galėtų prisijungti pasinaudodami LDAP! connection_encryption: 'Jungties šifravimas' - encryption_details: 'LDAPS / STARTTLS options' + encryption_details: 'LDAPS / STARTTLS parinktys' system_account: 'Sistemos paskyra' system_account_legend: | OpenProject reikia tik-skaitymui skirto sisteminio naudotojo kitų naudotojų ir grupių patikrinimui jūsų LDAP medyje. @@ -149,16 +149,16 @@ lt: plain: 'joks' simple_tls: 'LDAPS' start_tls: 'STARTTLS' - plain_description: "Opens an unencrypted connection to the LDAP server. Not recommended for production." - simple_tls_description: "Use LDAPS. Requires a separate port on the LDAP server. This mode is often deprecated, we recommend using STARTTLS whenever possible." - start_tls_description: "Sends a STARTTLS command after connecting to the standard LDAP port. Recommended for encrypted connections." + plain_description: "Atidaro nešifruotą jungtį su LDAP serveriu. Nerekomenduojama gamybai." + simple_tls_description: "Naudoti LDAPS. Reikalauja atskiro prievado LDAP serveryje. Šis režimas dažnai būna nebegaliojantis, mes rekomenduojame kai tik galima, naudoti STARTTLS." + start_tls_description: "Siunčia STARTTLS komandą po prisijungimo prie standartinio LDAP prievado. Rekonenduojama šifruotoms jungtims." section_more_info_link_html: > Ši skiltis apie šio LDAP autentifikacijos šaltinio jungties saugumą. Daugiau informacijos rasite Net::LDAP dokumentacijoje. tls_options: - verify_peer: "Verify SSL certificate" + verify_peer: "Tikrinti SSL sertifikatą" verify_peer_description_html: > - Enables strict SSL verification of the certificate trusted chain.
Warning: Unchecking this option disables SSL verification of the LDAP server certificate. This exposes your connection to Man in the Middle attacks. - tls_certificate_description: "If the LDAP server certificate is not in the trust sources of this system, you can add it manually here. Enter a PEM X509 certifiate string." + Įjungia griežtą SSL sertifikatų pasitikėjimo grandinių tikrinimą.
Įspėjimas: išjungus šią parinktį išjungiamas LDAP serverio sertifikato SSL tikrinimas. Tai padaro jūsų jungtis pažeidžiamomis Žmogaus per vidurį atakoms. + tls_certificate_description: "Jei LDAP serverio sertifikatas neįtrauktas į šios sistemos pasitikimuosius, jūs galite jį pridėti rankiniu būdu čia. Įveskite PEM X509 sertifikato eilutę." forums: show: no_results_title_text: Šiuo metu forume nėra įrašų. @@ -229,7 +229,7 @@ lt: failed_text: "Projekto %{name} užsakytas naikinimas nepavyko. Projektas liko suarchyvuotas." completed: "Projekto %{name} naikinimas baigtas" completed_text: "Prašymas naikinti projektą „%{name}“ buvo užbaigtas." - completed_text_children: "Additionally, the following subprojects have been deleted:" + completed_text_children: "Papildomai buvo ištrinti ir šie subprojektai:" index: open_as_gantt: 'Atidaryti kaip Gantt diagramą' open_as_gantt_title: "Naudokite šį mygtuką visų šiame puslapyje matomų projektų darbo užduočių Gantt'o diagramai sugeneruoti." @@ -289,7 +289,7 @@ lt: upsale: title: Statytiniai naudotojai description: > - Placeholder users are a way to assign work packages to users who are not part of your project. They can be useful in a range of scenarios; for example, if you need to track tasks for a resource that is not yet named or available, or if you don’t want to give that person access to OpenProject but still want to track tasks assigned to them. + Statytiniai naudotojai leidžia paskirti darbo paketus naudotojams, kurių nėra jūsų projekte. Jie gali būti naudingi įvairiose situacijose. Pavyzdžiui jums reikia sekti užduotis resursų, kurie dar neįvardinti ar negalimi arba jūs nenorite duoti konkrečiam asmeniui prieigos prie OpenProject, bet vis tiek norite sekti jiems paskirtas užduotis. prioritiies: edit: priority_color_text: | @@ -320,7 +320,7 @@ lt: settings: "Nustatymai" form_configuration: "Formos konfigūracija" more_info_text_html: > - Enterprise edition allows you to customize form configuration with these additional add-ons:
+ Enterprise versija leidžia jums keisti formos konfigūraciją naudojant papildomus priedus:
projects: "Projektai" enabled_projects: "Įgalinti projektai" edit_query: "Keisti lentelę" @@ -428,7 +428,7 @@ lt: host: "Hostas" onthefly: "Automatinis naudotojų kūrimas" port: "Jungtis" - tls_certificate_string: "LDAP server SSL certificate" + tls_certificate_string: "LDAP serverio SSL sertifikatas" changeset: repository: "Repozitorija" comment: @@ -600,7 +600,7 @@ lt: confirmation: "nesutampa su %{attribute}." could_not_be_copied: "%{dependency} negali (pilnai) būti nukopijuota(s)." does_not_exist: "neegzistuoja." - error_enterprise_only: "%{action} is only available in the OpenProject Enterprise edition" + error_enterprise_only: "%{action} galimas tik OpenProject Enterprise versijoje" error_unauthorized: "negali būti pasiektas." error_readonly: "bandytas įrašyti, bet įrašyti nebuvo galima." email: "nėra tinkamas el. pašto adresas." @@ -644,13 +644,13 @@ lt: unknown_property_nested: "yra nežinomas kelias „%{path}“." unremovable: "negali būti pašalintas." url_not_secure_context: > - is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. + neteikia „Saugaus konteksto“. Arba naudokite HTTPS, arba atgalinį adresą, tokį kaip localhost. wrong_length: "yra neteisingo ilgio (turi būti %{count} simbolių)." models: auth_source: attributes: tls_certificate_string: - invalid_certificate: "The provided SSL certificate is invalid: %{additional_message}" + invalid_certificate: "Pateiktas SSL sertifikatas netinkamas: %{additional_message}" format: "%{message}" attachment: attributes: @@ -681,7 +681,7 @@ lt: fragment_present: 'negali turėti fragmento.' invalid_uri: 'turi būti tinkamas URI.' relative_uri: 'turi būti absoliutus URI.' - secured_uri: 'is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost.' + secured_uri: 'neteikia „Saugaus konteksto“. Arba naudokite HTTPS, arba atgalinį adresą, tokį kaip localhost.' forbidden_uri: 'yra uždraustas serverio.' scopes: not_match_configured: "neatitinka galimų apimčių." @@ -1330,11 +1330,11 @@ lt: ee: upsale: form_configuration: - description: "Customize the form configuration with these additional add-ons:" + description: "Pritaikyti sau formos konfigūraciją su šiais naujais priedais:" add_groups: "Pridėti naujas atributų grupes" rename_groups: "Pervadinti atributų grupes" project_filters: - description_html: "Filtering and sorting on custom fields is an Enterprise edition add-on." + description_html: "Filtravimas ir rikiavimas pagal pritaikytus laukus yra tik Enterprise versijos priedas." enumeration_activities: "Laiko sekimo veiklos" enumeration_work_package_priorities: "Darbų paketo prioritetai" enumeration_reported_project_statuses: "Pranešta projekto būsena" @@ -1356,7 +1356,7 @@ lt: error_cookie_missing: 'OpenProject sausainėlis nerastas. Prašome patikrinti, ar sausainėliai yra įgalinti, nes kitaip aplikacija tinkamai neveiks.' error_custom_option_not_found: "Galimybė neegzistuoja." error_enterprise_activation_user_limit: "Jūsų paskyra negali būti aktyvuota (pasiektas vartotojų limitas). Prašome kreiptis į savo sistemos administratorių." - error_enterprise_token_invalid_domain: "The Enterprise edition is not active. Your Enterprise token's domain (%{actual}) does not match the system's host name (%{expected})." + error_enterprise_token_invalid_domain: "Enterprise versija neaktyvi. Jūsų Enterprise žetono domenas (%{actual}) nesutampa su jūsų sistemos serverio vardu (%{expected})." error_failed_to_delete_entry: 'Šio įrašo nepavyko panaikinti.' error_in_dependent: "Klaida bandant pakeisti priklausomą objektą: %{dependent_class} #%{related_id} - %{related_subject}: %{error}" #%{related_id} - %{related_subject}: %{error}" error_in_new_dependent: "Klaida bandant sukurti priklausomą objektą: %{dependent_class} - %{related_subject}: %{error}" @@ -1447,10 +1447,10 @@ lt: blocks: community: "OpenProject community" upsale: - title: "Upgrade to Enterprise edition" + title: "Pagerinti į Enterprise versiją" more_info: "Daugiau informacijos" links: - upgrade_enterprise_edition: "Upgrade to Enterprise edition" + upgrade_enterprise_edition: "Pagerinti į Enterprise versiją" postgres_migration: "Migruojame jūsų instaliaciją į PostgreSQL" user_guides: "Vartotojo vadovai" faq: "D.U.K" @@ -1473,7 +1473,7 @@ lt: admin: mail_notification: "El. pašto priminimai" mails_and_notifications: "E-paštas ir pranešimai" - aggregation: 'Aggregation' + aggregation: 'Agregacija' api_and_webhooks: "API ir tinklo jungtys" quick_add: label: "Atidaryti greitą pridėjimo meniu" @@ -1666,7 +1666,7 @@ lt: label_enumerations: "Enumeratoriai" label_enterprise: "Enterprise" label_enterprise_active_users: "%{current}/%{limit} aktyviai naudojami naudotojai" - label_enterprise_edition: "Enterprise edition" + label_enterprise_edition: "Enterprise versija" label_environment: "Aplinka" label_estimates_and_time: "Sąmatos ir laikas" label_equals: "yra" @@ -1719,7 +1719,7 @@ lt: label_index_by_title: "Rūšiuoti pagal pavadinimą" label_information: "Informacija" label_information_plural: "Informacija" - label_installation_guides: 'Installation guides' + label_installation_guides: 'Diegimo gidai' label_integer: "Sveikasis skaičius" label_internal: "Vidinis" label_introduction_video: "Įvado video" @@ -2109,6 +2109,7 @@ lt: few: 'Yra dar %{count} darbų paketai su pranešimais.' many: 'Yra dar %{count} darbų paketai su pranešimais.' other: 'Yra dar %{count} darbų paketų su pranešimais.' + open_in_browser: 'Atidaryti naršyklėje' reason: watched: 'Stebimas' assigned: 'Paskirtas' @@ -2242,11 +2243,9 @@ lt: notice_successful_delete: "Sėkmingas panaikinimas." notice_successful_update: "Sėkmingai atnaujinta." notice_successful_update_custom_fields_added_to_project: | - Successful update. The custom fields of the activated types are automatically activated - on the work package form. See more. + Sėkmingas atnaujinimas. Savi aktyvuotų tipų laukai automatiškai aktivuoti darbo paketų formose. Skaitykite daugiau. notice_successful_update_custom_fields_added_to_type: | - Successful update. The active custom fields are automatically activated for - the associated projects of this type. + Sėkmingas atnaujinimas. Aktyvūs savi laukai automatiškai aktyvuoti susijusiems šio tipo projektams. notice_to_many_principals_to_display: "Per daug rezultatų. Susiaurinkite paiešką pradėdami įvesti naujo nario (ar grupės) pavadinimą." notice_user_missing_authentication_method: Vartotojas dar nepasirinko slaptažodžio ar kitokio būdo prisijungimui. notice_user_invitation_resent: Pakvietimas buvo nusiųstas į %{email}. @@ -2281,7 +2280,7 @@ lt: tb: "TB" onboarding: heading_getting_started: "Gauti aprašymą" - text_getting_started_description: "Get a quick overview of project management and team collaboration with OpenProject. You can restart this video from the help menu." + text_getting_started_description: "Gaukite greitą apžvalgą apie projektų valdymą ir komandos bendradarbiavimą naudojant OpenProject. Šį video galite paleisti iš naujo per pagalbos meniu." welcome: "Jus sveikina %{app_title}" select_language: "Pasirinkite kalbą" permission_add_work_package_notes: "Pridėti pastabų" @@ -2316,14 +2315,14 @@ lt: permission_edit_own_time_entries: "Redaguoti savo laiko įrašus" permission_edit_project: "Redaguoti projektą" permission_edit_reportings: "Redaguoti ataskaitas" - permission_edit_time_entries: "Edit time logs for other users" + permission_edit_time_entries: "Keitimo laiko žurnalai kitiems naudotojams" permission_edit_timelines: "Redaguoti tvarkaraščius" permission_edit_wiki_pages: "Redaguoti wiki puslapius" permission_export_work_packages: "Eksportuoti darbų paketus" permission_export_wiki_pages: "Eksportuoti wiki puslapius" permission_list_attachments: "Pateikti priedus" - permission_log_own_time: "Log own time" - permission_log_time: "Log time for other users" + permission_log_own_time: "Registruoti savo laiką" + permission_log_time: "Registruoti kitų naudotojų laiką" permission_manage_forums: "Valdyti forumus" permission_manage_categories: "Valdyti darbų paketo kategorijas" permission_manage_work_package_relations: "Valdyti darbų paketo ryšius" @@ -2479,11 +2478,11 @@ lt: storage: not_available: "Disko vietos naudojimas nėra prieinamas šiai repozitorijai." update_timeout: "Laikyti paskiausią reikalingą disko vietos informaciją repozitorijai N minutes (-ių). Kadangi reikalingos vietos repozitorijai skaičiavimas gali būti reiklus resursams, minučių reikšmės didinimas gali stipriai sumažinti sistemos našumą." - oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" - oauth_application_details_link_text: "Go to settings page" - setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " - setup_documentation_details_link_text: "File Storages setup" - show_warning_details: "To use this file storage remember to activate the module and the specific storage in the project settings of each desired project." + oauth_application_details: "Kliento slapta reikšmė daugiau nebebus prieinama po to, kai uždarysite šį langą. Prašome nukopijuoti šias reikšmes į Nextcloud OpenProject integracijos nustatymus:" + oauth_application_details_link_text: "Eiti į nustatymų puslapį" + setup_documentation_details: "Jei jums reikia pagalbos konfigūruojant naują failų saugyklą, prašome skaityti dokumentaciją: " + setup_documentation_details_link_text: "Failų saugyklos nustatymas" + show_warning_details: "Norėdami naudoti šią failų talpyklą, nepamirškite aktyvuoti modulį ir konkrečią saugyklą projekto nustatymuose kiekvienam reikiamam projektui." subversion: existing_title: "Esama Subversion repozitorija" existing_introduction: "Jei jau turite esamą Subversion repozitoriją, Jūs galite ją susieti su OpenProject, kad galėtumėte informaciją pasiekti iš sistemos vidaus." @@ -2527,7 +2526,7 @@ lt: setting_smtp_authentication: "SMTP autentifikacija" setting_smtp_user_name: "SMTP vartotojo vardas" setting_smtp_password: "SMTP slaptažodis" - setting_smtp_domain: "SMTP HELO domain" + setting_smtp_domain: "SMTP HELO domenas" setting_activity_days_default: "Projekto veiklos atvaizduojamų dienų skaičius" setting_app_subtitle: "Programos paantraštė" setting_app_title: "Programos pavadinimas" @@ -2575,7 +2574,7 @@ lt: setting_work_package_list_default_columns: "Pagal nutylėjimą rodyti" setting_work_package_properties: "Darbų paketo ypatybės" setting_work_package_startdate_is_adddate: "Naudoti dabartinę datą kaip naujų darbų paketų pradžios datą" - setting_work_packages_projects_export_limit: "Work packages / Projects export limit" + setting_work_packages_projects_export_limit: "Darbo paketų / Projektų eksporto limitas" setting_journal_aggregation_time_minutes: "Laikais, per kurį įvykę naudotojo veiksmai yra grupuojami" setting_log_requesting_user: "Įrašyti vartotojo vardą, prisijungimo vardą, e. pašto adresą visiems prašymams" setting_login_required: "Reikalinga autentifikacija" @@ -2672,7 +2671,7 @@ lt: text_access_token_hint: "Prieigos raktai leidžia išorinėms aplikacijoms pasiekti OpenProject resursus." text_analyze: "Toliau analizuoti: %{subject}" text_are_you_sure: "Ar esate įsitikinę?" - text_are_you_sure_continue: "Are you sure you want to continue?" + text_are_you_sure_continue: "Ar tikrai norite tęsti?" text_are_you_sure_with_children: "Ištrinti darbų paketą ir visus jo vaikų paketus?" text_assign_to_project: "Priskirti projektui" text_form_configuration: > @@ -2688,11 +2687,11 @@ lt: text_custom_field_hint_activate_per_project_and_type: > Pritaikyti laukeliai turi būti kiekviename darbų paketų tipe ir kiekviename projekte. text_wp_custom_field_html: > - The Enterprise edition will add these additional add-ons for work packages' custom fields:
+ Enterprise versija pridės šiuos papildomus priedus darbo paketų saviems laukams:
text_wp_status_read_only_html: > - The Enterprise edition will add these additional add-ons for work packages' statuses fields:
+ Enterprise versija leis šiuos papildomus darbo paketų priedus būsenos laukams:
text_project_custom_field_html: > - The Enterprise edition will add these additional add-ons for projects' custom fields:
+ Enterprise versija pridės šiuos papildomus priedus projekto saviems laukams:
text_custom_logo_instructions: > Baltas logotipas su permatomu fonu yra rekomenduojamas. Gariausiems rezultatams pasiekti tradiciniuose ir retina ekranuose, būkite įsitikinę, kad paveikslėlio dimensijos yra 460px 60px. text_custom_favicon_instructions: > @@ -2998,14 +2997,14 @@ lt: warning_user_limit_reached: > Pasiektas vartotojų limitas. Jūs negalite aktyvuoti daugiau vartotojų. Prašome atnaujinti planą arba blokuokite esamus vartotojus norėdami aktyvuoti naujus vartotojus. 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. + Jūs pasiekėte naudotojų ribą (%{current}/%{max} aktyvūs naudotojai). Susisiekite su sales@openproject.com norėdami atnaujinti savo Enterprise versijos planą arba pridėti papildomų naudotojų. warning_protocol_mismatch_html: > warning_bar: https_mismatch: - title: 'HTTPS mode setup mismatch' + title: 'HTTPS režimo nustatymo nesutapimas' text_html: > - Your application is running with HTTPS mode set to %{set_protocol}, but the request is an %{actual_protocol} request. This will result in errors! You will need to set the following configuration value: %{setting_value}. Please see the installation documentation on how to set this configuration. + Jūsų aplikacija veikia su HTTPS režimo nustatymu %{set_protocol}, bet užklausa yra %{actual_protocol}. Dėl to kils klaidų! Jums reikia nustatyti šią konfigūracijos reikšmę: %{setting_value}. Daugiau informacijos apie šios konfigūracijos keitimą rasite diegimo dokumentacijoje. hostname_mismatch: title: 'Neatitinka serverio vardo nustatymai' text_html: > @@ -3026,25 +3025,25 @@ lt: title: "Ištrinti darbų paketą" working_days: info: > - Define days considered part of the work week
Days that are not selected are skipped when scheduling work packages (and not included in the day count). These can be overriden at a work-package level. + Nustatykite dienas, kurios laikomos darbo savaitės dalimi
Nepažymėtos dienos praleidžiamos skaičiuojant darbo paketus (ir neįtraukiamos į dienų skaičių). Šituos nustatymus galima permušti darbo paketo lygyje. instance_wide_info: > - Specific non-working days (holidays and closures)
Dates added to the list below are considered non-working and skipped when scheduling work packages. - change_button: "Change working days" + Konkrečios nedarbo dienos (atostogos ir išeiginės)
Į žemiau esantį sąrašą pridėtos dienos laikomos nedarbo dienomis ir praleidžiamos planuojant darbo paketus. + change_button: "Keisti darbo dienas" warning: > - Changing which days of the week are considered working days or non-working days can affect the start and finish days of all work packages in all projects in this instance.
Please note that changes are only applied after you click on the apply changes button. + Keičiant dienas, kurios yra darbo ar nedarbo dienos, gali keistis visų projektų darbo paketų pradžios ir pabaigos dienos.
Prašome atkreipti dėmesį, kad pakeitimai pritaikomi tik po to, kai jūs paspaudžiate mygtuką pritaikyti. journal_note: - changed: _**Working days** changed (%{changes})._ + changed: _**Darbo dienos** pakeistos (%{changes})._ days: - working: "%{day} is now working" - non_working: "%{day} is now non-working" + working: "%{day} dabar yra darbo" + non_working: "%{day} dabar yra nedarbo" dates: - working: "%{date} is now working" - non_working: "%{date} is now non-working" + working: "%{date} dabar yra darbo" + non_working: "%{date} dabar yra nedarbo" nothing_to_preview: "Nėra ką rodyti" api_v3: attributes: lock_version: "Užrakto versija" - property: 'Property' + property: 'Savybė' errors: code_400: "Bloga užklausa: %{message}" code_401: "Jums reikia būti autentifikuotam, kad galėtumėte pasiekti šį resursą." @@ -3190,49 +3189,49 @@ lt: my_registered_applications: "Registruotos OAuth aplikacijos" oauth_client: urn_connection_status: - connected: "Connected" + connected: "Prisijungta" error: "Klaida" - failed_authorization: "Authorization failed" + failed_authorization: "Autorizavimas nepavyko" labels: - label_oauth_integration: "OAuth2 integration" + label_oauth_integration: "OAuth2 integracija" label_redirect_uri: "Peradresavimo URI" - label_request_token: "Request token" - label_refresh_token: "Refresh token" + label_request_token: "Užklausos žetonas" + label_refresh_token: "Atnaujinti žetoną" errors: - oauth_authorization_code_grant_had_errors: "OAuth2 returned an error" - oauth_reported: "OAuth2 provider reported" - oauth_returned_error: "OAuth2 returned an error" - oauth_returned_json_error: "OAuth2 returned a JSON error" - oauth_returned_http_error: "OAuth2 returned a network error" - oauth_returned_standard_error: "OAuth2 returned an internal error" - wrong_token_type_returned: "OAuth2 returned a wrong type of token, expecting AccessToken::Bearer" - oauth_issue_contact_admin: "OAuth2 reported an error. Please contact your system administrator." - oauth_client_not_found: "OAuth2 client not found in 'callback' endpoint (redirect_uri)." + oauth_authorization_code_grant_had_errors: "OAuth2 grąžino klaidą" + oauth_reported: "OAuth2 tiekėjas pranešė" + oauth_returned_error: "OAuth2 grąžino klaidą" + oauth_returned_json_error: "OAuth2 grąžino JSON klaidą" + oauth_returned_http_error: "OAuth2 grąžino tinklo klaidą" + oauth_returned_standard_error: "OAuth2 grąžino vidinę klaidą" + wrong_token_type_returned: "OAuth2 grąžino netinkamą žetono tipą, tikėtasi AccessToken::Bearer" + oauth_issue_contact_admin: "OAuth2 grąžino klaidą. Prašome susisiekti su jūsų sistemos administratoriumi." + oauth_client_not_found: "OAuth2 klientas nerastas „callback“ taške (redirect_uri)." refresh_token_called_without_existing_token: > - Internal error: Called refresh_token without a previously existing token. - refresh_token_updated_failed: "Error during update of OAuthClientToken" + Vidinė klaida: refresh_token pakviestas be iki to esančio žetono. + refresh_token_updated_failed: "Klaida atnaujinant OAuthClientToken" oauth_client_not_found_explanation: > - This error appears after you have updated the client_id and client_secret in OpenProject, but haven't updated the 'Return URI' field in the OAuth2 provider. - oauth_code_not_present: "OAuth2 'code' not found in 'callback' endpoint (redirect_uri)." + Ši klaida pasirodo po to, kai jūs pakeičiate OpenProject client_id ir client_secret, bet nepakeičiate „Grąžinamo URI“ lauko OAuth2 tiekėjo pusėje. + oauth_code_not_present: "OAuth2 „code“ nerastas „callback“ taške (redirect_uri)." oauth_code_not_present_explanation: > - This error appears if you have selected the wrong response_type in the OAuth2 provider. Response_type should be 'code' or similar. - oauth_state_not_present: "OAuth2 'state' not found in 'callback' endpoint (redirect_uri)." + Ši klaida pasirodo, jei jūs parinkote netinkamą OAuth2 tiekėjo response_type. Response_type privalo būti „code“ ar panašus. + oauth_state_not_present: "OAuth2 „state“ nerastas „callback“ taške (redirect_uri)." oauth_state_not_present_explanation: > - The 'state' is used to indicate to OpenProject where to continue after a successful OAuth2 authorization. A missing 'state' is an internal error that may appear during setup. Please contact your system administrator. + „State“ naudojama nurodyti OpenProject, kur tęsti po sėkmingos OAuth2 autorizacijos. Trūkstamas „state“ yra vidinė klaida, kuri gali atsitikti nustatymo metu. Prašome susisiekti su jūsų sistemos administratoriumi. rack_oauth2: - client_secret_invalid: "Client secret is invalid (client_secret_invalid)" + client_secret_invalid: "Kliento paslaptis netinkama (client_secret_invalid)" invalid_request: > - OAuth2 Authorization Server responded with 'invalid_request'. This error appears if you try to authorize multiple times or in case of technical issues. - invalid_response: "OAuth2 Authorization Server provided an invalid response (invalid_response)" - invalid_grant: "The OAuth2 Authorization Server asks you to reauthorize (invalid_grant)." - invalid_client: "The OAuth2 Authorization Server doesn't recognize OpenProject (invalid_client)." - unauthorized_client: "The OAuth2 Authorization Server rejects the grant type (unauthorized_client)" - unsupported_grant_type: "The OAuth2 Authorization Server asks you to reauthorize (unsupported_grant_type)." - invalid_scope: "You are not allowed to access the requested resource (invalid_scope)." + OAuth2 autorizacijos serveris atsakė „netinkama užklausa“. Ši klaida įvyksta, kai jūs bandote autorizuoti kelis kartus arba dėl techninių problemų. + invalid_response: "OAuth2 autorizacijos serveris pateikė netinkamą atsakymą (invalid_response)" + invalid_grant: "OAuth2 autorizacijos serveris prašo jūsų autorizuotis iš naujo (invalid_grant)." + invalid_client: "OAuth2 autorizacijos serveris neatpažįsta OpenProject (invalid_client)." + unauthorized_client: "OAuth2 autorizacijos serveris nepriima privilegijos tipo (unauthorized_client)" + unsupported_grant_type: "OAuth2 autorizacijos serveris prašo jūsų autorizuotis iš naujo (unsupported_grant_type)." + invalid_scope: "Jums neleidžiama prieiti prie prašomo resurso (invalid_scope)." http: request: - failed_authorization: "The server side request failed authorizing itself." - missing_authorization: "The server side request failed due to missing authorization information." + failed_authorization: "Serverio pusės užklausai nepavyko savęs autorizuoti." + missing_authorization: "Serverio pusės užklausa nepavyko dėl trūkstamos autorizacijos informacijos." response: - unexpected: "Unexpected response received." + unexpected: "Gautas netikėtas atsakas." you: jūs diff --git a/config/locales/crowdin/lv.yml b/config/locales/crowdin/lv.yml index 5c7ad9cbfc31..5425a6cbbb5f 100644 --- a/config/locales/crowdin/lv.yml +++ b/config/locales/crowdin/lv.yml @@ -2089,6 +2089,7 @@ lv: zero: 'There are %{count} more work packages with notifications.' one: 'There is 1 more work package with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/mn.yml b/config/locales/crowdin/mn.yml index b6c9a3bedd08..020debdd2064 100644 --- a/config/locales/crowdin/mn.yml +++ b/config/locales/crowdin/mn.yml @@ -2076,6 +2076,7 @@ mn: more_to_see: one: 'There is 1 more work package with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/ne.yml b/config/locales/crowdin/ne.yml index e3a2d13eb5b1..7b8febf0cfc2 100644 --- a/config/locales/crowdin/ne.yml +++ b/config/locales/crowdin/ne.yml @@ -2076,6 +2076,7 @@ ne: more_to_see: one: 'There is 1 more work package with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/nl.yml b/config/locales/crowdin/nl.yml index c579c815ce6d..3693d7b6a4d3 100644 --- a/config/locales/crowdin/nl.yml +++ b/config/locales/crowdin/nl.yml @@ -335,7 +335,7 @@ nl: wiki: page_not_editable_index: De opgevraagde pagina bestaat (nog) niet. Je bent doorverwezen naar de index van alle wiki-pagina's. no_results_title_text: Er zijn momenteel geen wiki-pagina's. - print_hint: This will print the content of this wiki page without any navigation bars. + print_hint: Hiermee wordt de inhoud van deze wikipagina zonder navigatiebalk afgedrukt. index: no_results_content_text: Voeg een nieuwe wiki-pagina toe work_flows: @@ -346,8 +346,8 @@ nl: one: 'Een nakomend werkpakket' other: '%{count} werk pakket afstammelingen' bulk: - copy_failed: "The work packages could not be copied." - move_failed: "The work packages could not be moved." + copy_failed: "De werkpakketten konden niet gekopieerd worden." + move_failed: "De werkpakketten konden niet worden verplaatst." could_not_be_saved: "De volgende werkpakketten konden niet worden opgeslagen:" none_could_be_saved: "Geen van de %{total} werkpakketten konden worden bijgewerkt." x_out_of_y_could_be_saved: "%{failing} van de %{total} werkpakketten konden niet worden bijgewerkt terwijl %{success} kon." @@ -376,7 +376,7 @@ nl: account: delete: "Account Verwijderen" delete_confirmation: "Weet je zeker dat je dit account wilt verwijderen?" - deletion_pending: "Account has been locked and was scheduled for deletion. Note that this process takes place in the background. It might take a few moments until the user is fully deleted." + deletion_pending: "Account is vergrendeld en is ingepland voor verwijdering. Let op dat dit proces op de achtergrond plaatsvindt. Het kan even duren voordat de gebruiker volledig verwijderd is." deletion_info: data_consequences: other: "Van de gegevens die de gebruiker heeft gemaakt (bijvoorbeeld e-mail, voorkeuren, werkpakketten, wiki-inzendingen) zal zoveel mogelijk worden verwijderd. Let echter op dat gegevens zoals werkpakketten en wiki-items niet kunnen worden verwijderd zonder het belemmeren van het werk van de andere gebruikers. Dergelijke gegevens worden dus opnieuw toegewezen aan een account genaamd \"Verwijderde gebruiker\". Zodra de gegevens van elk verwijderd account zijn toegewezen aan dit account, zal het niet mogelijk zijn om gegevens die de gebruiker heeft gemaakt te onderscheiden van de gegevens van een ander verwijderd account." @@ -472,20 +472,20 @@ nl: roles: "Rollen" project: active_value: - true: "unarchived" + true: "Niet gearchiveerd" false: "gearchiveerd" identifier: "Identifier" latest_activity_at: "Laatste activiteit om" parent: "Subproject van" public_value: title: "Zichtbaarheid" - true: "public" - false: "private" + true: "Openbaar" + false: "Privé" queries: "Query 's" templated: "Projectsjabloon" templated_value: - true: "marked as template" - false: "unmarked as template" + true: "gemarkeerd als sjabloon" + false: "ongemarkeerd als sjabloon" types: "Typen" versions: "Versies" work_packages: "Werkpakketten" @@ -703,7 +703,7 @@ nl: non_working_day: attributes: date: - taken: "A non-working day already exists for %{value}." + taken: "Er bestaat al een niet-werkende dag voor %{value}." format: "%{message}" parse_schema_filter_params_service: attributes: @@ -716,7 +716,7 @@ nl: foreign_wps_reference_version: 'Werkpakketten in niet-onderliggende projecten verwijzen naar versies van het project of zijn afstammelingen.' attributes: base: - archive_permission_missing_on_subprojects: "You do not have the permissions required to archive all sub-projects. Please contact an administrator." + archive_permission_missing_on_subprojects: "U hebt niet de benodigde rechten om alle sub-projecten te archiveren. Neem contact op met een beheerder." types: in_use_by_work_packages: "nog steeds in gebruik door werkpakketten: %{types}" enabled_modules: @@ -790,7 +790,7 @@ nl: attributes: user_id: not_allowed_to_view: "is not allowed to view this resource." - locked: "is locked." + locked: "is vergrendeld." wiki_page: attributes: slug: @@ -1061,7 +1061,7 @@ nl: button_reset: "Herstel" button_rollback: "Terugdraaien naar deze versie" button_save: "Opslaan" - button_apply_changes: "Apply changes" + button_apply_changes: "Veranderingen doorvoeren" button_save_back: "Opslaan en terug" button_show: "Toon" button_sort: "Sorteren" @@ -1781,8 +1781,8 @@ nl: label_not_contains: "bevat geen" label_not_equals: "is niet" label_on: "op" - label_operator_all: "is not empty" - label_operator_none: "is empty" + label_operator_all: "is niet leeg" + label_operator_none: "is leeg" label_operator_equals_or: "is (OR)" label_operator_equals_all: "is (AND)" label_open_menu: "Menu openen" @@ -2073,6 +2073,7 @@ nl: more_to_see: one: 'Er is nog 1 werkpakket met meldingen.' other: 'Er zijn nog %{count} werkpakketten met meldingen.' + open_in_browser: 'Open in browser' reason: watched: 'Bekeken' assigned: 'Toegewezen' @@ -3003,7 +3004,7 @@ nl: api_v3: attributes: lock_version: "Vergrendel versie" - property: 'Property' + property: 'Eigendom' errors: code_400: "Verkeerd verzoek: %{message}" code_401: "U moet geauthenticeerd zijn om toegang te hebben tot deze resource." diff --git a/config/locales/crowdin/no.yml b/config/locales/crowdin/no.yml index e384a01082ee..b4d648d903db 100644 --- a/config/locales/crowdin/no.yml +++ b/config/locales/crowdin/no.yml @@ -2076,6 +2076,7 @@ more_to_see: one: 'There is 1 more work package with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/pl.yml b/config/locales/crowdin/pl.yml index 1ad55be4f15d..39710fb4022d 100644 --- a/config/locales/crowdin/pl.yml +++ b/config/locales/crowdin/pl.yml @@ -2109,6 +2109,7 @@ pl: few: 'Istnieją jeszcze %{count} pakiety robocze z powiadomieniami.' many: 'Istnieje jeszcze %{count} pakietów roboczych z powiadomieniami.' other: 'Istnieją jeszcze %{count} pakietów roboczych z powiadomieniami.' + open_in_browser: 'Open in browser' reason: watched: 'Obserwowane' assigned: 'Przypisane' diff --git a/config/locales/crowdin/pt.yml b/config/locales/crowdin/pt.yml index c873bdbcb164..08ac6cf4340f 100644 --- a/config/locales/crowdin/pt.yml +++ b/config/locales/crowdin/pt.yml @@ -2075,6 +2075,7 @@ pt: more_to_see: one: 'Há mais 1 pacote de trabalho com notificações.' other: 'Há mais %{count} pacotes de trabalho com notificações.' + open_in_browser: 'Open in browser' reason: watched: 'Assistido' assigned: 'Atribuído' diff --git a/config/locales/crowdin/ro.yml b/config/locales/crowdin/ro.yml index a0e4fafb7798..e7d6f4eebec6 100644 --- a/config/locales/crowdin/ro.yml +++ b/config/locales/crowdin/ro.yml @@ -2094,6 +2094,7 @@ ro: one: 'Mai există un pachet de lucru cu notificări.' few: 'Există %{count} mai multe pachete de lucru cu notificări.' other: 'Există %{count} mai multe pachete de lucru cu notificări.' + open_in_browser: 'Open in browser' reason: watched: 'Văzut' assigned: 'Alocat' diff --git a/config/locales/crowdin/ru.yml b/config/locales/crowdin/ru.yml index ec35713e21c2..8d766a491dc5 100644 --- a/config/locales/crowdin/ru.yml +++ b/config/locales/crowdin/ru.yml @@ -2111,6 +2111,7 @@ ru: few: 'Есть еще %{count} пакетов работ с уведомлениями.' many: 'Есть еще %{count} пакетов работ с уведомлениями.' other: 'Есть еще %{count} пакетов работ с уведомлениями.' + open_in_browser: 'Открыть в браузере' reason: watched: 'Просмотрено' assigned: 'Назначено' @@ -2652,7 +2653,7 @@ ru: highlighting: mode_long: inline: "Выделите один или несколько встроенных атрибутов" - none: "Без подсветки" + none: "Без выделения" status: "Вся строка по статусу" type: "Вся строка по типу" priority: "Вся строка по приоритету" @@ -3201,14 +3202,14 @@ ru: label_refresh_token: "Токен обновления" errors: oauth_authorization_code_grant_had_errors: "OAuth2 вернул ошибку" - oauth_reported: "Поставщик OAuth2 сообщил" + oauth_reported: "Источник OAuth2 сообщил" oauth_returned_error: "OAuth2 вернул ошибку" oauth_returned_json_error: "OAuth2 вернул ошибку JSON" oauth_returned_http_error: "OAuth2 вернул ошибку сети" oauth_returned_standard_error: "OAuth2 вернул внутреннюю ошибку" wrong_token_type_returned: "OAuth2 вернул неверный тип токена, ожидая AccessToken::Bearer" oauth_issue_contact_admin: "OAuth2 сообщил об ошибке. Обратитесь к системному администратору." - oauth_client_not_found: "OAuth2 клиент не найден в точке 'callback' (redirect_uri)." + oauth_client_not_found: "OAuth2 'state' не найден в конечной точке 'callback' (redirect_uri)." refresh_token_called_without_existing_token: > Внутренняя ошибка: Обнаружен refresh_token без ранее существующего токена. refresh_token_updated_failed: "Ошибка при обновлении OAuthClientToken" @@ -3216,7 +3217,7 @@ ru: Эта ошибка появляется после того, как вы обновили client_id и client_secret в OpenProject, но не обновили поле 'Return URI' в OAuth2 провайдере. oauth_code_not_present: "OAuth2 'code' не найден в конечной точке 'callback' (redirect_uri)." oauth_code_not_present_explanation: > - Эта ошибка появляется если вы выбрали неправильный response_type в OAuth2 провайдере. Response_type должен быть 'code' или аналогичным. + Эта ошибка появляется, если вы выбрали неправильный response_type в OAuth2 провайдере. Response_type должен быть 'code' или аналогичным. oauth_state_not_present: "OAuth2 'state' не найден в конечной точке 'callback' (redirect_uri)." oauth_state_not_present_explanation: > OAuth2 'state' используется для указания OpenProject где продолжить после успешной авторизации OAuth2. Отсутствие 'state' - внутренняя ошибка, которая может появиться при настройке. Обратитесь к системному администратору. @@ -3233,7 +3234,7 @@ ru: http: request: failed_authorization: "Запрос стороны сервера не смог авторизоваться." - missing_authorization: "Запрос на стороне сервера не удался из-за отсутствия информации о авторизации." + missing_authorization: "Запрос на стороне сервера не удался из-за отсутствия информации об авторизации." response: unexpected: "Получен неожиданный ответ." you: вы diff --git a/config/locales/crowdin/rw.yml b/config/locales/crowdin/rw.yml index fb13981ab3d4..e47e7fb3a128 100644 --- a/config/locales/crowdin/rw.yml +++ b/config/locales/crowdin/rw.yml @@ -2076,6 +2076,7 @@ rw: more_to_see: one: 'There is 1 more work package with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/si.yml b/config/locales/crowdin/si.yml index 4e2864d737a2..0cfef49310a2 100644 --- a/config/locales/crowdin/si.yml +++ b/config/locales/crowdin/si.yml @@ -2076,6 +2076,7 @@ si: more_to_see: one: 'There is 1 more work package with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/sk.yml b/config/locales/crowdin/sk.yml index 8c919f3bf9be..af5e658fff5a 100644 --- a/config/locales/crowdin/sk.yml +++ b/config/locales/crowdin/sk.yml @@ -2112,6 +2112,7 @@ sk: few: 'There are %{count} more work packages with notifications.' many: 'There are %{count} more work packages with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/sl.yml b/config/locales/crowdin/sl.yml index 144a6bd92a07..bc8c8c8ca0c6 100644 --- a/config/locales/crowdin/sl.yml +++ b/config/locales/crowdin/sl.yml @@ -2109,6 +2109,7 @@ sl: two: 'There are %{count} more work packages with notifications.' few: 'There are %{count} more work packages with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/sr.yml b/config/locales/crowdin/sr.yml index 0002d29f574a..1a943ff2ce53 100644 --- a/config/locales/crowdin/sr.yml +++ b/config/locales/crowdin/sr.yml @@ -2094,6 +2094,7 @@ sr: one: 'There is 1 more work package with notifications.' few: 'There are %{count} more work packages with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/sv.yml b/config/locales/crowdin/sv.yml index 5abbd7c133de..b508ac691731 100644 --- a/config/locales/crowdin/sv.yml +++ b/config/locales/crowdin/sv.yml @@ -2075,6 +2075,7 @@ sv: more_to_see: one: 'There is 1 more work package with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/th.yml b/config/locales/crowdin/th.yml index 9e46a422ef86..d1a9a7c872cf 100644 --- a/config/locales/crowdin/th.yml +++ b/config/locales/crowdin/th.yml @@ -2058,6 +2058,7 @@ th: mentioned_by: '%{user} mentioned you in a comment' more_to_see: other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/tr.yml b/config/locales/crowdin/tr.yml index 51bb3dc9cb2b..3a259ebb51b0 100644 --- a/config/locales/crowdin/tr.yml +++ b/config/locales/crowdin/tr.yml @@ -2075,6 +2075,7 @@ tr: more_to_see: one: 'Bildirimli 1 iş paketi daha var.' other: 'Bildirimleri olan %{count} iş paketi daha var.' + open_in_browser: 'Open in browser' reason: watched: 'İzlendi' assigned: 'Atanmış' diff --git a/config/locales/crowdin/uk.yml b/config/locales/crowdin/uk.yml index bb66acb86122..881418f4770f 100644 --- a/config/locales/crowdin/uk.yml +++ b/config/locales/crowdin/uk.yml @@ -2107,6 +2107,7 @@ uk: few: 'Є ще %{count} пакети робіт зі сповіщеннями.' many: 'Є ще %{count} пакетів робіт зі сповіщеннями.' other: 'Є ще %{count} пакета робіт зі сповіщеннями.' + open_in_browser: 'Open in browser' reason: watched: 'Відстежено' assigned: 'Призначено' diff --git a/config/locales/crowdin/vi.yml b/config/locales/crowdin/vi.yml index 68d02e27a7a7..377eb26386dc 100644 --- a/config/locales/crowdin/vi.yml +++ b/config/locales/crowdin/vi.yml @@ -2060,6 +2060,7 @@ vi: mentioned_by: '%{user} mentioned you in a comment' more_to_see: other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/locales/crowdin/zh-TW.yml b/config/locales/crowdin/zh-TW.yml index ac606d17f339..6de57f5a9f00 100644 --- a/config/locales/crowdin/zh-TW.yml +++ b/config/locales/crowdin/zh-TW.yml @@ -56,7 +56,7 @@ zh-TW: alternative-color: "濃重的主題色,通常用於螢幕上最重要的按鈕。" content-link-color: "大部分連結的文字顏色" primary-color: "主要顏色" - primary-color-dark: "通常深色的主顏色用於 hover 特效。" + primary-color-dark: "通常深色的主顏色用於懸浮特效。" header-item-bg-hover-color: "當滑鼠移動到可點選的標題項目的背景顏色" header-item-font-color: "可點擊的標題項目的文字顏色" header-item-font-hover-color: "當滑鼠移動到可點選的標題項目的文字顏色" @@ -801,7 +801,7 @@ zh-TW: is_not_a_valid_target_for_time_entries: "工作項目 #%{id} 不是重新分配時間項目有效的目標" attributes: assigned_to: - format: "%{message}" + format: " %訊息" due_date: not_start_date: "不在開始的日期,儘管它是里程碑所必需的。" cannot_be_null: "can not be set to null as start date and duration are known." @@ -1235,7 +1235,7 @@ zh-TW: default_role_anonymous: "匿名者" default_role_developer: "開發者" default_role_project_admin: "專案管理員" - default_role_project_creator_and_staff_manager: "Staff and projects manager" + default_role_project_creator_and_staff_manager: "職員和專案管理員" default_role_non_member: "非成員" default_role_reader: "讀者" default_role_member: "成員" @@ -1399,10 +1399,10 @@ zh-TW: blocks: community: "OpenProject 社群" upsale: - title: "Upgrade to Enterprise edition" + title: "升級到企業版" more_info: "更多資訊" links: - upgrade_enterprise_edition: "Upgrade to Enterprise edition" + upgrade_enterprise_edition: "升級到企業版" postgres_migration: "Migrating your installation to PostgreSQL" user_guides: "使用手冊" faq: "問答集" @@ -1425,7 +1425,7 @@ zh-TW: admin: mail_notification: "電子郵件通知" mails_and_notifications: "電子郵件通知" - aggregation: 'Aggregation' + aggregation: '聚合' api_and_webhooks: "API and webhooks" quick_add: label: "Open quick add menu" @@ -1618,7 +1618,7 @@ zh-TW: label_enumerations: "條列項目" label_enterprise: "企業" label_enterprise_active_users: "%{current}/%{limit} 已預訂的活動使用者" - label_enterprise_edition: "Enterprise edition" + label_enterprise_edition: "企業版" label_environment: "環境" label_estimates_and_time: "預估成本和時間" label_equals: "是" @@ -1671,7 +1671,7 @@ zh-TW: label_index_by_title: "按標題索引" label_information: "資訊" label_information_plural: "資訊" - label_installation_guides: 'Installation guides' + label_installation_guides: '安裝說明' label_integer: "整數" label_internal: "內部" label_introduction_video: "簡介影片" @@ -2058,6 +2058,7 @@ zh-TW: mentioned_by: '%{user} mentioned you in a comment' more_to_see: other: "還有 1 個帶有通知的工作包\n\n還有 %{count} 個帶有通知的工作包" + open_in_browser: '在瀏覽器中開啟' reason: watched: '監看' assigned: '指派' @@ -2261,14 +2262,14 @@ zh-TW: permission_edit_own_time_entries: "編輯自己的時間日誌" permission_edit_project: "編輯專案" permission_edit_reportings: "編輯報表" - permission_edit_time_entries: "Edit time logs for other users" + permission_edit_time_entries: "編輯他人耗時" permission_edit_timelines: "編輯時間軸" permission_edit_wiki_pages: "編輯維基頁面" permission_export_work_packages: "匯出工作項目" permission_export_wiki_pages: "匯出維基頁面" permission_list_attachments: "列出附件" - permission_log_own_time: "Log own time" - permission_log_time: "Log time for other users" + permission_log_own_time: "記錄個人耗時" + permission_log_time: "紀錄他人耗時" permission_manage_forums: "管理論壇" permission_manage_categories: "管理工作項目類別" permission_manage_work_package_relations: "管理工作項目關聯" diff --git a/config/locales/en.yml b/config/locales/en.yml index f167f49f0e9f..a2cf09c7d667 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2161,6 +2161,7 @@ en: more_to_see: one: 'There is 1 more work package with notifications.' other: 'There are %{count} more work packages with notifications.' + open_in_browser: 'Open in browser' reason: watched: 'Watched' assigned: 'Assigned' diff --git a/config/routes.rb b/config/routes.rb index 81ddcaa63a64..5f2b06ff1e1f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -84,6 +84,7 @@ get '/account/activate', action: 'activate' match '/login', action: 'login', as: 'signin', via: %i[get post] + get '/login/internal', action: 'internal_login', as: 'internal_signin' get '/logout', action: 'logout', as: 'signout' get '/sso', action: 'auth_source_sso_failed', as: 'sso_failure' diff --git a/docs/api/apiv3/tags/filters.yml b/docs/api/apiv3/tags/filters.yml index 4ebc71fd1fd8..02419f94cd7e 100644 --- a/docs/api/apiv3/tags/filters.yml +++ b/docs/api/apiv3/tags/filters.yml @@ -117,6 +117,14 @@ description: |- | `o` | the status of the work package is *open* | *nothing, values is empty* | | `c` | the status of the work package is *closed* | *nothing, values is empty* | | `ow` | the work packages have a manual sort order | *nothing, values is empty* | - + There are also relation filters for work packages that have the symbols `blocks/blocked` `children/parent` `follows/precedes` `duplicates/duplicated` `partof/includes` `relates` `requires/required` depending on the direction of the relation and take as value the work package ID that is the target node of the relation. + + **Special values for boolean filters** + + If you're using an operator that requires boolean values, please note that they need to be presented in this form: + + - `['f']` for false + - `['t']` for true + name: Filters diff --git a/docs/development/contribution-documentation/documentation-style-guide/README.md b/docs/development/contribution-documentation/documentation-style-guide/README.md index 2a2c2ff3a16a..30c5a6e11757 100644 --- a/docs/development/contribution-documentation/documentation-style-guide/README.md +++ b/docs/development/contribution-documentation/documentation-style-guide/README.md @@ -382,7 +382,7 @@ Use these terms when referring to OpenProject’s main application elements: All project menu items are spelled as in the application in bold, e.g. -- In the project menu, select **Work packages** to open your work package list. +- In the project menu, select **Work packages** to open your work package table. diff --git a/docs/faq/README.md b/docs/faq/README.md index 8ae194e0f5c9..6124cf04f2e8 100644 --- a/docs/faq/README.md +++ b/docs/faq/README.md @@ -135,7 +135,7 @@ On a work package level you could use "Assignee" for "Responsible", "Accountable To create and print/export reports you can... -- use the [global work packages list](../user-guide/projects/#global-work-packages-list): Filter for e.g. phases and milestones (which would make sense to use in your projects in this case). Then use the [export feature](../user-guide/work-packages/exporting/#exporting-work-packages). This will give you an overview over all projects' work packages (or all projects' milestones and phases, respectively). +- use the [global work packages list](../user-guide/projects/#global-work-package-tables): Filter for e.g. phases and milestones (which would make sense to use in your projects in this case). Then use the [export feature](../user-guide/work-packages/exporting/#exporting-work-packages). This will give you an overview over all projects' work packages (or all projects' milestones and phases, respectively). - use the [Wiki module](../user-guide/wiki) to document your project reports. The Wiki pages is optimized for being printed using your browser's print feature. You could even insert a work packages list there. If you want to use the Wiki we suggest setting it up in a (global) parent project. The projects overview is not optimized for export via PDF, yet. Nevertheless, you can try to use your browser's print feature. diff --git a/docs/getting-started/gantt-chart-introduction/README.md b/docs/getting-started/gantt-chart-introduction/README.md index 69f65ec4924c..771c230b7a17 100644 --- a/docs/getting-started/gantt-chart-introduction/README.md +++ b/docs/getting-started/gantt-chart-introduction/README.md @@ -35,11 +35,11 @@ The dynamic Gantt chart in OpenProject displays the phases, tasks and milestones To open the Gantt chart view in OpenProject, the [work packages module needs to be activated](../../user-guide/activity) in the project settings. -Within your project menu, navigate to the work packages module. Select the **Gantt chart view** in the work package list with the button on the top right. +Within your project menu, navigate to the work packages module. Select the **Gantt chart view** in the work package table with the button on the top right. ![open the gantt chart view](gantt-chart-view.png) -You can activate a Gantt chart view from any work package list (or saved query) by selecting the Gantt view from the top. +You can activate a Gantt chart view from any work package table (or saved query) by selecting the Gantt view from the top. The Gantt chart then displays all work package types, e.g. phases and milestones, tasks or bugs, in a timeline view. @@ -49,7 +49,7 @@ It shows dependencies between different work packages as well as additional info To create a project plan in OpenProject, switch to the work package table and select the [Gantt chart view](#activate-the-gantt-chart-view). -You can create new work package directly in the list by clicking on the **create new work package** link at the bottom of the list. You can change the work package type or other attributes directly in the list view. +You can create new work package directly in the table by clicking on the **create new work package** link at the bottom of the table. You can change the work package type or other attributes directly in the table view. Click in the at the level of the line of the work package you want to map in the Gantt chart to add an element in the project plan. @@ -59,7 +59,7 @@ You can change the duration or move the element in the project plan via drag and ## Edit a project plan -You can edit a project plan by clicking directly in the list and change work package attributes, e.g. Status, Priority or Assignee. +You can edit a project plan by clicking directly in the table and changing work package attributes, e.g. Status, Priority or Assignee. To change the start and end date or the duration of a work package, click directly in the Gantt chart and change it via drag and drop. All changes will also be tracked in the work packages [Activity](../../user-guide/activity). diff --git a/docs/getting-started/invite-members/README.md b/docs/getting-started/invite-members/README.md index 847705d118e1..f3f77a818b3d 100644 --- a/docs/getting-started/invite-members/README.md +++ b/docs/getting-started/invite-members/README.md @@ -73,7 +73,7 @@ Once clicked on **Invite user**, a pop up comes up where you decide to which pro **Invite within a work package** -When you are working in the work package list, you can also invite users from there. For example when you want to set an assignee for a work package that has not got access to OpenProject yet, you can select Invite from the drop down. The same applies to accountables or custom fields for your project. +When you are working in the work package table, you can also invite users from there. For example when you want to set an assignee for a work package that has not got access to OpenProject yet, you can select Invite from the drop down. The same applies to accountables or custom fields for your project. ![invite user over assignment](invite-user-over-assignment.png) diff --git a/docs/getting-started/my-account/README.md b/docs/getting-started/my-account/README.md index f34193ed32c0..fffa1167e952 100644 --- a/docs/getting-started/my-account/README.md +++ b/docs/getting-started/my-account/README.md @@ -62,7 +62,7 @@ Additionally, you can activate to **auto-hide success notifications** from the s ### Change your language -To change the language in OpenProject, navigate to the **My account** settings and choose the menu point **Settings**. +To change the language in OpenProject, navigate to the **My account** and choose the menu point **Settings**. Here you can choose between multiple languages. diff --git a/docs/getting-started/openproject-introduction/README.md b/docs/getting-started/openproject-introduction/README.md index 388d54b9a2f2..69d22ab9f364 100644 --- a/docs/getting-started/openproject-introduction/README.md +++ b/docs/getting-started/openproject-introduction/README.md @@ -58,22 +58,22 @@ The following sections provide links to the documentation for each project phase OpenProject supports the initial set-up and configuration of a project structure. -| Features | Documentation for | -| -------------------------- | ------------------------------------------------------------ | -| [Create a new project](../projects/#create-a-new-project) | Create and set up a new project in OpenProject | -| [Set up a project structure](../../user-guide/projects/#project-structure) | Create a project hierarchy to structure your work in OpenProject | -| [Project settings](../../user-guide/projects/#project-settings) | Create first ideas, tasks, rough milestones. | -| [Add members](../invite-members/) | Invite your team to collaborate in OpenProject. | +| Features | Documentation for | +| ------------------------------------------------------------ | ------------------------------------------------------------ | +| [Create a new project](../projects/#create-a-new-project) | Create and set up a new project in OpenProject. | +| [Set up a project structure](../../user-guide/projects/#project-structure) | Create a project hierarchy to structure your work in OpenProject. | +| [Project settings](../../user-guide/projects/#project-settings) | Create first ideas, tasks, rough milestones. | +| [Add members](../invite-members/) | Invite your team to collaborate in OpenProject. | ### Project definition and planning Create a project overview with more detailed information, set up your project plan, structure your work, create a roadmap. -| Features | Documentation for | -| ------------------- | ------------------------------------------------------------ | -| [Global projects overview](../../user-guide/) | Create a project overview with important project information. | -| [Structure your work](../work-packages-introduction/) | Create work packages and structure your work | -| [Roadmap planning](../gantt-chart-introduction/) | Create a roadmap for your project. | +| Features | Documentation for | +| ----------------------------------------------------- | ------------------------------------------------------------ | +| [Global projects overview](../../user-guide/) | Create a project overview with important project information. | +| [Structure your work](../work-packages-introduction/) | Create work packages and structure your work. | +| [Roadmap planning](../gantt-chart-introduction/) | Create a roadmap for your project. | ### Project launch or execution diff --git a/docs/getting-started/projects/README.md b/docs/getting-started/projects/README.md index 7aaa09dd659a..6ed4d69ce085 100644 --- a/docs/getting-started/projects/README.md +++ b/docs/getting-started/projects/README.md @@ -39,7 +39,7 @@ You can also start typing in a project name to filter by the project's title. Projects and subprojects are displayed according to their hierarchy in the drop-down menu.
-**Subproject** is defined as a child project of another project. Subprojects can be used to display a hierarchy of projects. Several filter options (e.g. in work package list and timeline) can be applied only to the current project and its subprojects. +**Subproject** is defined as a child project of another project. Subprojects can be used to display a hierarchy of projects. Several filter options (e.g. in work package table and timeline) can be applied only to the current project and its subprojects.
![project_hierarchy](project_hierarchy-8178054.png) diff --git a/docs/getting-started/sign-in-registration/README.md b/docs/getting-started/sign-in-registration/README.md index 9871e973efcd..a2c6e85a8026 100644 --- a/docs/getting-started/sign-in-registration/README.md +++ b/docs/getting-started/sign-in-registration/README.md @@ -8,7 +8,7 @@ keywords: sign in, login, registration # Sign in and registration -Here you will get an overview how to sign in and register to an existing OpenProject installation. +This page will give you an overview of how to register or sign in to an existing OpenProject installation. > **Note**: If you do not have an OpenProject installation yet, please visit our site on [how to create an OpenProject trial installation](../../enterprise-guide/enterprise-cloud-guide/create-cloud-trial/). @@ -97,7 +97,7 @@ If you forgot your password, you can reset your password by clicking the blue ** ![Forgot-password](1566205596114.png) -You are then asked to enter you email address with which you have registered to OpenProject. +You are then asked to enter your email address with which you registered to OpenProject. ![enter-email-address](1566205903097.png) diff --git a/docs/getting-started/work-packages-introduction/README.md b/docs/getting-started/work-packages-introduction/README.md index 6a28daa035ff..fe1d4c480bd4 100644 --- a/docs/getting-started/work-packages-introduction/README.md +++ b/docs/getting-started/work-packages-introduction/README.md @@ -33,9 +33,9 @@ Within the work packages module, click the green + Create button to create a new ![create-a-new-workpackage](create-a-new-workpackage.png) -A split screen view is opened with the new work package form on the right and the list of already existing work packages on the left. +A split screen view is opened with the new work package form on the right and the table listing already existing work packages on the left. -If there are not yet any work packages in the project, you will see a message that there are no work packages to be displayed in the list. +If there are not yet any work packages in the project, you will see a message that there are no work packages to be displayed in the table. In the empty form on the right, you can enter all relevant information for this work package, e.g. the subject and a description, set an assignee, a due date or any other field. The fields you can populate are called **work package attributes**. Also, you can add attachments with copy & paste or with drag and drop. @@ -43,7 +43,7 @@ Click the green **Save** button to create the work package. ![split-screen-workpackages](split-screen-workpackages.png) -The work package will the be displayed in the list view: +The work package will the be displayed in the table view: ![create-work-package-define-project](create-work-package-define-project-6669224.png) @@ -59,7 +59,7 @@ Then you follow the same steps as mentioned above to fill in the your work packa ## Open and edit a work package -To open and edit an existing work package from the list, select the work package in the list which you want to edit and click on the **open details view** icon in the work package list or on top of the list to open the split screen view. Other ways to open it would be to double-click on the work package or to click on the work package ID. +To open and edit an existing work package from the table, select the work package which you want to edit and click on the **open details view** icon in the work package table or on top of it to open the split screen view. Other ways to open it would be to double-click on the work package or to click on the work package ID. ![open-details-view-work-packages](open-details-view-work-packages.png) diff --git a/docs/glossary/README.md b/docs/glossary/README.md new file mode 100644 index 000000000000..7982b510f915 --- /dev/null +++ b/docs/glossary/README.md @@ -0,0 +1,361 @@ +--- +sidebar_navigation: + title: Glossary + priority: 945 +description: Glossary of OpenProject project management software related terms, with definitions and additional links. +keywords: glossary, help, documentation, terms, keywords, vocabulary, definition, dictionary, lexicon, index, list, wordbook +--- + +# OpenProject Glossary + +![Glossary of OpenProject](glossary-openproject-header.png) + +Project management is a complex process. At the same time, when it comes to software, there are many technical words involved. When these two things come together, it creates an interesting tool that introduces a completely new way of doing things. This new way of doing things has its own set of terms and concepts. In this glossary, you will find the most commonly used terms in OpenProject Software. Each term is defined briefly and supplemented with links to get more information if needed. + +[A](#a) +[B](#b) +[C](#c) +[D](#d) +[E](#e) +[F](#f) +[G](#g) +[H](#h) +[N](#n) +[O](#o) +[P](#p) +[R](#r) +[S](#s) +[T](#t) +[U](#u) +[V](#v) +[W](#w) + +## A + +### Agile project management + +Agile project management is an iterative and flexible approach to managing projects. It focuses on collaboration, adaptability, and self-organizing teams. OpenProject supports agile project management as well as [classic project management](#classic-project-management) and works best for [hybrid project management](#hybrid-project-management). + +### Authentication + +In OpenProject, authentication is an important element to guarantee a data protected usage. To adapt these authentication settings, you need to have admin rights. Navigate to your user name and select -> Administration -> Authentication. At OpenProject, we use [OAuth 2.0](#oauth) as this is the definitive industry standard for online authorization. + +**More information on authentication in OpenProject** + +- [See answers to frequently asked questions (FAQ) for authentication](https://www.openproject.org/docs/system-admin-guide/authentication/authentication-faq/) +- [See our blog post on multi-factor authentication to improve data security](https://www.openproject.org/blog/multi-factor-authentication-for-data-security/) +- [Read more about Two-factor authentication (2FA) in OpenProject](https://www.openproject.org/docs/system-admin-guide/authentication/two-factor-authentication/) +- [Read more about LDAP Authentication in OpenProject](https://www.openproject.org/docs/system-admin-guide/authentication/ldap-authentication/) + +## B + +### Backlogs + +A backlog in OpenProject is defined as a [plugin](#plugins--integrations) that allows to use the backlogs feature in OpenProject. The backlog is a tool in scrum: a list that contains everything needed to achieve a specific outcome. In order to use backlogs in OpenProject, the backlogs module has to be activated in the [project settings](#project-settings). [Read how to work with backlogs in OpenProject](https://www.openproject.org/docs/user-guide/backlogs-scrum) + +### Baseline (Comparisons) + +Baseline is a feature in OpenProject that will be released with 13.0. It allows users to quickly track changes on [filtered](#filters) work packages table views. [Read more about technical challenges, design and next steps for Baseline in the OpenProject blog](https://www.openproject.org/blog/news-product-team-baseline/) + +### BIM + +BIM stands for Building Information Modeling. In OpenProject, we offer a special plan for users working in the construction industry. On top of the general project management features, OpenProject BIM enables construction teams to better plan, communicate and collaborate in their building projects. [Read the OpenProject BIM guide to get more information](https://www.openproject.org/docs/bim-guide/) + +### Board + +A board in OpenProject is a view that allows you to see your work packages as cards divided into columns. A board is a typical element in [agile project management](#agile-project-management), supporting methodologies such as Scrum or Kanban. As a [Community user](#community-edition) of OpenProject, you can use a [basic board](https://www.openproject.org/docs/user-guide/agile-boards/#basic-board-community-edition). [Advanced Action boards](https://www.openproject.org/docs/user-guide/agile-boards/#action-boards-enterprise-add-on) are part of the [Enterprise add-on](#enterprise-add-on). Use advanced Action boards to quickly change attributes of your work package. [Read more about boards for agile project management](https://www.openproject.org/docs/user-guide/agile-boards/) + +**More information on boards in OpenProject** + +- [Examples of agile boards in OpenProject](https://www.openproject.org/docs/user-guide/agile-boards/#agile-boards-examples) +- [Blog post on 5 agile boards to boost efficiency in multi-team projects](https://www.openproject.org/blog/agile-boards/) + +## C + +### Classic project management + +Classic project management is a structured and sequential approach to project management. It often follows a hierarchical structure with a project manager overseeing team coordination, and is associated with methodologies like Waterfall. OpenProject supports classic project management as well as [agile project management](#agile-project-management) and works best for [hybrid project management](#hybrid-project-management). + +### Community edition + +Community edition is defined as the main and free-of-charge edition of OpenProject software. It is installed [on-premises](#on-premises) and therefore self-managed. Benefit from a wide range of features and data sovereignty in a free and open source project management software. The Community edition is actively maintained and is continuously being further developed. [Read more about OpenProject Community edition](https://www.openproject.org/community-edition/) + +### Custom action + +A custom action in OpenProject is defined as customizable buttons which trigger a certain action upon work packages. Custom actions are included in the [Enterprise](#enterprise-add-on) edition of OpenProject and part of automated *workflows*. Custom actions support you to easily update several workpackage attributes at once – with a single click. + +**More information on custom actions in Openproject** + +- [Watch a short video how custom actions work](https://www.openproject.org/docs/system-admin-guide/manage-work-packages/custom-actions/#automated-workflows-with-custom-actions-enterprise-add-on) +- [Read this guide on how to create custom actions](https://www.openproject.org/docs/system-admin-guide/manage-work-packages/custom-actions/#create-custom-actions) +- [Read this blog article on how to create an intelligent workflow with custom action - explained with an example](https://www.openproject.org/blog/customise-workflows/) + +### Custom field + +In OpenProject, a custom field is defined as an additional value field which can be added to existing value fields. Custom fields can be created for the following resources: [work packages](#work-package), [spent time](#time-and-costs), [projects](#project), [versions](#versions), [users](#user), and [groups](#group). + +![Custom fields in OpenProject](glossary-openproject-custom-field.png) + +**More information on custom fields in OpenProject** +- [Read how to enable custom fields in projects to use them in work packages](https://www.openproject.org/docs/user-guide/projects/project-settings/custom-fields/) +- [Read how to create custom fields as an admin in OpenProject](https://www.openproject.org/docs/system-admin-guide/custom-fields/) + +### Custom query + +A custom query in OpenProject consists of saved [filters](#filters), sort criteria, and [groupings](#group) in the [work package table](#work-package-table). Custom queries can be either set to public (visible by any user who is allowed to see the project and the work package table) or to private (visible only to the person creating the query). For example, filter all work packages assigned to yourself and save this view as "assigned to me", to quickly navigate to those work packages. + +## D + +### Dashboard + +A dashboard is defined as an overview page in a software. In OpenProject, you have several options to create dashboards: + +1. You have the [My Page](#my-page) which shows your personal customized [widgets](#widget) on one page, for example a calendar or work package reports. + +2. You have the [project overview](#project-overview) dashboard which gives you an overview of your project. Please note that only admins can add and remove widgets to the project overview. + +In addition to those overview dashboard options, you can create a [custom query](#custom-query) to save a filtered work package view, which might serve you as kind of a dashboard as well. + +### Date alerts + +Date alerts in OpenProject are an [Enterprise add-on](#enterprise-add-on) and defined as a feature to generate automatic and customized [notifications](#notifications) regarding a work package's due date or start date. You can find the date alerts feature in your notification center, symbolized by a little bell on the right upper side of your instance. [Read more about the date alerts feature in our user guide](https://www.openproject.org/docs/user-guide/notifications/notification-settings/#date-alerts-enterprise-add-on) or in [this article on deadline management with OpenProject](https://www.openproject.org/blog/deadline-management-date-alert/) + +## E + +### Enterprise add-on + +In OpenProject, some features are defined as an Enterprise add-on. This means, they are not part of the [Community edition](#community-edition) and therefore not free of charge. Enterprise add-ons are available as Cloud or [on-premises](#on-premises) versions. You can chose from the following plans to get access to all Enterprise add-ons: Basic, Professional, Premium and Corporate. [Read more about OpenProject plans and pricing](https://www.openproject.org/pricing/) + +### Enumerations + +Enumerations in OpenProject is defined as a menu item in the admin settings that allows the configuration of Activities (for [time tracking](#time-and-costs)), [project status](#project-status) and work package priorities. [Read more about enumerations in OpenProject](https://www.openproject.org/docs/system-admin-guide/enumerations/) + +### Excel synchronisation + +Excel synchronisation is a module in OpenProject which allows you to easily import your issues from Excel to OpenProject or upload your work packages into an Excel spreadsheet. [See our video tutorials on how to work with the Excel synchronisation module](https://www.openproject.org/docs/system-admin-guide/integrations/excel-synchronization/) + +## F + +### File storage + +File storages can be configured in the System Administration and then be selected in the [project settings](#project-settings). OpenProject offers a [Nextcloud integration](#nextcloud-integration) to support file storage. [More information on file storage with the Nextcloud integration](https://www.openproject.org/docs/user-guide/nextcloud-integration/) + +### Filters + +Filters are essential for task and project management in OpenProject. You have several filtering options applicable to a [work package table](#work-package-table). Filter options can be saved via [custom queries](#custom-query). A filtered work packages list view (e.g. only open work packages) can be safed and therefore work as a [dashboard](#dashboard). + +### Forum + +A forum in OpenProject is defined as a module used to display forums and forum messages. The module has to be activated in the [project settings](#project-settings) and a forum has to be created in the forums tab in the project settings to be displayed in the side navigation. [Read more about forums in OpenProject](https://www.openproject.org/docs/user-guide/forums/) + +## G + +### Gantt chart + +The Gantt chart in OpenProject displays the work packages in a timeline. You can collaboratively create and manage your project plan. Have your project timelines available for all team [members](#member) and share up-to-date information with stakeholders. You can add start and finish dates and adapt it with drag and drop in the Gantt chart. Also, you can add dependencies, predecessor or follower within the Gantt chart. + +[Read more about how to activate and work with Gantt charts in OpenProject](https://www.openproject.org/docs/user-guide/gantt-chart/) + +### Group + +A Group in OpenProject is defined as a list of users which can be added as a member to projects with a selected [role](#role). Groups can also be assigned to work packages. New groups can be defined in Administration -> Users and permissions -> Groups. + +## H + +### Hybrid project management + +Hybrid project management is an approach that combines elements of both classic and agile project management methodologies. It allows flexibility and adaptability while still incorporating structured planning and control. OpenProject works best for hybrid project management and also supports [classic project management](#classic-project-management) as well as [agile project management](#agile-project-management). + +### Meetings + +In OpenProject Software, Meetings is defined as a [module](#module) that allows the organization of meetings. The module has to be activated in the [project settings](#project-settings) in order to be displayed in the side navigation. + +### Member + +In OpenProject Software, a member is defined as a single person in a project. Project members are added in the Members [module](#module) in the project menu. + +### Module + +A module in OpenProject is defined as an independent unit of functionality that can be used to extend and improve the existing core functions. + +### My Page + +The My Page in OpenProject is defined as your personal [dashboard](#dashboard) with important overarching project information, such as work package reports, news, spent time, or a calendar. It can be configured to your specific needs. [Read more about the My Page in OpenProject](https://www.openproject.org/docs/getting-started/my-page/) + +## N + +### News + +In OpenProject, News is defined as a [module](#module) that allows the publication and use of news entries. On the news page, you can see the latest news in a project in reverse chronological order. News communicate general topics to all team members. They can be displayed on the project [dashboard](#dashboard). [Read more about how to work with the News module in OpenProject](https://www.openproject.org/docs/user-guide/news/) + +### Nextcloud integration + +OpenProject offers a Nextcloud integration which allows you to manage files in a secure and easy way, e.g. to link files or folders in Nextcloud or upload files to Nextcloud on work packages. You find the Nextcloud integration in the Files tab of your work package, if you have activated the Nextcloud integration for your instance. Get access to the OpenProject-Nextcloud integration by downloading and activating it in the built-in [Nextcloud app store](https://apps.nextcloud.com/) within your Nextcloud instance. [Read more about the Nextcloud integration of OpenProject](https://www.openproject.org/docs/user-guide/nextcloud-integration/) + +### Notifications + +In OpenProject, you get in-app notifications about important changes that are relevant to you – for example new comments that mention you, updates to status, [type](#work-package-types) or dates or new assignments. This feature is enbled by default and can be used as an addition or an alternative to email notifications. To view the notifications, click the bell icon at the top right of the header. The bell icon will be displayed with a red badge if there are new notifications for you. [Read more about notifications in OpenProject](https://www.openproject.org/docs/user-guide/notifications/) + +## O + +### OAuth + +OAuth is an open authorization standard. It allows you to access certain information or resources on behalf of a user without accessing their username and password on each individual service. OpenProject acts as an OAuth provider, allowing you to optionally grant permissions to access your data to authorized third-party applications or services. [Read more about OAuth applications in OpenProject](https://www.openproject.org/docs/system-admin-guide/authentication/oauth-applications/) + +### On-premises + +OpenProject on-premises is a self-hosted version of OpenProject. As opposed to the Cloud version, you install, run and maintain the hardware locally and manage the software application there. The on-premises [Community Edition](#community-edition) is free of charge. + +**More information on OpenProject on-premises** +- [See our pricing side about your options for OpenProject](https://www.openproject.org/pricing/) +- [Read a blog article comparing on-premises and cloud](https://www.openproject.org/blog/why-self-hosting-software/) +- [Read how to activate the Enterprise on-premises edition](https://www.openproject.org/docs/enterprise-guide/enterprise-on-premises-guide/activate-enterprise-on-premises/) +- [Read how to start a trial for Enterprise on-premises](https://www.openproject.org/docs/enterprise-guide/enterprise-on-premises-guide/enterprise-on-premises-trial/) + +## P + +### Phase + +A phase in OpenProject is defined as a [work package type](#work-package-types) which usually includes several work packages of types like task or feature. For example, typical phases for a construction repair project would be the following: Project definition, detailed Design & Tender, Construction and Post project. + +### Plugins / Integrations + +In OpenProject, you can chose from several plugins or integrations or add your own plugins to the Community. As an open source software, OpenProject is open to Community-created plugins. Please note that we do not guarantee error-free and seamless use of those plugins. There are also integrations developed by the core OpenProject team, such as the *Excel synchronization* or the [Nextcloud integration](#nextcloud-integration). + +Your activated plugins are listed together with your [modules](#module) in your instance under --> Administration --> Plugins. + +**More information on plugins in OpenProject** +- [See all available plugins and integrations for OpenProject](https://www.openproject.org/docs/system-admin-guide/integrations/) +- [Read how to create an OpenProject plugin](https://www.openproject.org/docs/development/create-openproject-plugin/) + +### Project + +In OpenProject, a [project](https://www.openproject.org/docs/user-guide/projects/) is defined as an individual or collaborative enterprise that is carefully planned to achieve a particular aim. Projects are the central organizational unit in OpenProject. Your projects can be available publicly or internally. OpenProject does not limit the number of projects, neither in the [Community edition](#community-edition) nor in the Enterprise cloud or in Enterprise on-premises edition. If you have more than one project in your instance, projects build a structure in OpenProject. You can have parent projects and sub-projects. For example, a project can represent + +- an organizational unit of a company, +- an overarching team working on one topic or +- separate products or customers. + +### Project identifier + +The project identifier is defined as the unique name used to identify and reference projects in the application as well as in the address bar of your browser. Project identifiers can be changed in the [project settings](#project-settings). + +### Project navigation + +The project navigation is the side navigation within a project. Entries in the project navigation can be added and removed by activating and deactivating [modules](#module) in the [project settings](#project-settings). + +### Project overview + +In OpenProject, the project overview is defined as a single [dashboard](#dashboard) page where all important information of a selected project can be displayed. The idea is to provide a central repository of information for the whole project team. Project information is added to the dashboard as [widgets](#widget). Open the project overview by navigating to "Overview" in the project menu on the left. [Read more about the project overview in OpenProject](https://www.openproject.org/docs/user-guide/project-overview/#project-overview) + +### Project settings + +Project settings means project-specific setting configuration. The project settings contain general settings (e.g. the name and ID of the project), configuration of [modules](#module), [work package categories](#work-package-categories) and [types](#work-package-types), [custom fields](#custom-field), [version](#versions) settings, [time tracking activities](#time-and-costs), required disk storage, [file storages](#file-storage) and [Backlogs](#backlogs) settings (if plugin is installed). [Read more about project settings in OpenProject](https://www.openproject.org/docs/user-guide/projects/#project-settings) + +### Project status + +The project status in OpenProject is defined as an information for yourself and the team if the project is on track – to then being able to quickly act in case it is off track. [Read more about the project status in OpenProject](https://www.openproject.org/docs/user-guide/projects/project-status/) + +### Project status reporting + +The status reporting in OpenProject is the reporting relationship between different [projects](#project). Reporting relationships can be assigned a [project status](#project-status). Status reportings can be used to display multiple projects (and the associated [work packages](#work-package)) in a single timeline: The reporting project and its work packages are displayed in the timeline of the project that is reported to. + +### Project template + +A project template in OpenProject is defined as a dummy project to copy and adjust as often as you want. Project templates can be used for several projects that are similar in structure and [members](#member). Creating project templates can save time when creating new projects. [Read more about project templates in OpenProject in our user guide](https://www.openproject.org/docs/user-guide/projects/project-templates/) and see [this blog article to learn how to work with project templates](https://www.openproject.org/blog/project-templates/). + +### Public project + +In OpenProject, projects can be private or public. Public means that the project is visible to any user regardless of project [membership](#member). The visibility of a project can be changed in the project settings. [Read how to set a project to public in OpenProject](https://www.openproject.org/docs/user-guide/projects/#set-a-project-to-public) + +## R + +## Repository + +A repository is defined as a document or source code management system that allows users to manage files and folders via different version control systems (such as Subversion or Git). [Read more about Repository for source code control](https://www.openproject.org/docs/user-guide/repository/) + +### Roadmap + +In OpenProject, a roadmap is defined as an overview page displaying the [versions](#versions) sorted alphabetically and the [work packages](#work-package) assigned to them. The roadmap is displayed in the [project navigation](#project-navigation) when the work package module is activated and a version has been created ([project settings](#project-settings)). + +### Role + +In OpenProject, a role is defined as a set of permissions defined by a unique name. Project [members](#member) are assigned to a project by specifying a user’s, [group’s](#group) or placeholder user’s name and the role(s) they should assume in the project. + +## S + +### Story points + +Story points is a term known in Scrum. They are defined as numbers assigned to a [work package](#work-package) used to estimate (relatively) the size of the work. In OpenProject, you can add story points to work packages. [Read how to work with story points in OpenProject](https://www.openproject.org/docs/user-guide/backlogs-scrum/work-with-backlogs/#working-with-story-points) + +## T + +### Team planner + +The team planner in OpenProject is defined as a [module](#module) ([Enterprise add-on](#enterprise-add-on)) that helps you get a complete overview of what each [member](#member) of your team is working on in weekly or bi-weekly view. You can use it to track the current progress of [work packages](#work-package) your team is working on, schedule new tasks, reschedule them or even reassign them to different members. [Read more about the OpenProject team planner](https://www.openproject.org/docs/user-guide/team-planner/) + +### Time and costs + +Time and costs in OpenProject is defined as a [module](#module) which allows users to log time on [work packages](#work-package), track costs and create time and cost reports. Once the time and costs module is activated, time and unit cost can be logged via the action menu of a work package. Logged time and costs can be searched for, aggregated and reported using the Cost reports menu item. [Read more about the time and costs module in OpenProject](https://www.openproject.org/docs/user-guide/time-and-costs/) + +## U + +### User + +In OpenProject, a user is defined as a person who uses OpenProject, described by an identifier. New users can be created in the admin settings. Users can become project [members](#member) by either assigning them a role and adding them via the [project settings](#project-settings). Or by adding them to a project by the system admin at: Administration --> Users and permissions --> Users. Then clicking on the username and navigating to the tab "Projects". + +## V + +### Versions + +Versions in OpenProject are defined as an attribute for [work packages](#work-package) or in the [Backlogs](#backlogs) module. Versions will be displayed in the [Roadmap](#roadmap). In the [Enerprise edition](#enterprise-add-on), you can also create a version [board](#board) to get an overview of the progress of your versions. [Read more about how to manage versions in OpenProject](https://www.openproject.org/docs/user-guide/projects/project-settings/versions/) + +## W + +### Widget + +A widget in OpenProject is defined as a small and customizable element that provides relevant information at a glance. Use widgets on your [My Page](#my-page) dashboard or on the [project overview](#project-overview). [See all available project overview widgets](https://www.openproject.org/docs/user-guide/project-overview/#available-project-overview-widgets) and read [how to add a widget to the project overview](https://www.openproject.org/docs/user-guide/project-overview/#add-a-widget-to-the-project-overview) + +### Wiki + +In OpenProject, a wiki is defined as a [module](#module) that allows to use textile-based wiki pages. In order to use the wiki module, it has to be activated in the [project settings](#project-settings). [Read more about wikis in OpenProject](https://www.openproject.org/docs/user-guide/wiki/) + +![A wiki module in OpenProject](glossary-openproject-wiki.png) + +### Workflow + +A workflow in OpenProject is defined as the allowed transitions between status for a [role](#role) and a type, i.e. which status changes can a certain role implement depending on the [work package type](#work-package-types). Workflows can be defined in the admin settings. For example, you might only want developers to be able to set the status "developed". [Read more about work package workflows in OpenProject](https://www.openproject.org/docs/system-admin-guide/manage-work-packages/work-package-workflows/#manage-work-package-workflows) + +![glossary-openproject-sys-admin-edit-workflow](glossary-openproject-sys-admin-edit-workflow.png) + +### Work package + +In OpenProject, a [work package](https://www.openproject.org/docs/user-guide/work-packages/#overview) is defined as an item in a project. It is a subset of a project that can be assigned to users for execution, such as Tasks, Bugs, User Stories, Milestones, and more. Work packages have a [type](#work-package-types), an [ID](#work-package-id) and a subject and may have additional attributes, such as assignee, responsible, [story points](#story-points) or [version](#versions). Work packages are displayed in a project timeline (unless they are [filtered](#filters) out in the timeline configuration) - either as a milestone or as a [phase](#phase). In order to use the work packages, the work package module has to be activated in the [project settings](#project-settings). + +![A work package in OpenProject](glossary-openproject-work-package.png) + +**More information on work packages in OpenProject** +- [Read our user guide on work packages](https://www.openproject.org/docs/user-guide/work-packages/) +- [Read a blog article on how to work with work packages](https://www.openproject.org/blog/how-to-work-with-work-packages/) + +### Work package table + +The work package table in OpenProject is defined as the overview of all work packages in a project, together with their attributes in the columns. A synonym for work package table is the term "work package list". [Read how to configure a work package table](https://www.openproject.org/docs/user-guide/work-packages/work-package-table-configuration/) + +![A work package table in OpenProject](glossary-openproject-work-package-table.png) + +### Work package types + +Work package types are the different items a work package can represent. Each work package is associated to exactly one type. Examples for most used work package types are a Task, a Milestone, a [Phase](#phase) or a Bug. The work package types can be customized in the system administration. [Read more about work package types in OpenProject](https://www.openproject.org/docs/user-guide/projects/project-settings/work-package-types/#work-package-types) + +### Work package categories + +Work package categories are a functionality used to automatically assign a [member](#member) to a work package by specifying a category.[Read more about work package categories in OpenProject](https://www.openproject.org/docs/user-guide/projects/project-settings/work-package-categories/#manage-work-package-categories) + +### Work package view + +A list of work packages is considered a view. The containing work packages in any view can be displayed a number of different ways. Examples for most used work package views are the [table view](#work-package-table), the full screen view or the split screen view. You can also display work packages in a card view and use them in a [board](#board) to use agile methods. [Read more about work package views in OpenProject](https://www.openproject.org/docs/user-guide/work-packages/work-package-views/#work-packages-views) + +### Work package ID + +Work package ID is defined as a unique ascending number assigned to a newly created work package. Work package IDs cannot be changed and are numbered across all projects of an OpenProject instance (therefore, the numbering within a project may not be sequential). diff --git a/docs/glossary/glossary-openproject-custom-field.png b/docs/glossary/glossary-openproject-custom-field.png new file mode 100644 index 000000000000..54e43f22a3d9 Binary files /dev/null and b/docs/glossary/glossary-openproject-custom-field.png differ diff --git a/docs/glossary/glossary-openproject-header.png b/docs/glossary/glossary-openproject-header.png new file mode 100644 index 000000000000..a7f9652c1020 Binary files /dev/null and b/docs/glossary/glossary-openproject-header.png differ diff --git a/docs/glossary/glossary-openproject-sys-admin-edit-workflow.png b/docs/glossary/glossary-openproject-sys-admin-edit-workflow.png new file mode 100644 index 000000000000..b4f742aa777e Binary files /dev/null and b/docs/glossary/glossary-openproject-sys-admin-edit-workflow.png differ diff --git a/docs/glossary/glossary-openproject-wiki.png b/docs/glossary/glossary-openproject-wiki.png new file mode 100644 index 000000000000..70cc4bf5d1fc Binary files /dev/null and b/docs/glossary/glossary-openproject-wiki.png differ diff --git a/docs/glossary/glossary-openproject-work-package-table.png b/docs/glossary/glossary-openproject-work-package-table.png new file mode 100644 index 000000000000..552fb491c392 Binary files /dev/null and b/docs/glossary/glossary-openproject-work-package-table.png differ diff --git a/docs/glossary/glossary-openproject-work-package.png b/docs/glossary/glossary-openproject-work-package.png new file mode 100644 index 000000000000..64dd5bcf730e Binary files /dev/null and b/docs/glossary/glossary-openproject-work-package.png differ diff --git a/docs/installation-and-operations/configuration/README.md b/docs/installation-and-operations/configuration/README.md index 56507d54d390..0265d576daf7 100644 --- a/docs/installation-and-operations/configuration/README.md +++ b/docs/installation-and-operations/configuration/README.md @@ -261,6 +261,9 @@ Per default the user may choose the usual password login as well as several **NOTE:** This does not stop a user from manually navigating to any other omniauth provider if additional ones are configured. *default: nil* diff --git a/docs/installation-and-operations/installation-faq/README.md b/docs/installation-and-operations/installation-faq/README.md index 35a08dbf11be..343cbd3b26f2 100644 --- a/docs/installation-and-operations/installation-faq/README.md +++ b/docs/installation-and-operations/installation-faq/README.md @@ -10,7 +10,7 @@ keywords: installation FAQ, upgrades, updates, operation faq ## Installation and configuration -### Which options are there to install Openproject? +### Which options are there to install OpenProject? There's the package based installation (recommended), installation via Docker, using a provider (like Univention, Bitnami, IONOS) and the manual installation. diff --git a/docs/installation-and-operations/installation/packaged/README.md b/docs/installation-and-operations/installation/packaged/README.md index 567bda983472..40a9a631f77c 100644 --- a/docs/installation-and-operations/installation/packaged/README.md +++ b/docs/installation-and-operations/installation/packaged/README.md @@ -27,15 +27,14 @@ The package will: The package is available for the following Linux distributions: | Distribution (64 bits only) | -| ------------------------------------------- | +|---------------------------------------------| | [Ubuntu 22.04 Jammy](#ubuntu-2204) | | [Ubuntu 20.04 Focal](#ubuntu-2004) | | [Ubuntu 18.04 Bionic Beaver](#ubuntu-1804) | -| [Ubuntu 16.04 Xenial Xerus](#ubuntu-1604) | -| [Debian 11 Bullseye](#debian-11) | +| [Debian 11 Bullseye](#debian-11) | | [Debian 10 Buster](#debian-10) | -| [CentOS/RHEL 8.x](#centos-8--rhel-8) | -| [CentOS/RHEL 7.x](#centos-7--rhel-7) | +| [CentOS/RHEL 8.x](#centos-8--rhel-8) | +| [CentOS/RHEL 7.x](#centos-7--rhel-7) | | [Suse Linux Enterprise Server 15](#sles-15) | | [Suse Linux Enterprise Server 12](#sles-12) | diff --git a/docs/installation-and-operations/operation/upgrading/README.md b/docs/installation-and-operations/operation/upgrading/README.md index f1607a2c8fb8..bf8005b77dff 100644 --- a/docs/installation-and-operations/operation/upgrading/README.md +++ b/docs/installation-and-operations/operation/upgrading/README.md @@ -72,14 +72,12 @@ This means that if you want to switch from (e.g.) OpenProject 11.x to 12.x, you The necessary steps are the same as setting up the package source for the first time. You can also check the [installation guide](../../installation/packaged) for more information. Please follow the link below to see the appropriate steps for your Linux distribution. -| Distribution (64 bits only) | -| ------------------------------------------- | +| Distribution (64 bits only) | +|-------------------------------------------------------------------------| | [Ubuntu 20.04 Focal](../../installation/packaged/#ubuntu-2004) | | [Ubuntu 18.04 Bionic Beaver](../../installation/packaged/#ubuntu-1804) | -| [Ubuntu 16.04 Xenial Xerus](../../installation/packaged/#ubuntu-1604) | | [Debian 11 Bullseye](../../installation/packaged/#debian-11) | | [Debian 10 Buster](../../installation/packaged/#debian-10) | -| [Debian 9 Stretch](../../installation/packaged/#debian-9) | | [CentOS/RHEL 8.x](../../installation/packaged/#centos-8--rhel-8) | | [CentOS/RHEL 7.x](../../installation/packaged/#centos-7--rhel-7) | | [Suse Linux Enterprise Server 12](../../installation/packaged/#sles-12) | diff --git a/docs/release-notes/10/10-0-0/README.md b/docs/release-notes/10/10-0-0/README.md index d68639626428..66f23787ea7b 100644 --- a/docs/release-notes/10/10-0-0/README.md +++ b/docs/release-notes/10/10-0-0/README.md @@ -18,11 +18,11 @@ Read below to get a detailed overview of what is new in OpenProject 10. ## Drag & drop (manual sorting) in work package table -OpenProject 10 adds drag and drop to the work package list. You can easily change the work package order by simply dragging a work package to a desired place. +OpenProject 10 adds drag and drop to the work package table. You can easily change the work package order by simply dragging a work package to a desired place. This also allows you to change a work package's hierarchy (e.g. by dragging a work package from the first hierarchy level below an existing work package). -When you group the work package list based on an attribute (e.g. the assignee, project or status), you can easily change an attribute by dropping a work package to a different group. Want to change the assignee? Simply drag and drop a work package to a different assignee group. +When you group the work package table based on an attribute (e.g. the assignee, project or status), you can easily change an attribute by dropping a work package to a different group. Want to change the assignee? Simply drag and drop a work package to a different assignee group. ![Drag & Drop work packages](drag-drop-1.png) @@ -100,7 +100,7 @@ OpenProject 10 significantly improves the performance, especially for the work p - Added: Custom Fields are now shown in Projects API [[#30387](https://community.openproject.com/wp/30387)] - Changed: Render text field links in the backend independently of the user [[#30501](https://community.openproject.com/wp/30501)] - Changed: Widget: add graphs with single dataset [[#30522](https://community.openproject.com/wp/30522)] -- Changed: When drag and drop work packages indicate drop zone in work package list as flat line instead of entire row [[#30723](https://community.openproject.com/wp/30723)] +- Changed: When drag and drop work packages indicate drop zone in work package table as flat line instead of entire row [[#30723](https://community.openproject.com/wp/30723)] - Changed: View selector to switch between Gantt view, tiles view and list view [[#30746](https://community.openproject.com/wp/30746)] - Changed: Add menu items "Sort by..." and "Group by..." to the more menu of a work packages view so the features are more visible [[#30751](https://community.openproject.com/wp/30751)] - Changed: Don't highlight the first row in the split view [[#30765](https://community.openproject.com/wp/30765)] diff --git a/docs/release-notes/10/10-4-0/README.md b/docs/release-notes/10/10-4-0/README.md index d742b1a8f347..a406650985dd 100644 --- a/docs/release-notes/10/10-4-0/README.md +++ b/docs/release-notes/10/10-4-0/README.md @@ -136,7 +136,7 @@ You can slice 3D objects in all dimensions to get a view on the exact thing you - Fixed: Duplicate work package priorities in Administration -> Enumerations \[[#32041](https://community.openproject.com/wp/32041)\] - Fixed: In German separator for costs is wrong \[[#32042](https://community.openproject.com/wp/32042)\] - Fixed: Roadmap index page highlights wrong menu item \[[#32103](https://community.openproject.com/wp/32103)\] -- Fixed: Server error after actions in the work package list \[[#32112](https://community.openproject.com/wp/32112)\] +- Fixed: Server error after actions in the work package table \[[#32112](https://community.openproject.com/wp/32112)\] - Fixed: Parent changes by drag and drop are not saved correctly \[[#32114](https://community.openproject.com/wp/32114)\] - Fixed: Select all / unselect all for modules, work package types, etc. not visible \[[#32116](https://community.openproject.com/wp/32116)\] - Fixed: Query indicates unsaved changes without changes to query \[[#32118](https://community.openproject.com/wp/32118)\] @@ -146,7 +146,7 @@ You can slice 3D objects in all dimensions to get a view on the exact thing you - Fixed: Tab "Email notifications" loads for long time and header not shown \[[#32136](https://community.openproject.com/wp/32136)\] - Fixed: Tabs in Firefox flicker \[[#32137](https://community.openproject.com/wp/32137)\] - Fixed: OpenProject logo in light theme is hard to see \[[#32141](https://community.openproject.com/wp/32141)\] -- Fixed: Error 403 when trying to export work package list with descriptions \[[#32142](https://community.openproject.com/wp/32142)\] +- Fixed: Error 403 when trying to export work package table with descriptions \[[#32142](https://community.openproject.com/wp/32142)\] - Fixed: Wrong icon in time entries modal \[[#32143](https://community.openproject.com/wp/32143)\] - Fixed: The date field has wrong width in time entries modal \[[#32145](https://community.openproject.com/wp/32145)\] - Fixed: The hours field has wrong width in time entries modal \[[#32146](https://community.openproject.com/wp/32146)\] diff --git a/docs/release-notes/10/10-5-0/README.md b/docs/release-notes/10/10-5-0/README.md index e75a9a269a2b..0d529bac17d9 100644 --- a/docs/release-notes/10/10-5-0/README.md +++ b/docs/release-notes/10/10-5-0/README.md @@ -158,7 +158,7 @@ An export function can then be used to distribute the BCFs back to the local app - Fixed: Query indicates unsaved changes without changes to query \[[#32843](https://community.openproject.com/wp/32843)\] - Fixed: Avatars are incorrectly cached \[[#32870](https://community.openproject.com/wp/32870)\] - Fixed: Hourly cron synchronization not executed in docker context \[[#32884](https://community.openproject.com/wp/32884)\] -- Fixed: Assignee list empty when creating a task in "modules" work package list \[[#32887](https://community.openproject.com/wp/32887)\] +- Fixed: Assignee list empty when creating a task in "modules" work package table \[[#32887](https://community.openproject.com/wp/32887)\] - Fixed: [Docker] Attach files error "An internal error has occurred. The attachment could not be saved due to lacking file system permissions" \[[#32890](https://community.openproject.com/wp/32890)\] - Fixed: Inconsistent breadcrumb in Administration -> Enterprise edition \[[#32905](https://community.openproject.com/wp/32905)\] - Fixed: Styling and consistency issues in the confirm deletion modal for the EE token \[[#32908](https://community.openproject.com/wp/32908)\] diff --git a/docs/release-notes/10/10-6-0/README.md b/docs/release-notes/10/10-6-0/README.md index b956e9394756..98e2fcb7bcff 100644 --- a/docs/release-notes/10/10-6-0/README.md +++ b/docs/release-notes/10/10-6-0/README.md @@ -37,7 +37,7 @@ From now on, time logging is even quicker. You won’t have to leave your curre -Also, you can log time to a work package directly from your work package list view if you include the SPENT TIME as a column to the list. Clicking on the Log time will also open a pop-up window to book your spent time. +Also, you can log time to a work package directly from your work package table view if you include the SPENT TIME as a table column. Clicking on the Log time will also open a pop-up window to book your spent time. ![time-log-work-package](time-log-work-package-1103367.png) @@ -80,7 +80,7 @@ Furthermore, the **styling of the news widget** on the project overview page as - Fixed: Time Tracking Issue After update OpenProject 10.5.2 (PostgreSQL) \[[#33310](https://community.openproject.com/wp/33310)\] - Fixed: Timeout / error 500 when setting current unit cost rate \[[#33319](https://community.openproject.com/wp/33319)\] - Fixed: Form misplaced after error \[[#33324](https://community.openproject.com/wp/33324)\] -- Fixed: Create child in work package list does not create parent-child relationship \[[#33329](https://community.openproject.com/wp/33329)\] +- Fixed: Create child in work package table does not create parent-child relationship \[[#33329](https://community.openproject.com/wp/33329)\] - Fixed: Oauth endpoints need to allow target hosts in CSP header "form-action" \[[#33336](https://community.openproject.com/wp/33336)\] - Fixed: Time logging not possible with custom field of type "version" \[[#33378](https://community.openproject.com/wp/33378)\] - Fixed: Mailing configuration appears not to be reloaded in workers \[[#33413](https://community.openproject.com/wp/33413)\] diff --git a/docs/release-notes/11/11-0-0/README.md b/docs/release-notes/11/11-0-0/README.md index 49cdea0bf2aa..13d9a61c89be 100644 --- a/docs/release-notes/11/11-0-0/README.md +++ b/docs/release-notes/11/11-0-0/README.md @@ -256,7 +256,7 @@ There are lots and lots of new things we packed into 11.0 to tell you about. - Changed: Flexible width of edit field of widget title \[[#32176](https://community.openproject.com/wp/32176)\] - Changed: Add scheduling mode to work package in back end (Database, Contracts, API) \[[#32877](https://community.openproject.com/wp/32877)\] - Changed: Adhere to scheduling mode when scheduling \[[#32878](https://community.openproject.com/wp/32878)\] -- Changed: Display scheduling mode in work package list \[[#32879](https://community.openproject.com/wp/32879)\] +- Changed: Display scheduling mode in work package table \[[#32879](https://community.openproject.com/wp/32879)\] - Changed: Display scheduling mode in work package view (full & split) \[[#32880](https://community.openproject.com/wp/32880)\] - Changed: Show work package's children duration bar on Gantt charts \[[#32881](https://community.openproject.com/wp/32881)\] - Changed: New seed data for "Demo project" - work packages \[[#32882](https://community.openproject.com/wp/32882)\] diff --git a/docs/release-notes/11/11-1-0/README.md b/docs/release-notes/11/11-1-0/README.md index b7a281d2696b..4a402a246479 100644 --- a/docs/release-notes/11/11-1-0/README.md +++ b/docs/release-notes/11/11-1-0/README.md @@ -34,7 +34,7 @@ With OpenProject 11.1 users are now able to **aggregate milestones for projects ## Collapse all button for groups in the work packages list -In the work package list it is possible to group by any attribute, e.g. assignee, status, priority or type. Now, once grouped by an attribute, you will have a **collapse all button on top of the work packages list** to close and open all attributes within a group at once. +In the work package table it is possible to group by any attribute, e.g. assignee, status, priority or type. Now, once grouped by an attribute, you will have a **collapse all button on top of the work packages list** to close and open all attributes within a group at once. ![Collapse-all-button](Collapse-all-button.png) diff --git a/docs/release-notes/11/11-2-0/README.md b/docs/release-notes/11/11-2-0/README.md index 7bc3a41160b4..beb7d2d57361 100644 --- a/docs/release-notes/11/11-2-0/README.md +++ b/docs/release-notes/11/11-2-0/README.md @@ -46,7 +46,7 @@ The user administration is now distributed to non-admins by a new global role f ## UI and UX improvements and various bug fixes -Furthermore, with 11.2 we have implemented various UI and UX improvements for OpenProject. We harmonized the navigation for the time and costs module so that it is consistent with the other navigation. Also, we adapted the background colors of sum rows and group rows in the work package list so that it is easier to understand. We introduced a group show page (similar to the users show page) in order to link this page in case of mentioning a group and be also available for non-admins. +Furthermore, with 11.2 we have implemented various UI and UX improvements for OpenProject. We harmonized the navigation for the time and costs module so that it is consistent with the other navigation. Also, we adapted the background colors of sum rows and group rows in the work package table so that it is easier to understand. We introduced a group show page (similar to the users show page) in order to link this page in case of mentioning a group and be also available for non-admins. ### All bug fixes and changes diff --git a/docs/release-notes/12-0-0/README.md b/docs/release-notes/12-0-0/README.md index 4350e3400f9a..cb3ad1f71a2a 100644 --- a/docs/release-notes/12-0-0/README.md +++ b/docs/release-notes/12-0-0/README.md @@ -134,7 +134,7 @@ OpenProject 12.0 will deprecate PostgreSQL versions < 13. This will result in a - Fixed: Dead links and unsuitable heading in Administration -> Plugins \[[#34825](https://community.openproject.com/wp/34825)\] - Fixed: Wrong symbol (prohibition sign) when hovering over "Spent time" in the work packages details view \[[#34832](https://community.openproject.com/wp/34832)\] - Fixed: meeting time is wrong for members in different time zone \[[#34901](https://community.openproject.com/wp/34901)\] -- Fixed: Grouping work package list by bool custom field fails \[[#34904](https://community.openproject.com/wp/34904)\] +- Fixed: Grouping work package table by bool custom field fails \[[#34904](https://community.openproject.com/wp/34904)\] - Fixed: Week number is wrong after November \[[#35095](https://community.openproject.com/wp/35095)\] - Fixed: Highlighting in date picker still incorrect \[[#35107](https://community.openproject.com/wp/35107)\] - Fixed: Error loading list on board (e.g. Status board) for users who don't have access to filtered projects \[[#35563](https://community.openproject.com/wp/35563)\] @@ -172,7 +172,7 @@ OpenProject 12.0 will deprecate PostgreSQL versions < 13. This will result in a - Fixed: Order of Wiki-Pages in the configuration pane is by edit timestamp \[[#38361](https://community.openproject.com/wp/38361)\] - Fixed: Back button is misplaced on mobile \[[#38518](https://community.openproject.com/wp/38518)\] - Fixed: Migration of journable_type "CostObject" -> "Budget" may fail \[[#38525](https://community.openproject.com/wp/38525)\] -- Fixed: Context menu icon in Subject header of the work package list misplaced \[[#38562](https://community.openproject.com/wp/38562)\] +- Fixed: Context menu icon in Subject header of the work package table misplaced \[[#38562](https://community.openproject.com/wp/38562)\] - Fixed: [Wiki] Special Characters in Wiki Page Title breaks Search \[[#38606](https://community.openproject.com/wp/38606)\] - Fixed: Missing user in activity for multi select user custom field \[[#38631](https://community.openproject.com/wp/38631)\] - Fixed: Order of list custom fields not kept \[[#38639](https://community.openproject.com/wp/38639)\] diff --git a/docs/release-notes/12-1-0/README.md b/docs/release-notes/12-1-0/README.md index 0d6d3b1e36e6..4346cd1be63a 100644 --- a/docs/release-notes/12-1-0/README.md +++ b/docs/release-notes/12-1-0/README.md @@ -172,7 +172,7 @@ We added a new “Files” tab in the work package details. This way, you will h - Fixed: Include projects - Frontend refinements \[[#41263](https://community.openproject.com/wp/41263)\] - Fixed: Existing cards not being displayed on initial load \[[#41305](https://community.openproject.com/wp/41305)\] - Fixed: Teamplanner crashes when dropping a wp from the add existing pane \[[#41413](https://community.openproject.com/wp/41413)\] -- Fixed: Cannot select all projects in work package list \[[#41437](https://community.openproject.com/wp/41437)\] +- Fixed: Cannot select all projects in work package table \[[#41437](https://community.openproject.com/wp/41437)\] - Fixed: Attribute help text opens when clicking ng-select dropdown \[[#41442](https://community.openproject.com/wp/41442)\] - Fixed: API responses inconsistent between Bearer tokens and API tokens \[[#41480](https://community.openproject.com/wp/41480)\] - Fixed: Create new task on my page not possible: Project not shown in pulldown list \[[#41533](https://community.openproject.com/wp/41533)\] diff --git a/docs/release-notes/12-5-8/README.md b/docs/release-notes/12-5-8/README.md new file mode 100644 index 000000000000..28b4db46d366 --- /dev/null +++ b/docs/release-notes/12-5-8/README.md @@ -0,0 +1,37 @@ +--- +title: OpenProject 12.5.8 +sidebar_navigation: + title: 12.5.8 +release_version: 12.5.8 +release_date: 2023-07-18 +--- + +# OpenProject 12.5.8 + +Release date: 2023-07-18 + +We released [OpenProject 12.5.8](https://community.openproject.com/versions/1829). +The release contains several bug fixes and we recommend updating to the newest version. + + +#### Bug fixes and changes + +- Fixed: After calling "Create project copy" API endpoint, the Job Status API should return the new projects id, not only its identifier \[[#37783](https://community.openproject.com/wp/37783)\] +- Fixed: Entries in summary emails not clickable in Outlook (links not working) \[[#40157](https://community.openproject.com/wp/40157)\] +- Fixed: Custom project attribute triggers error when selected during project creation \[[#46827](https://community.openproject.com/wp/46827)\] +- Fixed: Preview of linked WP is cut off in split view when close to the edge \[[#46837](https://community.openproject.com/wp/46837)\] +- Fixed: Selected date (number) not visible when matches with Today \[[#47145](https://community.openproject.com/wp/47145)\] +- Fixed: Opening of CKEditor sporadicallly taking 10s+ when trying to comment on work packages \[[#47795](https://community.openproject.com/wp/47795)\] +- Fixed: Projects tab of group administration should not offer adding to archived projects \[[#48263](https://community.openproject.com/wp/48263)\] +- Fixed: Grape responds with text/plain 303 redirect to a JSON api \[[#48622](https://community.openproject.com/wp/48622)\] +- Fixed: Meeting Minutes double submit causes lock version error \[[#49061](https://community.openproject.com/wp/49061)\] +- Fixed: Cost reports XLS export results in timeout of web request \[[#49083](https://community.openproject.com/wp/49083)\] +- Fixed: Internal error occurs when invalid project is set to template \[[#49116](https://community.openproject.com/wp/49116)\] +- Changed: Allow internal login even if omniauth direct provider selected \[[#47930](https://community.openproject.com/wp/47930)\] + +#### Contributions +A big thanks to community members for reporting bugs and helping us identifying and providing fixes. + +Special thanks for reporting and finding bugs go to + +Petros Christopoulos, Gerrit Bonn diff --git a/docs/release-notes/4/4-0-0/README.md b/docs/release-notes/4/4-0-0/README.md index 92abca8fe96f..7a3f56849f38 100644 --- a/docs/release-notes/4/4-0-0/README.md +++ b/docs/release-notes/4/4-0-0/README.md @@ -25,7 +25,7 @@ easy integration with OmniAuth strategy providers such as Google. OpenProject 4.0 replaces the old filter and options section on the work package page with a convenient integrated toolbar. -Now users no longer need to leave the work package list in order to use +Now users no longer need to leave the work package table in order to use many features that were previously only available on a separate configuration page. In addition, filters are now expandable and it is possible to create diff --git a/docs/release-notes/4/4-0-10/README.md b/docs/release-notes/4/4-0-10/README.md index 964d0a9868d8..078a877124d6 100644 --- a/docs/release-notes/4/4-0-10/README.md +++ b/docs/release-notes/4/4-0-10/README.md @@ -12,7 +12,7 @@ OpenProject 4.0.10 has been released which includes a bug fix for the work package filters. Due to an error, it was not possible to filter for categories in the -work package list. +work package table. This error has been fixed with OpenProject 4.0.10 ([#19809](https://community.openproject.org/work_packages/19809 "#19809")). @@ -22,4 +22,3 @@ For further information on the release, please refer to the or take a look at [GitHub](https://github.com/opf/openproject/tree/v4.0.10 "GitHub"). - diff --git a/docs/release-notes/4/4-0-4/README.md b/docs/release-notes/4/4-0-4/README.md index 209e5ec666c4..228584af9298 100644 --- a/docs/release-notes/4/4-0-4/README.md +++ b/docs/release-notes/4/4-0-4/README.md @@ -16,7 +16,7 @@ OpenProject 4.0.4. ## OpenProject 4.0.4 - Due to a regression it was not possible to group by attributes which - are not displayed in the work package list. This has been resolved + are not displayed in the work package table. This has been resolved ([#17738](https://community.openproject.org/work_packages/17738 "500 on WP table on grouping by non displayed column (closed)")). ## List of changes @@ -24,4 +24,3 @@ OpenProject 4.0.4. For a complete list of changes, please refer to the [Changelog v.4.0.4](https://community.openproject.org/versions/559). - diff --git a/docs/release-notes/4/4-0-5/README.md b/docs/release-notes/4/4-0-5/README.md index 85fbb99fbbf1..015b66a3296d 100644 --- a/docs/release-notes/4/4-0-5/README.md +++ b/docs/release-notes/4/4-0-5/README.md @@ -13,14 +13,14 @@ We advise everyone to update their OpenProject installations. The following bugs have been fixed in the core: - - When sorting by a version in the work package list, the result was + - When sorting by a version in the work package table, the result was not shown but an unclear error message displayed ([#17928](https://community.openproject.org/work_packages/17928 "Sorting by version leads to 500 in experimental API (\"Unable to retrieve query from URL\") (closed)")). - Clicking on the project name in a timeline let to “Page not found” ([#17819](https://community.openproject.org/work_packages/17819 "[Regression] Page not found when clicking on project link in timeline (NaN in link) (closed)")). - The “Close” icon of modals was cut off ([#17818](https://community.openproject.org/work_packages/17818 "[Regression] Close icon of modals is cut off (closed)")). - - Dates in the work package list were sometimes not displayed properly + - Dates in the work package table were sometimes not displayed properly ([#17043](https://community.openproject.org/work_packages/17043 "Single bad translation on work package table. (closed)")). Thanks a lot to [Mike Lewis](https://community.openproject.org/users/35400) for reporting this error! @@ -37,11 +37,10 @@ repository): ![SyntaxHighlighting](SyntaxHighlighting.png) In the Translations plugin an error was fixed which caused translations -in the work package list not to be displayed properly +in the work package table not to be displayed properly ([#17944](https://community.openproject.org/work_packages/17944 "Missing js files added (closed)")). For a complete list of changes, please refer to the [Changelog v4.0.5](https://community.openproject.org/versions/566) or take a look at [GitHub](https://github.com/opf/openproject/tree/v4.0.5). - diff --git a/docs/release-notes/4/4-0-7/README.md b/docs/release-notes/4/4-0-7/README.md index 466318dc0562..f8cf2e00bf54 100644 --- a/docs/release-notes/4/4-0-7/README.md +++ b/docs/release-notes/4/4-0-7/README.md @@ -18,7 +18,7 @@ In the previous OpenProject version it was possible to see some work package information without authorization. This error has been fixed with OpenProject 4.0.7. -Additionally, several errors on the work package list have been fixed: +Additionally, several errors on the work package table have been fixed: - Deleted work package queries which have been added to the side menu are now properly removed when the query is deleted @@ -38,4 +38,3 @@ To get an overview of the new version, please refer to the take a look at [GitHub](https://github.com/opf/openproject/tree/v4.0.7 "GitHub"). - diff --git a/docs/release-notes/4/4-1-0/README.md b/docs/release-notes/4/4-1-0/README.md index 98cc3790da66..87f91e4730f2 100644 --- a/docs/release-notes/4/4-1-0/README.md +++ b/docs/release-notes/4/4-1-0/README.md @@ -27,7 +27,7 @@ implemented to the split screen: ## In-place editing on work package split screen OpenProject 4.1 enhances the work package split screen by allowing users -to update work packages without leaving the work package list. Via the +to update work packages without leaving the work package table. Via the split screen many work package attributes can be edited on the fly, such as: @@ -37,15 +37,15 @@ as: Several work package values can be edited at once. -## Improved work package list and filters +## Improved work package table and filters The work package filter section now shows the number of activated filters – even when the filter section is collapsed. Additionally, the -work package ID in the work package list is no longer static, but can be -configured as the other columns in the work package list: +work package ID in the work package table is no longer static, but can be +configured as the other columns in the work package table: - Number of activated filters shown - - Work package ID in work package list can be added, removed, changed + - Work package ID in work package table can be added, removed, changed in order ## Improved work package full screen @@ -75,7 +75,7 @@ on the work package page. - In-place editing can be performed via keyboard - Modal windows on work package page include helpful hints for both seeing and blind users - - Additional access key for switching between work package list and + - Additional access key for switching between work package table and split screen - Contrast for watcher icon improved diff --git a/docs/release-notes/5/5-0-0/README.md b/docs/release-notes/5/5-0-0/README.md index 28db66a4657f..061333c97669 100644 --- a/docs/release-notes/5/5-0-0/README.md +++ b/docs/release-notes/5/5-0-0/README.md @@ -11,7 +11,7 @@ ## Work package creation via split screen OpenProject 5.0 extends the work package split screen functionality and -allows users to create work packages from the work package list via the +allows users to create work packages from the work package table via the work package split screen ([#17549](https://community.openproject.com/work_packages/17549/activity)). @@ -238,4 +238,3 @@ OpenProject Packager edition. A large number of bugs have been fixed with the release of OpenProject 5.0. - diff --git a/docs/release-notes/6/6-0-0/README.md b/docs/release-notes/6/6-0-0/README.md index e7cd2970459f..0d3997832f79 100644 --- a/docs/release-notes/6/6-0-0/README.md +++ b/docs/release-notes/6/6-0-0/README.md @@ -13,32 +13,27 @@ package page. ## Inline create for work packages -OpenProject 6.0 adds the ability to rapidly create a list of work -packages (e.g. tasks) via the work package list -([#13702](https://community.openproject.com/work_packages/13702/activity)). +OpenProject 6.0 adds the ability to rapidly create a list of work packages (e.g. tasks) via the work package table ([#13702](https://community.openproject.com/work_packages/13702/activity)). -As a result, you can now easily and swiftly create task lists. +As a result, you can now easily and swiftly create task table. -## Inline edit in work package list +## Inline edit in work package table -With OpenProject 6.0 it is possible to use inline editing to swiftly -update work packages (such as tasks, features, milestones) directly from -the work package -list ([#18404](https://community.openproject.com/work_packages/18404/activity)). +With OpenProject 6.0 it is possible to use inline editing to swiftly update work packages (such as tasks, features, milestones) directly from +the work package table ([#18404](https://community.openproject.com/work_packages/18404/activity)). It is no longer necessary to open a separate split screen view. Note, that all links (except for ID) have been removed from the work package -list and form. +table and form. -## Automatic synchronization between work package split screen and work package list +## Automatic synchronization between work package split screen and work package table -The split screen view automatically reflects changes in the work package -list. When a work package is created, it is immediately shown in the -list. Likewise, the work package list directly displays changes on the +The split screen view automatically reflects changes in the work package table. When a work package is created, it is immediately shown in the +table. Likewise, the work package table directly displays changes on the split screen. @@ -74,7 +69,7 @@ usability improvements: - You can add attachment (e.g. images) to the work package description using drag and drop. - It is possible to create work packages from the global work package - list. + table. - It is possible to set the project when creating a work package. - Users can more easily create work packages on the split and full screen through the removed dropdown menu. @@ -109,4 +104,3 @@ OpenProject 6.0 contains a large number of bugs fixes. For an extensive overview of bug fixes please refer to the [following list](https://community.openproject.com/projects/openproject/work_packages?query_props=%7B%22c%22:%5B%22id%22,%22type%22,%22status%22,%22subject%22,%22assigned_to%22%5D,%22t%22:%22parent:desc%22,%22f%22:%5B%7B%22n%22:%22fixed_version_id%22,%22o%22:%22%253D%22,%22t%22:%22list_optional%22,%22v%22:%22666%22%7D,%7B%22n%22:%22type_id%22,%22o%22:%22%253D%22,%22t%22:%22list_model%22,%22v%22:%221%22%7D,%7B%22n%22:%22subproject_id%22,%22o%22:%22*%22,%22t%22:%22list_subprojects%22%7D%5D,%22pa%22:1,%22pp%22:20%7D). - diff --git a/docs/release-notes/6/6-0-1/README.md b/docs/release-notes/6/6-0-1/README.md index 68cce6182bbf..a35eedfc74cb 100644 --- a/docs/release-notes/6/6-0-1/README.md +++ b/docs/release-notes/6/6-0-1/README.md @@ -52,7 +52,7 @@ automatically. back to previous value) ([#23696](https://community.openproject.com/work_packages/23696/activity)). - Grouped versions from other projects (inherited) in work package - list were not displayed correctly + table were not displayed correctly ([#23697](https://community.openproject.com/work_packages/23697/activity)). - Work package export (XLS, PDF, CSV) ignored filters, sorting and grouping @@ -60,7 +60,7 @@ automatically. - Collapsing groups in work package page did not collapse related rows ([#23718](https://community.openproject.com/work_packages/23718/activity)). - Inherited versions were lost when making changes in the work package - list + table ([#23719](https://community.openproject.com/work_packages/23719/activity)). - Custom fields were not displayed in queries ([#23725](https://community.openproject.com/work_packages/23725/activity)). @@ -89,4 +89,3 @@ or take a look at For a free 30 day trial create your own OpenProject instance on [OpenProject.org](https://openproject.org/). - diff --git a/docs/release-notes/6/6-0-2/README.md b/docs/release-notes/6/6-0-2/README.md index 08944fbda3fd..190e8e046f94 100644 --- a/docs/release-notes/6/6-0-2/README.md +++ b/docs/release-notes/6/6-0-2/README.md @@ -35,8 +35,7 @@ [#23768](https://community.openproject.com/work_packages/23768/activity), [#23651](https://community.openproject.com/work_packages/23651/activity)). -Additionally, the performance on the work package table has been -improved: Scrolling and hovering of large work package lists works +Additionally, the performance of the work package table has been improved: Scrolling and hovering over large work package tables works faster than before. Thanks a lot to the community, in particular Marc Vollmer, for @@ -51,4 +50,3 @@ or take a look at You can try OpenProject for free. For a free 30 day trial create your OpenProject instance on [OpenProject.org](https://openproject.org/). - diff --git a/docs/release-notes/6/6-0-4/README.md b/docs/release-notes/6/6-0-4/README.md index 50a5e2de18ba..805b6c679279 100644 --- a/docs/release-notes/6/6-0-4/README.md +++ b/docs/release-notes/6/6-0-4/README.md @@ -20,7 +20,7 @@ OpenProject 6.0.4 contains several bug and accessibility fixes. multiple attributes were changed in quick succession ([#23589](https://community.openproject.com/work_packages/23859)). - In the work package split screen the subject was not updated when it - was changed in the work package list + was changed in the work package table ([#23879](https://community.openproject.com/work_packages/23879)). - The project list on the work package screen appeared to be ordered randomly. It’s now sorted alphabetically @@ -60,4 +60,3 @@ or take a look at You can try OpenProject for free. For a free 30 day trial create your OpenProject instance on [OpenProject.org](https://openproject.org/). - diff --git a/docs/release-notes/6/6-0-5/README.md b/docs/release-notes/6/6-0-5/README.md index e14b0bd2b354..f1de4b2e36c9 100644 --- a/docs/release-notes/6/6-0-5/README.md +++ b/docs/release-notes/6/6-0-5/README.md @@ -13,14 +13,14 @@ OpenProject 6.0.5 contains several bug fixes and improvements. **The following bugs have been fixed in OpenProject 6.0.5:** - Work packages - - Links in the parent column in the work package list were not + - Links in the parent column in the work package table were not correctly displayed but showed an error ([#23865](https://community.openproject.com/work_packages/23865/activity)). - The grouping of work packages was lost on export. - In work package custom fields the zero was displayed as not set (“-“) ([#23975](https://community.openproject.com/work_packages/23975/activity)). - - The right-click context menu on the work package list did not + - The right-click context menu on the work package table did not disappear when clicking an a work package ID or on attribute fields ([#24005](https://community.openproject.com/work_packages/24005/activity)). @@ -35,7 +35,7 @@ OpenProject 6.0.5 contains several bug fixes and improvements. were incorrectly displayed / escaped ([#24050](https://community.openproject.com/work_packages/24050/activity)). - It was not possible to set the default “Objects per page” for - the work package list + the work package table ([#23846](https://community.openproject.com/work_packages/23846/activity)). - There was a translation missing when displaying changes in the work package description @@ -87,7 +87,7 @@ OpenProject 6.0.5 contains several bug fixes and improvements. [#23992](https://community.openproject.com/work_packages/23992/activity)). In addition the link to see and edit the logged time has been added to -the work package list and work package page +the work package table and work package page ([#24023](https://community.openproject.com/work_packages/24023/activity)). Thanks a lot to the community, in particular to Marc Vollmer, Frank @@ -104,4 +104,3 @@ or take a look at You can try OpenProject for free. For a free 30 day trial create your OpenProject instance on [OpenProject.org](https://openproject.org/). - diff --git a/docs/release-notes/6/6-1-0/README.md b/docs/release-notes/6/6-1-0/README.md index 84510b85ed3f..3a9d74a34c0d 100644 --- a/docs/release-notes/6/6-1-0/README.md +++ b/docs/release-notes/6/6-1-0/README.md @@ -36,7 +36,7 @@ tree-structure. ## Improved performance for work packages -The work package list is now loaded more quickly and changes can be made +The work package table is now loaded more quickly and changes can be made faster ([#23780](https://community.openproject.com/work_packages/23780/activity)). diff --git a/docs/release-notes/6/6-1-1/README.md b/docs/release-notes/6/6-1-1/README.md index e23073925859..5772e5cbe185 100644 --- a/docs/release-notes/6/6-1-1/README.md +++ b/docs/release-notes/6/6-1-1/README.md @@ -24,7 +24,7 @@ OpenProject 6.1.1 contains several bug fixes and improvements. ([#24265](https://community.openproject.com/work_packages/24265/activity)). - Textile \ and @ did not prevent code execution in the work package description. - - The “Spent time” link on the work package list caused an error + - The “Spent time” link on the work package table caused an error 404 in subfolder installations ([#24427](https://community.openproject.com/projects/openproject/work_packages/24427/activity)). - Line breaks were not displayed in the work package description @@ -69,4 +69,3 @@ or take a look at You can try OpenProject for free. For a free 30 day trial create your OpenProject instance on [OpenProject.org](https://openproject.org/). - diff --git a/docs/release-notes/7/7-0-0/README.md b/docs/release-notes/7/7-0-0/README.md index cac87816ccff..1e9000ad6d59 100644 --- a/docs/release-notes/7/7-0-0/README.md +++ b/docs/release-notes/7/7-0-0/README.md @@ -11,22 +11,21 @@ OpenProject 7.0 is the biggest OpenProject release yet with amazing new features: A new interactive timeline, hierarchies in the work package -list, multi-select custom fields and much more. +table, multi-select custom fields and much more. ## New integrated Gantt chart / timeline OpenProject 7.0 introduces a new Gantt chart which is integrated in the -work package list -([#13785](https://community.openproject.com/projects/openproject/work_packages/13785/activity)). +work package table ([#13785](https://community.openproject.com/projects/openproject/work_packages/13785/activity)). The new timeline is much more interactive and user-friendly than the old timeline. -## Display hierarchies in work package list +## Display hierarchies in work package table -You can display hierarchies on the work package list and collapse and +You can display hierarchies on the work package table and collapse and expand them ([#24647](https://community.openproject.com/projects/openproject/work_packages/24647/activity)). @@ -43,9 +42,9 @@ hidden by default. -## Filter based on date in work package list +## Filter based on date in work package table -The work package list now supports filtering based on fixed dates. This +The work package table now supports filtering based on fixed dates. This affects all date attributes (e.g. start / due date, created on / updated on) ([#22585](https://community.openproject.com/projects/telekom/work_packages/22585/activity)). @@ -71,7 +70,7 @@ project settings ## Zen-mode on work package page -With the zen mode on the work package list, you can maximize the +With the zen mode on the work package table, you can maximize the available screen real estate by hiding the side and top navigation ([#18216](https://community.openproject.com/projects/openproject/work_packages/18216/activity)). @@ -104,8 +103,7 @@ Additionally, you can change the colors by using a custom color scheme ## Performance improvements -The performance – especially for the work package list – has been -improved. Loading and displaying work packages is faster. +The performance – especially for the work package table – has been improved. Loading and displaying work packages is faster. ## Improved design @@ -119,4 +117,3 @@ OpenProject 7.0 contains a large number of bugs fixes. For an extensive overview of bug fixes please refer to the [following list](https://community.openproject.com/projects/openproject/work_packages?query_props=%7B%22c%22:%5B%22id%22,%22subject%22,%22type%22,%22status%22,%22assignee%22%5D,%22p%22:%22openproject%22,%22t%22:%22parent:desc%22,%22f%22:%5B%7B%22n%22:%22version%22,%22o%22:%22%253D%22,%22t%22:%22list_optional%22,%22v%22:%22750%22%7D,%7B%22n%22:%22type%22,%22o%22:%22%253D%22,%22t%22:%22list_model%22,%22v%22:%221%22%7D,%7B%22n%22:%22subprojectId%22,%22o%22:%22*%22,%22t%22:%22list_subprojects%22,%22v%22:%5B%5D%7D%5D,%22pa%22:1,%22pp%22:20%7D). - diff --git a/docs/release-notes/7/7-2-0/README.md b/docs/release-notes/7/7-2-0/README.md index d037906f46b0..e751ae86ade5 100644 --- a/docs/release-notes/7/7-2-0/README.md +++ b/docs/release-notes/7/7-2-0/README.md @@ -26,7 +26,7 @@ is shown in the Gantt chart and start and due date is visible on hover. ### Full-width Gantt chart / timeline -By removing columns from the work package list the width of the Gantt +By removing columns from the work package table the width of the Gantt chart can be increased. By removing all columns, the Gantt chart expands to almost the entire width of the page. @@ -47,10 +47,10 @@ on the activity tab to hide all other activity entries. -### Relations in the work package list (Enterprise add-on) +### Relations in the work package table (Enterprise add-on) With OpenProject 7.2 you can show relation columns in the work package -list. A label shows how many related elements a work package has. By +table. A label shows how many related elements a work package has. By clicking on the label, the related work packages are shown. @@ -78,4 +78,3 @@ OpenProject 7.2 contains a large number of bugs fixes. For an extensive overview of bug fixes please refer to the [following list](https://community.openproject.com/projects/openproject/work_packages?query_props=%7B%22c%22:%5B%22id%22,%22subject%22,%22type%22,%22status%22,%22assignee%22%5D,%22tzl%22:%22days%22,%22hi%22:true,%22t%22:%22parent:desc%22,%22f%22:%5B%7B%22n%22:%22version%22,%22o%22:%22%253D%22,%22v%22:%5B%22824%22%5D%7D,%7B%22n%22:%22type%22,%22o%22:%22%253D%22,%22v%22:%5B%221%22%5D%7D,%7B%22n%22:%22subprojectId%22,%22o%22:%22*%22,%22v%22:%5B%5D%7D%5D,%22pa%22:1,%22pp%22:20%7D). - diff --git a/docs/release-notes/7/7-3-0/README.md b/docs/release-notes/7/7-3-0/README.md index 5e99cf35c301..a1e91fd8bc21 100644 --- a/docs/release-notes/7/7-3-0/README.md +++ b/docs/release-notes/7/7-3-0/README.md @@ -75,7 +75,7 @@ OpenProject 7.3 includes several usability improvements. The context menu on the work package page – which you can use to perform bulk updates – was quite hidden. (You need to right-click on the work -package list to open the menu.) Therefore, the work package list now +package table to open the menu.) Therefore, the work package table now contains an additional icon for each row that allows you to open the context menu. diff --git a/docs/release-notes/7/7-3-1/README.md b/docs/release-notes/7/7-3-1/README.md index b9397206d0e3..7bafa3523715 100644 --- a/docs/release-notes/7/7-3-1/README.md +++ b/docs/release-notes/7/7-3-1/README.md @@ -18,7 +18,7 @@ - An internal error occurred when exporting a budget as CSV. \[[#26518](https://community.openproject.com/wp/26518)\] - The selected work package was not focused when navigating from the - work package list to the fullscreen view and back. + work package table to the fullscreen view and back. - Drag and drop for work package custom field values of type “List” did not work. - In MS Edge work package attributes which were shown by themselves in @@ -42,4 +42,3 @@ For further information on the 7.3.1 release, please refer to the or take a look at [GitHub](https://github.com/opf/openproject/tree/v7.3.1). - diff --git a/docs/release-notes/7/7-4-0/README.md b/docs/release-notes/7/7-4-0/README.md index b23c9b1491b9..66b75fc8bdaf 100644 --- a/docs/release-notes/7/7-4-0/README.md +++ b/docs/release-notes/7/7-4-0/README.md @@ -104,7 +104,7 @@ functionality to allow you to work and update your data more smoothly. OpenProject 7.4 includes several usability improvements. -The PDF print layout for the work package list has been improved. When +The PDF print layout for the work package table has been improved. When you print out a work package in fullscreen view (using the browser’s print functionality), the layout is optimized and unnecessary information is hidden. diff --git a/docs/release-notes/7/7-4-7/README.md b/docs/release-notes/7/7-4-7/README.md index 4913a3b536f4..10415730b13a 100644 --- a/docs/release-notes/7/7-4-7/README.md +++ b/docs/release-notes/7/7-4-7/README.md @@ -13,7 +13,7 @@ regarding MessageBird adapter for Two-factor authentication. #### Work packages PDF export with images -Exporting a work package list can now optionally export image +Exporting a work package table can now optionally export image attachments of the work package. Additional options are added to the export modal. @@ -32,4 +32,3 @@ export modal. project autocompleter \[[#28039](https://community.openproject.com/wp/28039)\] - diff --git a/docs/release-notes/8/8-0-0/README.md b/docs/release-notes/8/8-0-0/README.md index 14ba264df774..5ad28462637e 100644 --- a/docs/release-notes/8/8-0-0/README.md +++ b/docs/release-notes/8/8-0-0/README.md @@ -90,7 +90,7 @@ predefined workflows. You save time and avoid errors. -## Conditional formatting for work package list (Enterprise add-on) +## Conditional formatting for work package table (Enterprise add-on) Rows in the work package page page can be highlighted based on the status or priority of the work packages. This makes it very easy to see diff --git a/docs/release-notes/9/9-0-0/README.md b/docs/release-notes/9/9-0-0/README.md index 95ae533d055e..f43cdb23160b 100644 --- a/docs/release-notes/9/9-0-0/README.md +++ b/docs/release-notes/9/9-0-0/README.md @@ -21,7 +21,7 @@ Read below to get a detailed overview of what is new in OpenProject 9. The board view is a new module for OpenProject and allows Scrum and Kanban-style agile project management. You can display display a board view with the different statuses shown as columns (similarly to a Kanban board) and quickly update the status. Alternatively, you can define a basic board with custom names or display versions as columns (e.g. to plan your roadmap). -Since boards display work packages - just like the work packages list - you can easily combine traditional and agile project management. Simply schedule your tasks in the Gantt chart and work on them from the boards view. +Since boards display work packages - just like the work package tables - you can easily combine traditional and agile project management. Simply schedule your tasks in the Gantt chart and work on them from the boards view. To use boards you need to use either the Enterprise cloud or the Enterprise on-premises edition. If you currently use the Community edition and would like to give boards a try, simply [request an Enterprise edition trial license](). @@ -47,7 +47,7 @@ You can filter and group by work package attributes and also display Gantt chart -## Updated work package list +## Updated work package table Assignees are now directly displayed as avatars in the work package page. Additionally, the work package type selection has been updated. @@ -59,7 +59,7 @@ Assignees are now directly displayed as avatars in the work package page. Additi OpenProject is even more user-friendly: You can add attachments (e.g. images) directly to meetings (agenda / minutes). -Creating work packages on the global work package list is now easier as well: When you select a type, only the projects in which the types are activated can be selected in the project menu. +Creating work packages on the global work package table is now easier as well: When you select a type, only the projects in which the types are activated can be selected in the project menu. Filters and work package attributes are improved and support auto-completion. diff --git a/docs/release-notes/README.md b/docs/release-notes/README.md index b15174f13922..cddba3108120 100644 --- a/docs/release-notes/README.md +++ b/docs/release-notes/README.md @@ -14,6 +14,13 @@ Stay up to date and get an overview of the new features included in the releases +## 12.5.8 + +Release date: 2023-07-18 + +[Release Notes](12-5-8/) + + ## 12.5.7 Release date: 2023-06-14 diff --git a/docs/system-admin-guide/authentication/kerberos/README.md b/docs/system-admin-guide/authentication/kerberos/README.md index e86675fe7506..66541be84fdd 100644 --- a/docs/system-admin-guide/authentication/kerberos/README.md +++ b/docs/system-admin-guide/authentication/kerberos/README.md @@ -139,6 +139,73 @@ For non-existing users, if you have an LDAP configured with automatic user regis +# Known issues + + + +## Using the OpenProject REST API + +As Kerberos provides its own Basic Auth challenges if configured as shown above, it will prevent you from using the OpenProject API using an Authorization header such as API key authentication or OAuth2. + +**Note:** A precondition to use this workaround is to run OpenProject under its own path (server prefix) such as `https://YOUR DOMAIN/openproject/`. If you are not using this, you need to first reconfigure the wizard with `openproject reconfigure` to use such a path prefix. Alternatively, you might have success by using a separate domain or subdomain, but this is untested. + + To work around this, you will have to configure a separate route to access the API, bypassing the Kerberos configuration. You can do that by modifying the `/etc/openproject/addons/apache2/custom/vhost/kerberos.conf`as follows: + + + +``` + # Add a Proxy for a separate route + # Replace /openproject/ with your own relative URL root / path prefix + ProxyPass /openproject-api/ http://127.0.0.1:6000/openproject/ retry=0 + ProxyPassReverse /openproject-api/ http://127.0.0.1:6000/openproject/ + + # Require kerberos flow for anything BUT /openproject-api + + AuthType GSSAPI + # The Basic Auth dialog name shown to the user + # change this freely + AuthName "EXAMPLE.COM realm login" + + # The credential store used by GSSAPI + GssapiCredStore keytab:/etc/apache2/openproject.keytab + + # Allow basic auth negotiation fallback + GssapiBasicAuth On + + # Uncomment this if you want to allow NON-TLS connections for kerberos + # GssapiSSLonly Off + + # Use the local user name without the realm. + # When off: OpenProject gets sent logins like "user1@EXAMPLE.com" + # When on: OpenProject gets sent logins like "user1" + GssapiLocalName On + + # Allow kerberos5 login mechanism + GssapiAllowedMech krb5 + + + # After authentication, Apache will set a header + # "X-Authenticated-User" to the logged in username + # appended with a configurable secret value + RequestHeader set X-Authenticated-User expr=%{REMOTE_USER}:MyPassword + + # Ensure the Authorization header is not passed to OpenProject + # as this will result in trying to perform basic auth with the API + RequestHeader unset Authorization + + # Apache directive to ensure a user is authenticated + Require valid-user + +``` + + + + + + + + + # Additional resources - [Kerberos documentation by Ubuntu](https://help.ubuntu.com/community/Kerberos) diff --git a/docs/system-admin-guide/manage-work-packages/work-package-settings/README.md b/docs/system-admin-guide/manage-work-packages/work-package-settings/README.md index c8d1d7ea8eae..7532d50c39c4 100644 --- a/docs/system-admin-guide/manage-work-packages/work-package-settings/README.md +++ b/docs/system-admin-guide/manage-work-packages/work-package-settings/README.md @@ -23,7 +23,7 @@ You can adjust the following: ![default highlighting mode](openproject_system_guide_default_highlighting_mode.png) -6. Customize the appearance of the work package lists to **define which work package attributes are displayed in the work package lists by default**. +6. Customize the appearance of the work package tables to **define which work package attributes are displayed in the work package tables by default**. Do not forget to save your changes with the blue **Save** button at the bottom. diff --git a/docs/system-admin-guide/manage-work-packages/work-package-status/README.md b/docs/system-admin-guide/manage-work-packages/work-package-status/README.md index b8b7a9d76d10..8a7c38ba2e04 100644 --- a/docs/system-admin-guide/manage-work-packages/work-package-status/README.md +++ b/docs/system-admin-guide/manage-work-packages/work-package-status/README.md @@ -10,7 +10,7 @@ keywords: work package status Work packages can have various status depending on their types, e.g. tasks can have the status new, in progress, done, on hold, rejected, closed. Or any other status which you would need. -The status can be set at the top of the work package details view or in the list view in the corresponding column. +The status can be set at the top of the work package details view or in the table view in the corresponding column. ![Sys-admin-work-package-status](Sys-admin-work-package-status.png)The status field can be configured under *Administration ->* *Work packages* -> *Status*. You will see the list of all the existing work package status in the system. You can add new status or change the name and order of existing status. To learn about the options for configuring the transition from one status to another navigate to [Manage work package workflows](../work-package-workflows). @@ -24,7 +24,7 @@ To create a new work package status click the green ***+ New Status*** icon. A new window will open, where you will be able to specify the following: 1. Name the new work package status. -2. Define if the new work package status closes a work package (e.g. relevant when filtering for closed for packages), e.g. a work package status "rejected" will set a work package technically on closed and it will not appear in the default work package list with Open Work packages. +2. Define if the new work package status closes a work package (e.g. relevant when filtering for closed for packages), e.g. a work package status "rejected" will set a work package technically on closed and it will not appear in the default work package table with Open Work packages. 3. Define if this status is set as default value when creating new work packages. BEWARE: If you decide to set the new status as default it will impact all work packages, existing and future ones. See more below. 4. Check if this status sets a **work package in read-only mode**. This means no work package attributes can be changed except the status. 5. Set a **color** for the work package status. The color appears in the status button of the work packages or in the work package table. diff --git a/docs/system-admin-guide/manage-work-packages/work-package-types/README.md b/docs/system-admin-guide/manage-work-packages/work-package-types/README.md index 01e62dd53449..310a70141283 100644 --- a/docs/system-admin-guide/manage-work-packages/work-package-types/README.md +++ b/docs/system-admin-guide/manage-work-packages/work-package-types/README.md @@ -80,7 +80,7 @@ Also, you can add a table of related work packages to your work package form. Cl ![Sys-admin-table-of-related-work-packages](openproject_system_guide_table_of_related_wp.png) -Now, you can configure which related work packages should be included in your embedded list, e.g. child work packages or work packages related to this work package, and more. Then you can configure how the list should be filtered, grouped, etc. The configuration of the work package list can be done according to the [work package table configuration](../../../user-guide/work-packages/work-package-table-configuration/). +Now, you can configure which related work packages should be included in your embedded list, e.g. child work packages or work packages related to this work package, and more. Then you can configure how the list should be filtered, grouped, etc. The configuration of the work package table can be done according to the [work package table configuration](../../../user-guide/work-packages/work-package-table-configuration/). Click the blue **Apply** button to add this work package list to your form. diff --git a/docs/system-admin-guide/system-settings/general-settings/README.md b/docs/system-admin-guide/system-settings/general-settings/README.md index 28a8a001efcc..f3ebb543e124 100644 --- a/docs/system-admin-guide/system-settings/general-settings/README.md +++ b/docs/system-admin-guide/system-settings/general-settings/README.md @@ -11,7 +11,7 @@ You can configure general system settings in OpenProject. Under System settings 1. **Application title**: This title will be displayed on the [application start page](../../../user-guide/start-page). -2. **Object per page options** define the options of how many objects (for example work packages or news entries) you can have displayed on one page. This is used for the pagination in the work package list. You can enter several values, separated by coma. Please note that the higher value you set, the more work packages will be initially loaded and therefore it might take longer time to load a work package page. +2. **Object per page options** define the options of how many objects (for example work packages or news entries) you can have displayed on one page. This is used for the pagination in the work package table. You can enter several values, separated by coma. Please note that the higher value you set, the more work packages will be initially loaded and therefore it might take longer time to load a work package page. 3. **Days displayed on project activity** determines how far back the project activities will be traced and displayed in the project's [Activity](../../../user-guide/activity). diff --git a/docs/user-guide/README.md b/docs/user-guide/README.md index 4b37b62297a3..f77e27dca769 100644 --- a/docs/user-guide/README.md +++ b/docs/user-guide/README.md @@ -29,25 +29,25 @@ Within a project Modules can be activated and deactivated under "Modules" in the Please choose the module or topic you want to learn more about. -| Topic | Content | -|------------------------------------------------------------------|:-----------------------------------------------------------------------------------| -| [Project overview page](project-overview) | How to create a project overview dashboard with important project information. | -| [Activity](activity) | How to find out about the latest activities in a project. | -| [Backlogs (Scrum)](backlogs-scrum) | How to manage a Scrum team in OpenProject with a product backlog and taskboard. | -| [Boards](agile-boards) | How to work with Agile boards for agile project management, e.g. Kanban. | -| [Budgets](budgets) | How to create and manage a project budget. | -| [Calendar](calendar) | How to display your work in a calendar in OpenProject. | -| [Documents](documents) | How to upload and share documents in OpenProject. | -| [Forums](forums) | How to manage forums to discuss and comment on topics. | -| [GitHub](../system-admin-guide/integrations/github-integration/) | How to manage the GitHub integration. | -| [Meetings](meetings) | How to manage meetings to create and share meeting agenda and meeting minutes. | -| [News](news) | How to create and manage News for your projects. | -| [Using the Nextcloud integration](nextcloud-integration) | How to link and use Nextcloud files and folders in OpenProject | -| [Team planner](team-planner) | How to use the team planner module. | -| [Time and costs](time-and-costs) | How to track time and costs in OpenProject and report spent time and costs. | -| [Roadmap](roadmap) | How to create a product roadmap with OpenProject. | -| [Wiki](wiki) | How to create and manage a wiki to collaboratively document and share information. | -| [Work packages](work-packages) | How to manage your work in a project. | -| [Gantt chart](gantt-chart) | How to create and manage a project plan in a Gantt chart. | -| [Members](members/) | How to manage Members in a project. | -| [Manage projects](projects) | Edit, create, copy, delete projects and change project settings. | +| Topic | Content | +| ------------------------------------------------------------ | :----------------------------------------------------------- | +| [Project overview page](project-overview) | How to create a project overview dashboard with important project information. | +| [Activity](activity) | How to find out about the latest activities in a project. | +| [Backlogs (Scrum)](backlogs-scrum) | How to manage a Scrum team in OpenProject with a product backlog and taskboard. | +| [Boards](agile-boards) | How to work with Agile boards for agile project management, e.g. Kanban. | +| [Budgets](budgets) | How to create and manage a project budget. | +| [Calendar](calendar) | How to display your work in a calendar in OpenProject. | +| [Documents](documents) | How to upload and share documents in OpenProject. | +| [Forums](forums) | How to manage forums to discuss and comment on topics. | +| [GitHub](../system-admin-guide/integrations/github-integration/) | How to manage the GitHub integration. | +| [Meetings](meetings) | How to manage meetings to create and share meeting agenda and meeting minutes. | +| [News](news) | How to create and manage News for your projects. | +| [Using the Nextcloud integration](nextcloud-integration) | How to link and use Nextcloud files and folders in OpenProject. | +| [Team planner](team-planner) | How to use the team planner module. | +| [Time and costs](time-and-costs) | How to track time and costs in OpenProject and report spent time and costs. | +| [Roadmap](roadmap) | How to create a product roadmap with OpenProject. | +| [Wiki](wiki) | How to create and manage a wiki to collaboratively document and share information. | +| [Work packages](work-packages) | How to manage your work in a project. | +| [Gantt chart](gantt-chart) | How to create and manage a project plan in a Gantt chart. | +| [Members](members/) | How to manage Members in a project. | +| [Manage projects](projects) | Edit, create, copy, delete projects and change project settings. | diff --git a/docs/user-guide/backlogs-scrum/work-with-backlogs/README.md b/docs/user-guide/backlogs-scrum/work-with-backlogs/README.md index f2ca4cc95161..4eee198be6ac 100644 --- a/docs/user-guide/backlogs-scrum/work-with-backlogs/README.md +++ b/docs/user-guide/backlogs-scrum/work-with-backlogs/README.md @@ -10,7 +10,7 @@ keywords: backlogs, scrum, agile, burndown The starting point for effective work in Scrum teams is a well-maintained and prioritized product backlog as well as the creation of sprint backlogs. In OpenProject, you can easily record and specify requirements represented by user stories. Moreover, you can respond to inquiries and sort them by priority for implementation. -Moreover, please note that the backlogs module is not available in the accessibility mode, since it uses drag&drop functionalities which are not accessible. If you use the accessibility mode you can however perform the same actions (like viewing and editing work packages such as user stories and epics) from the work package list view. +Moreover, please note that the backlogs module is not available in the accessibility mode, since it uses drag&drop functionalities which are not accessible. If you use the accessibility mode you can however perform the same actions (like viewing and editing work packages such as user stories and epics) from the work package table view. | Topic | Content | |-----------------------------------------------------|-----------------------------------------------------------------| diff --git a/docs/user-guide/calendar/calendar-faq/README.md b/docs/user-guide/calendar/calendar-faq/README.md index d46e2aa5285a..6a3d70fb96b4 100644 --- a/docs/user-guide/calendar/calendar-faq/README.md +++ b/docs/user-guide/calendar/calendar-faq/README.md @@ -24,7 +24,7 @@ You can however use the meeting module in OpenProject to organize meetings and i ## Are holidays considered in the calendar? -Currently, the calendar does not consider weekends or holidays as non-working days, i.e. the end date for a task could e.g. be set on a Sunday. This is important for businesses that are working on weekends or holidays. Please note that we are currently working on a feature for free days and weekends that can be adjusted as needed. +Since the [12.3 release](https://www.openproject.org/docs/release-notes/12-3-0/) it is possible to specify working and non-working days on an overall instance-level and consequently define a global work week. The default value for non-working days is set to Saturday and Sunday, but can be adjusted to your specific needs. Read more [here](https://www.openproject.org/docs/user-guide/work-packages/set-change-dates/#working-days). ## Is there a limit for the number of work packages displayed in the calendar? diff --git a/docs/user-guide/gantt-chart/README.md b/docs/user-guide/gantt-chart/README.md index 9d6d00610797..d68953b14f93 100644 --- a/docs/user-guide/gantt-chart/README.md +++ b/docs/user-guide/gantt-chart/README.md @@ -28,15 +28,15 @@ The **Gantt chart** in OpenProject displays the work packages in a timeline. You ## Activate the Gantt chart -A Gantt chart can be activated in any work package list, to display the work packages in a timeline view. +A Gantt chart can be activated in any work package table, to display the work packages in a timeline view. -To activate the Gantt chart, select the **Gantt** icon at the top right of the work package list. +To activate the Gantt chart, select the **Gantt** icon at the top right corner of the work package table. ![activate-gantt](activate-gantt.gif) ## Create a new element in the Gantt chart -To add a work package (e.g. phase, milestone or task) to a Gantt chart, click the **+ Create new work package** link at the bottom of the work package list view. +To add a work package (e.g. phase, milestone or task) to a Gantt chart, click the **+ Create new work package** link at the bottom of the work package table view. You can add a subject and make changes to type, status or more fields. @@ -177,9 +177,9 @@ If you want to adjust your work package table and filter, sort or order your wor ## Aggregation by project -You can get a **quick overview of multiple projects** in the Gantt chart. To accomplish this navigate to the Work packages module of a project or the [project overarching work packages list](../projects/#project-overarching-reports). +You can get a **quick overview of multiple projects** in the Gantt chart. To accomplish this navigate to the Work packages module of a project or the [project overarching work package table](../projects/#project-overarching-reports). -**Group the list** by project by using the [work packages table configuration](../work-packages/work-package-table-configuration/#flat-list-hierarchy-mode-and-group-by) (accessible in the upper right corner) or by clicking on the small triangle next to "Project" in the table header. +**Group the work packages** by project by using the [work packages table configuration](../work-packages/work-package-table-configuration/#flat-list-hierarchy-mode-and-group-by) (accessible in the upper right corner) or by clicking on the small triangle next to "Project" in the table header. ![group-by-project](image-20201211020614221.png) **Display the Gantt chart** by clicking on the button in the upper right corner. diff --git a/docs/user-guide/nextcloud-integration/README.md b/docs/user-guide/nextcloud-integration/README.md index 6f53fa56f0a0..280315c3842e 100644 --- a/docs/user-guide/nextcloud-integration/README.md +++ b/docs/user-guide/nextcloud-integration/README.md @@ -20,13 +20,13 @@ This integration makes it possible for you to: > Note: The minimum requirements for this integration are Nextcloud version 22 (or above) and OpenProject version 12.2 (or above). To be able to use Nextcloud as a file storage in your project, the administrator of your instance should first have completed the [Nextcloud integration setup](../../system-admin-guide/integrations/nextcloud). -| Topic | Description | -| ------------------------------------------------------------ | :----------------------------------------------------------- | -| [Connecting your OpenProject and Nextcloud accounts](#connecting-your-openproject-and-nextcloud-accounts) | How to connect your Nextcloud and OpenProject accounts to be able to use this integration | -| [Linking files and folders to work packages](#linking-files-and-folders-to-work-packages) | How to link files and folders to work packages and view and download linked files | -| [Unlinking files and folders](#unlinking-files-and-folders) | How to remove the link between a work package and a Nextcloud file or folder | -| [Permissions and access control](#permissions-and-access-control) | Who has access to linked files and who doesn't | -| [Possible errors and troubleshooting](#possible-errors-and-troubleshooting) | Common errors and how to troubleshoot them | +| Topic | Description | +|--------------------------------------------------------------------------------------------------------|:------------------------------------------------------------------------------------------| +| [Connecting your OpenProject and Nextcloud accounts](#connect-your-openproject-and-nextcloud-accounts) | How to connect your Nextcloud and OpenProject accounts to be able to use this integration | +| [Linking files and folders to work packages](#link-files-and-folders-to-work-packages) | How to link files and folders to work packages and view and download linked files | +| [Unlinking files and folders](#remove-links) | How to remove the link between a work package and a Nextcloud file or folder | +| [Permissions and access control](#permissions-and-access-control) | Who has access to linked files and who doesn't | +| [Possible errors and troubleshooting](#possible-errors-and-troubleshooting) | Common errors and how to troubleshoot them | ## Connect your OpenProject and Nextcloud accounts @@ -52,7 +52,7 @@ To begin using this integration, you will need to first connect your OpenProject 5. The one-time process to connect your two accounts is complete. You will now be directed back to the original work package, where you can view and open any Nextcloud files that are already linked, or start linking new ones. -> **Note**: To disconnect the link between your OpenProject and Nextcloud accounts, head on over to Nextcloud and navigate to _Settings → OpenProject_. There, click *Disconnect from OpenProject* button. To re-link the two accounts, simply follow [the above instructions](#connecting-your-openproject-and-nextcloud-accounts) again. +> **Note**: To disconnect the link between your OpenProject and Nextcloud accounts, head on over to Nextcloud and navigate to _Settings → OpenProject_. There, click *Disconnect from OpenProject* button. To re-link the two accounts, simply follow [the above instructions](#connect-your-openproject-and-nextcloud-accounts) again. ## Link files and folders to work packages diff --git a/docs/user-guide/projects/README.md b/docs/user-guide/projects/README.md index 33a4f366cfd9..266ad1a7fbd9 100644 --- a/docs/user-guide/projects/README.md +++ b/docs/user-guide/projects/README.md @@ -226,16 +226,16 @@ Click on the **Modules** icon with the nine squares in the header navigation. Th Here you will find - The [global projects list](#projects-list) -- The global work packages list (see below) +- The global work package tables (see below) - The global news overview - The global time and costs module -### Global work packages list +### Global work package tables Select **Work packages** from the drop down menu **Modules** in the upper right (nine squares). Now, you will see all work packages in the projects for which you have the required [permissions](../..//system-admin-guide/users-permissions/roles-permissions/). -In this project overarching list, you can search, filter, group by, sort, highlight and save views the same way as in the [work package list](../work-packages/work-package-table-configuration) in each project. +In this project overarching list, you can search, filter, group by, sort, highlight and save views the same way as in the [work package table](../work-packages/work-package-table-configuration) in each project. -You can group by projects by clicking in the header of the work package list next to PROJECT and select **Group by**. Collapsing the groups will allow you an **overview of the projects' aggregated milestones** as described [here](../../user-guide/work-packages/work-package-table-configuration/#flat-list-hierarchy-mode-and-group-by). +You can group by projects by clicking in the header of the work package table next to PROJECT and select **Group by**. Collapsing the groups will allow you an **overview of the projects' aggregated milestones** as described [here](../../user-guide/work-packages/work-package-table-configuration/#flat-list-hierarchy-mode-and-group-by). ![project overarching report](project-overarching-report.gif) diff --git a/docs/user-guide/projects/projects-faq/README.md b/docs/user-guide/projects/projects-faq/README.md index af365edc1917..cf8b5d939aeb 100644 --- a/docs/user-guide/projects/projects-faq/README.md +++ b/docs/user-guide/projects/projects-faq/README.md @@ -13,7 +13,7 @@ keywords: projects FAQ, project questions There are several possibilities: 1. To see only the projects without their work packages go to [Projects](../#projects-list) ("View all projects"). Here yo can also display the Project list in a Gantt chart view with all important milestones of all Projects. Therefore you have to click on "Open as Gantt view". -2. For work packages of all projects click on *Modules -> Work packages* in the upper right hand corner (9 squares) in the navigation bar, to access the [global work packages list](../#global-work-packages-list). Use the view configuration to group the work packages by project. +2. For work packages of all projects click on *Modules -> Work packages* in the upper right hand corner (9 squares) in the navigation bar, to access the [global work packages list](../#global-work-package-tables). Use the view configuration to group the work packages by project. 3. Select a project with subprojects, go to the Project overview, add the widget "Work package table" and set the filter "Including subproject". Find more information on this topic [here](../../project-overview/#add-a-widget-to-the-project-overview). Additionally you could add the column "Progress" to compare your different Project progress. 4. Add the widget "Work package table" to your My page and set the filter mentioned above. Find more information on this topic [here](../../../getting-started/my-page/#configure-the-my-page). Additionally you could add the column "Progress". diff --git a/docs/user-guide/repository/README.md b/docs/user-guide/repository/README.md index 49640261f38a..95c038c71254 100644 --- a/docs/user-guide/repository/README.md +++ b/docs/user-guide/repository/README.md @@ -41,8 +41,6 @@ The specifics of working of the selected version control client may vary. Please If you choose to use Tortoise SVN, you will find a good guide [here](https://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug.html). For Git, we recommend the [Pro Git guide](https://git-scm.com/book/en/v2). -The specifics of working of the selected version control client may vary. Please refer to the documentation of your version control software client for more information. If you choose to use Tortoise SVN, you will find a good guide [here](https://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug.html). - ## Referencing work packages In the commit message you can reference a workpackage ID (e.g. #1234). In the repository settings (Administration -> System settings -> Repository) you can define keywords that change the status of the referenced work package (e.g. fixes #1234 or closes #1234). diff --git a/docs/user-guide/search/README.md b/docs/user-guide/search/README.md index da6e2d396111..66cdaa62281b 100644 --- a/docs/user-guide/search/README.md +++ b/docs/user-guide/search/README.md @@ -26,7 +26,7 @@ To access the more detailed, advanced search, choose one of the options shown be If you do not have a project open at the moment, the first two options won't be shown. -Now, you can find the results for your search term from different categories/parts of OpenProject. In the work packages section you can click on **Advanced filter** to access additional filter options (the same as in other work package lists). +Now, you can find the results for your search term from different categories/parts of OpenProject. In the work packages section you can click on **Advanced filter** to access additional filter options (the same as in other work package tables). ![search-result-categories](image-20210412205730857.png) diff --git a/docs/user-guide/time-and-costs/reporting/README.md b/docs/user-guide/time-and-costs/reporting/README.md index d6356a49e4d1..4ee1a0cd1c49 100644 --- a/docs/user-guide/time-and-costs/reporting/README.md +++ b/docs/user-guide/time-and-costs/reporting/README.md @@ -84,7 +84,7 @@ If you just want to report on spent **unit costs**, choose the respective unit c ## Export time and cost reports -To **export reports for time and costs** to Excel you can open or create a report in the Time and costs module in your project. For the Excel export, first [filter and group the report](#group-by-criteria-for-cost-reports) according to your needs. Select the [unit to be displayed](#select-units-to-display) (Labor, Cash value, unit costs). +To **export reports for time and costs** to Excel you can open or create a report in the Time and costs module in your project. For the Excel export, first filter the report according to your needs. Select the [units to be displayed](#select-units-to-display) (Labor, Cash value, etc.). Please note that "Group by" settings won't be applied to the exported file. diff --git a/docs/user-guide/time-and-costs/time-and-costs-faq/README.md b/docs/user-guide/time-and-costs/time-and-costs-faq/README.md index d9b3ec426a6c..2e9efbc30e3b 100644 --- a/docs/user-guide/time-and-costs/time-and-costs-faq/README.md +++ b/docs/user-guide/time-and-costs/time-and-costs-faq/README.md @@ -14,15 +14,7 @@ It is not possible to prevent time logging on phases or restrict it to certain w ## Can I log time for another user than myself? -Currently, that's not possible. However, there's already a [feature request](https://community.openproject.com/projects/openproject/work_packages/21754/activity) on our wish list. - -Possible workarounds: - -- Log in as the other user. -- Set up a cost type (e.g."developer hours" or "John Smith") for unit costs and use this to log time (as unit cost) for others. -- Add a comment with the user's name in the time logging modal. If you want to see the comment in the time and costs module you will have to remove all selections for columns and rows. -- Use the "Activity" drop down menu to choose a user (you can add their names [in the system administration](../../../system-admin-guide/enumerations/)). Then you could use the time and costs module to filter for or sort by "Activity". -- Create a work package as a dummy. It should have a special status so that it can be reliably excluded in time reporting. For this work package, each user for whom times are to be booked by others (e.g. project managers) creates several entries (time bookings) with sample values in advance. Subsequently, the project manager can assign these time entries to another work package if required and enter the actual effort. +Since [12.2 release](https://www.openproject.org/docs/release-notes/12-2-0/) it is possible to log time for a user other than yourself. This right has to be granted by an admin to users with certain roles. You can find out more [here](https://www.openproject.org/docs/user-guide/time-and-costs/time-tracking/#logging-and-editing-time-for-other-users). ## Is it possible to view all hours assigned to each member in total? If I work on various projects I'd like to know how many hours I accumulated for all tasks assigned to me. diff --git a/docs/user-guide/time-and-costs/time-tracking/README.md b/docs/user-guide/time-and-costs/time-tracking/README.md index 7ddc4d24f055..cb3fd4d11ffc 100644 --- a/docs/user-guide/time-and-costs/time-tracking/README.md +++ b/docs/user-guide/time-and-costs/time-tracking/README.md @@ -21,7 +21,10 @@ Users can book their time or units spent on an activity within a project directl | [Delete time entries](#delete-time-entries) | How to delete time entries logged to a work package. | | [Logging and editing time for other users](#logging-and-editing-time-for-other-users) | How to log time to work packages. | | [Spent time widget on the My Page](#spent-time-widget-on-the-my-page) | How to easily track and display spent time in the spent time widget on the MyPage. | -| [Track time with Toggl](./toggl-integration) | How to track spent time with Toggl integration. | +| [Define hourly rate for labor costs](#define-hourly-rate-for-labor-costs) | How to easily track labor costs per user. | +| [Toggl integration](./toggl-integration) | How to track spent time with Toggl. | +| [TimeCamp integration](./timecamp-integration) | How to track spent time using TimeCamp. | +| [Time Tracker integration](./time-tracker-integration) | How to record and log spent time using Time Tracker. | ## Logging time in the work package view diff --git a/docs/user-guide/time-and-costs/time-tracking/time-tracker-integration/README.md b/docs/user-guide/time-and-costs/time-tracking/time-tracker-integration/README.md index 9234320fa205..44af5547d42e 100644 --- a/docs/user-guide/time-and-costs/time-tracking/time-tracker-integration/README.md +++ b/docs/user-guide/time-and-costs/time-tracking/time-tracker-integration/README.md @@ -37,6 +37,6 @@ Time Tracker app is available in the Apple [AppStore](https://apps.apple.com/us/ 7. Set the Confidential Property to unchecked. 8. Leave the Client Credentials User field empty. 9. Once you have completed all the fields, press the Create button. -10. After creating the application, copy the Client ID and Base URL values. Copy Base URL from Auth URL field, it may look like this: `https://example.com` +10. After creating the application, copy the Client ID and Base URL values for future reference and keep them secure. Copy Base URL from Auth URL field, it may look like this: `https://example.com` ![openproject_timetracker_configured](openproject_timetracker_configured.png) diff --git a/docs/user-guide/time-and-costs/time-tracking/toggl-integration/README.md b/docs/user-guide/time-and-costs/time-tracking/toggl-integration/README.md index b9a3dda2eb8d..bee97eebc735 100644 --- a/docs/user-guide/time-and-costs/time-tracking/toggl-integration/README.md +++ b/docs/user-guide/time-and-costs/time-tracking/toggl-integration/README.md @@ -10,6 +10,8 @@ keywords: time tracking, toggl integration To track time to a work package via a start and stop button, we offer an integration for the time recording software (or online timesheet software) Toggl Track ([https://toggl.com/track/](https://toggl.com/track/)). The spent time will be saved in your Toggl account. +Please note that the Toggl integration is not developed by OpenProject. + ## Installation You can install a browser add-in to track time via Toggl Track in OpenProject. This way, you can record spent times directly to a work package in OpenProject via a start/stop button. You need to register an account at Toggl in order to use this feature. diff --git a/docs/user-guide/wiki/create-edit-wiki/README.md b/docs/user-guide/wiki/create-edit-wiki/README.md index 380e985434e0..d4ec33b0d89e 100644 --- a/docs/user-guide/wiki/create-edit-wiki/README.md +++ b/docs/user-guide/wiki/create-edit-wiki/README.md @@ -27,17 +27,12 @@ To create a new wiki page in a project, navigate to the wiki module in your proj The editor window will open, allowing you to enter title and content of the new page. -(1) Enter your page title - -(2) Enter your wiki content. You can use the editor bar to format your texts. [Learn here how to format texts in wiki](../#general-wiki-information) with the editor toolbar. - -(3) Files can be inserted directly via drag and drop or copy and paste into the text input field, or via the image button in the editor toolbar. - -(4) Choose a parent wiki page. - -(5) Comment which changes you have made to a wiki page. - -(6) Save (or cancel) your changes to the page. +1. Enter your page title +2. Enter your wiki content. You can use the editor bar to format your texts. [Learn here how to format texts in wiki](../#general-wiki-information) with the editor toolbar. +3. Files can be inserted directly via drag and drop or copy and paste into the text input field, or via the image button in the editor toolbar. +4. Choose a parent wiki page. +5. Comment which changes you have made to a wiki page. +6. Save (or cancel) your changes to the page. ![create-wiki](create-wiki-1568199670933.png) diff --git a/docs/user-guide/wiki/wiki-menu/README.md b/docs/user-guide/wiki/wiki-menu/README.md index f0e59a350080..92d90548b159 100644 --- a/docs/user-guide/wiki/wiki-menu/README.md +++ b/docs/user-guide/wiki/wiki-menu/README.md @@ -22,15 +22,14 @@ To add a wiki page as a menu item to the project menu, select the **More** funct ![wiki-menu-item](wiki-menu-item.png)You can configure the menu items and choose between different visibility options. -(1) You can give the menu item in the project menu a different name than the wiki page itself by changing the **Name of menu item** in the list. - -(2) You can set different **visibility** options: +1. You can give the menu item in the project menu a different name than the wiki page itself by changing the **Name of menu item** in the list. +2. You can set different **visibility** options: - **Do not show this wikipage in the project navigation** will NOT display a separate menu item in the project navigation. The wiki page is just displayed within the wiki module itself. - **Show as menu item in project navigation** will add a separate menu item to the project navigation. - **Show as submenu item of ...** will display the wiki page a sub-menu item in the project navigation. -(4) **Save** your changes to the wiki page menu. +3. **Save** your changes to the wiki page menu. diff --git a/docs/user-guide/work-packages/README.md b/docs/user-guide/work-packages/README.md index 4a3aacd8d24c..690d1ecc3fc3 100644 --- a/docs/user-guide/work-packages/README.md +++ b/docs/user-guide/work-packages/README.md @@ -29,9 +29,9 @@ Work packages can be displayed in a projects timeline, e.g. as a milestone or a | Topic | Content | | ------------------------------------------------------------ | :----------------------------------------------------------- | -| [Work packages views](work-package-views) | What is the difference between the work packages views: list view, split screen view, details view? | +| [Work packages views](work-package-views) | What is the difference between the work packages views: table view, split screen view, details view? | | [Create a work package](create-work-package) | How to create a new work package in OpenProject | -| [Set and change dates and duration](set-change-dates) | How to set and change the start date, finish date and duration of a work package | +| [Set and change dates and duration](set-change-dates) | How to set and change the start date, finish date and duration of a work package | | [Edit work package](edit-work-package) | How to edit a work package in OpenProject | | [Copy, move, delete](copy-move-delete) | How to copy, move, delete a work package | | [Work package table configuration](work-package-table-configuration) | How to configure the work package table (columns, filters, group by, etc.) | diff --git a/docs/user-guide/work-packages/copy-move-delete/README.md b/docs/user-guide/work-packages/copy-move-delete/README.md index b60bab5af302..4bdf0c838e55 100644 --- a/docs/user-guide/work-packages/copy-move-delete/README.md +++ b/docs/user-guide/work-packages/copy-move-delete/README.md @@ -8,7 +8,7 @@ keywords: copy work package, delete work package, move work package # Copy, change project or delete a work package -If you click with the right mouse button in the line of the work package, a list with different editing options for the selected work package opens. Here you can copy the work package, delete it and move it to another project. You can access these features from the work package list or from within a work package. +If you click with the right mouse button in the line of the work package, a list with different editing options for the selected work package opens. Here you can copy the work package, delete it and move it to another project. You can access these features from the work package table or from within a work package. You can also dit a work package using the three dots at the far right of a row to access the menu. @@ -38,4 +38,4 @@ The *change project* option moves a work package to another project or subprojec The right to delete work packages is tied to specified roles (for example system administrators). The roles and permission may vary from project to project. -You can select these options either in the detail view under *More* or via the context menu by right-clicking into the work package list. The latter option allows you to perform an action (such as copying, moving or deleting a work package) on multiple work packages at once. +You can select these options either in the detail view under *More* or via the context menu by right-clicking into the work package table. The latter option allows you to perform an action (such as copying, moving or deleting a work package) on multiple work packages at once. diff --git a/docs/user-guide/work-packages/create-work-package/README.md b/docs/user-guide/work-packages/create-work-package/README.md index e587740c57f8..cb3a39e727c2 100644 --- a/docs/user-guide/work-packages/create-work-package/README.md +++ b/docs/user-guide/work-packages/create-work-package/README.md @@ -17,7 +17,7 @@ keywords: create work packages There are two ways to create new Work packages: -- Work packages can be [created in-line in the Work package list](#create-a-work-package-in-the-list-view) (just like Excel) to quickly create multiple Work packages. +- Work packages can be [created in-line in the Work package table](#create-a-work-package-in-the-table-view) (just like Excel) to quickly create multiple Work packages. - Work packages can be [created in a split screen](#create-a-work-package-in-the-split-screen-view) which allows you to specify detailed information from the start. Work packages always belong to a project. Therefore, you first need to [select a project](../../../getting-started/projects/#open-an-existing-project). @@ -28,17 +28,17 @@ Then, navigate to the Work package module in the project navigation. -### Create a Work package in the list view +### Create a Work package in the table view -To create new Work packages directly in line in the list view, click on the **+ Create new Work package** link below the list. +To create new Work packages directly in line in the table view, click on the **+ Create new Work package** link below the table. ![create-split-screen](create-split-screen.png) -The new Work package appears in a green row. Type in the subject of the Work package, change attributes, such as Type or Status directly in the list and hit Enter to save the changes. +The new Work package appears in a green row. Type in the subject of the Work package, change attributes, such as Type or Status directly in the table and hit Enter to save the changes. ![create-work-package-list](1566303144875.png) -This way, you can quickly and easily create new Work packages in the list, just like Excel. +This way, you can quickly and easily create new Work packages in the table, just like Excel. ### Create a Work package in the split screen view diff --git a/docs/user-guide/work-packages/edit-work-package/README.md b/docs/user-guide/work-packages/edit-work-package/README.md index 7442c0602166..abed5581bf96 100644 --- a/docs/user-guide/work-packages/edit-work-package/README.md +++ b/docs/user-guide/work-packages/edit-work-package/README.md @@ -17,7 +17,7 @@ keywords: edit work packages ## Update a work package -To edit a work package, double-click in the row of a work package in the [list view](../../work-packages/work-package-views/#list-view) or open the [split screen view](../../work-packages/work-package-views/#split-screen-view) to see the details. +To edit a work package, double-click in the row of a work package in the [table view](../../work-packages/work-package-views/#table-view) or open the [split screen view](../../work-packages/work-package-views/#split-screen-view) to see the details. In the work package details, you can click in any field to update it, e.g. change the description, status, priority, assignee, or add a comment. @@ -92,13 +92,13 @@ The user will no longer get notifications in OpenProject about changes to this w ## Export work packages -To export the work packages, choose **Export ...** in the settings menu on the top right of the work package list (or Gantt chart) view. +To export the work packages, choose **Export ...** in the settings menu on the top right of the work package table (or Gantt chart) view. Please see [this separate guide](../exporting) for more information on exporting work packages. ## Bulk edit work packages -To make a bulk update and edit several work packages at once, navigate to the work packages list view. +To make a bulk update and edit several work packages at once, navigate to the work packages table view. Highlight all work packages which you want to edit. Tip: **keep the Ctrl. button pressed** in order to select and edit several work packages at once. diff --git a/docs/user-guide/work-packages/exporting/README.md b/docs/user-guide/work-packages/exporting/README.md index 3b0e04f84a0d..140833a14af4 100644 --- a/docs/user-guide/work-packages/exporting/README.md +++ b/docs/user-guide/work-packages/exporting/README.md @@ -14,7 +14,7 @@ You can export work packages from your OpenProject instance to other formats usi ## How to trigger an export -To export a work package list or card view to another format, visit the *Work packages* module or a saved view and click on the settings icon in the top right. Trigger the **Export** dialog from the dropdown menu that opens. +To export a work package table or card view to another format, visit the *Work packages* module or a saved view and click on the settings icon in the top right. Trigger the **Export** dialog from the dropdown menu that opens. ![Exporting from the table](export-gantt-chart.png) @@ -28,7 +28,7 @@ This will open a dialog similar to the following screenshot, where you can selec ## Changing what will be exported -From the work packages module, all work packages that are included in the filter list will be exported. Up to a total of 500 work packages can be exported at once. +From the work packages module, all work packages that are included in the filter table will be exported. Up to a total of 500 work packages can be exported at once. > **Note**: If you need to export more than 500 items, filter the work packages appropriately to export multiple files. @@ -49,7 +49,7 @@ OpenProject has multiple options of exporting the results to PDF: -- **PDF** export of the work package list as rows. +- **PDF** export of the work package table, listing work packages as rows. - **PDF with descriptions** same as above with work package descriptions output. Note that this does not include a fully rendered markdown description, but a stripped version of it due to technical limitations of the PDF rendering engine. - **PDF with attachments** of work packages with their attachments inlined to fit as best as possible. - **PDF with descriptions and attachments** The above options combined to create a PDF export with work package descriptions and their attachments. diff --git a/docs/user-guide/work-packages/set-change-dates/README.md b/docs/user-guide/work-packages/set-change-dates/README.md index cb35b52e5130..188ff99d489d 100644 --- a/docs/user-guide/work-packages/set-change-dates/README.md +++ b/docs/user-guide/work-packages/set-change-dates/README.md @@ -31,7 +31,7 @@ You can open the date picker for a work package from a number of different place - By clicking on the date field in the work package [details view](../work-package-views/#full-screen-view) - By clicking the the date field in the work package [split screen view](../work-package-views/#split-screen-view) (from any other view, including [notification center](../../notifications), [team planner](../../team-planner/), [boards](../../agile-boards)...) -- By clicking the start date, finish date or duration fields in [list view](../work-package-views/#list-view) +- By clicking the start date, finish date or duration fields in [table view](../work-package-views/#table-view) ### Using the date picker @@ -46,7 +46,7 @@ You can also click on the **Today** link below the start and finish date fields A more intuitive way to select start and end dates is to simply click on two different dates in the mini calendars below. Two calendar months are displayed for better visibility. -Start by clicking on a start date. This will enter the selected date as the start date, mark it with a dark color on the mini calendar below and move the focus to the finish date field. Hovering on different finish dates will give you a preview of the date range for the work packakge if you click this second date. Once you have decided on a finish date, click on it. This will enter the finish date in the date field and mark that date with another dark color. The dates in between will be highlighted with a lighter colour. +Start by clicking on a start date. This will enter the selected date as the start date, mark it with a dark color on the mini calendar below and move the focus to the finish date field. Hovering on different finish dates will give you a preview of the date range for the work package if you click this second date. Once you have decided on a finish date, click on it. This will enter the finish date in the date field and mark that date with another dark color. The dates in between will be highlighted with a lighter colour. To confirm the selected dates, click on the **Save** button. The green message on top of the work package indicates a successful update. @@ -62,7 +62,9 @@ Date changes are documented in the work package [Activity](../../activity/). - The date picker allows you to pick start and finish dates in the opposite order. Clicking on a start date and then moving backwards to click on an earlier date will then use that first date as the finish date and the second (earlier) date as the start date. -- Once you have selected your start and finish dates, you can adjust either field without resetting the other one by clicking on a new date near the previously selected date. This, however, depends on which date field is in focus. For example, clicking on a new start date that is 2 days earlier when the start date field is in focus simply replaces the original start date (conserving the finish date). However, clicking on that same date when the finish date field is in focus clears the finish date and uses the clicked date as the new start date. A second click then allows to select the new finish date. This should feel quite intuitive when you use it. +- For a work package that already has a start and finish date, it is possible to adjust just the finish date: click on the finish date field and then click on a new date. As long as this date is after the start date, the finish date will update accordingly. If the date you pick is earlier than the start date, the original start date will then be cleared and a click on a second date will define the other end of the new range. + +- It is possible to set only one of the two dates. To do this, click on the field you would like to set (start date is selected by default, but you can change this manually to finish date) and click on a date. Then save without selecting a second date. Alternatively, if a a range is already selected, simply remove one of the dates and save. ### One-day events @@ -113,10 +115,6 @@ Changing the duration when both start and finish dates are already set will then - *If the Working days only switch is **on***, the finish date is automatically set to Monday, 17 October, 2022 (since Saturday and Sunday are not working days) - *If the Working days only switch is **off***, the finish date is automatically set to Saturday, 15 October, 2022 (since all calendar days are included) -Changing the start and finish dates will also affect duration. In our example, if you change the start date to *Monday, 10 October 2022* without changing the finish date of *Friday, 14 October 2022*, the duration is automatically updated to 5 days. - -![A duration of 5 days automatically derived from the start and finish dates](datepicker-5-days.png) - ### Duration when only one date exists A work package cannot have only one date *and* a duration; the other date is automatically derived. This derived date can either be the start date or the finish date. @@ -136,7 +134,6 @@ Setting only duration without start or finish dates is especially useful when yo > To do so, create a series of work packages that represent the main phases and set the approximate duration for each. Link them all using follow/precedes relationships. Now, when you set a start date on the first work package in the series, the start and end dates for all other work packages will be derived. - ## Scheduling mode ### Manual scheduling @@ -193,4 +190,4 @@ This warning banner is displayed on work packages whose start and end dates affe The information and warning banners also feature a **Show Relations** button. Clicking on this will open a new tab that displays work packages with direct relations to the current work package in [Gantt view](../../gantt-chart), in hierarchy mode. -> **Info**: This preview is intended to give a quick overview of only _direct_ relations that might affect scheduling options for the current work package. It does not show second-level relations (and above). To get a full overview, please use the project work package [list view](../work-package-views/#list-view) or [Gantt view](../../gantt-chart) with your desired [filter/view configuration](../work-package-table-configuration/). +> **Info**: This preview is intended to give a quick overview of only _direct_ relations that might affect scheduling options for the current work package. It does not show second-level relations (and above). To get a full overview, please use the project work package [table view](../work-package-views/#table-view) or [Gantt view](../../gantt-chart) with your desired [filter/view configuration](../work-package-table-configuration/). diff --git a/docs/user-guide/work-packages/work-package-relations-hierarchies/README.md b/docs/user-guide/work-packages/work-package-relations-hierarchies/README.md index da172baf8fa0..c906d1d30570 100644 --- a/docs/user-guide/work-packages/work-package-relations-hierarchies/README.md +++ b/docs/user-guide/work-packages/work-package-relations-hierarchies/README.md @@ -15,7 +15,7 @@ Relations indicate any functional or timely relation (e.g. follows or proceeds, | Topic | Content | | ------------------------------------------------------------ | :----------------------------------------------------------- | | [Work packages relations](#work-package-relations) | How can I set a relation between two work packages and which relations can I set? | -| [Display relations in work package list](#display-relations-in-work-package-list-enterprise-add-on) | How can I display the relations between two work packages in the work package list? | +| [Display relations in work package table](#display-relations-in-a-work-package-table-enterprise-add-on) | How can I display the relations between two work packages in the work package table? | | [Work package hierarchies](#work-package-hierarchies) | What are work package hierarchies? Learn about parent and children work packages. | | [Adding a child work package](#adding-a-child-work-package) | What are the possibilities to add children work packages? | | [Change the parent work package](#change-the-parent-work-package) | How can I change a work package's parent? | @@ -46,9 +46,9 @@ The selected relation status will be automatically displayed in the work package -## Display relations in work package list (Enterprise add-on) +## Display relations in a work package table (Enterprise add-on) -As a user of [Enterprise on-premises](https://www.openproject.org/enterprise-edition/) or [Enterprise cloud](https://www.openproject.org/hosting/) you can display relations as columns in the work package list. +As a user of [Enterprise on-premises](https://www.openproject.org/enterprise-edition/) or [Enterprise cloud](https://www.openproject.org/hosting/) you can display relations as columns in the work package tables. This is useful if you want to get an overview of certain types of relationships between work packages. You can for example see which work packages are blocking other work packages. @@ -71,8 +71,8 @@ Work packages can be structured hierarchically, e.g. in order to break down a la There are **three ways to add or create a child work package**: 1. Adding or creating a child in the *Relations* tab in a work package's details view -2. Right-clicking on a work package in the work package list and select "Create new child" -3. Right-clicking on a work package in the work package list and select "Indent hierarchy" to add it as the child of the work package above it. +2. Right-clicking on a work package in the work package table and select "Create new child" +3. Right-clicking on a work package in the work package table and select "Indent hierarchy" to add it as the child of the work package above it. ### Adding a child in the *Relations* tab in a work package's details view @@ -99,7 +99,7 @@ Note that only the children are shown in the relations tab and the parent isn't. ![work package relations](image-20200129145033802.png) -Hierarchies can also be displayed from the work package list view. +Hierarchies can also be displayed from the work package table view. To display work package hierarchies make sure the *Subject* column is displayed. You can activate or deactivate the hierarchy by pressing the icon next to the Subject. ![User guide display hierarchy](User-guide-display-hierarchy.png) diff --git a/docs/user-guide/work-packages/work-package-table-configuration/README.md b/docs/user-guide/work-packages/work-package-table-configuration/README.md index dc779b9f2c18..2f7e415429f9 100644 --- a/docs/user-guide/work-packages/work-package-table-configuration/README.md +++ b/docs/user-guide/work-packages/work-package-table-configuration/README.md @@ -3,25 +3,25 @@ sidebar_navigation: title: Configure work package table priority: 700 description: How to configure the work package list in OpenProject. -keywords: work packages table configuration, work package list, columns, filter, group +keywords: work packages table configuration, work package table, columns, filter, group --- # Work package table configuration -| Topic | Content | -|-------------------------------------------------------------------------------------|----------------------------------------------------------------------------------| -| [Add or remove columns](#add-or-remove-columns-in-the-work-package-table) | How to add or remove columns in the work package table. | -| [Filter work packages](#filter-work-packages) | How to filter in the work package table. | -| [Sort the work package list](#sort-the-work-package-list) | How to sort within the work package table. | -| [Display settings](#flat-list-hierarchy-mode-and-group-by) | Get to know the flat list, the hierarchy mode, the group by and the sum feature. | -| [Attribute highlighting (Enterprise add-on)](#attribute-highlighting-enterprise-add-on) | How to highlight certain attributes in the work package table. | -| [Save work package views](#save-work-package-views) | How to save a new work package view and how to change existing ones. | +| Topic | Content | +| ------------------------------------------------------------ | ------------------------------------------------------------ | +| [Add or remove columns](#add-or-remove-columns-in-the-work-package-table) | How to add or remove columns in the work package table. | +| [Filter work packages](#filter-work-packages) | How to filter in the work package table. | +| [Sort the work package table](#sort-the-work-package-table) | How to sort within the work package table. | +| [Display settings](#flat-list-hierarchy-mode-and-group-by) | Get to know the flat list, the hierarchy mode, the group by and the sum feature. | +| [Attribute highlighting (Enterprise add-on)](#attribute-highlighting-enterprise-add-on) | How to highlight certain attributes in the work package table. | +| [Save work package views](#save-work-package-views) | How to save a new work package view and how to change existing ones. | -You can configure the work package table view in OpenProject to display the information that you need in the list. +You can configure the work package table view in OpenProject to display the information that you need in the table. You can change the header in the table and add or remove columns, filter and group work packages or sort them according to specific criteria. Also, you can change between a flat list view, a hierarchy view and a grouped view. -Save the view to have it available directly from your project menu. A work package view is the sum of all modifications you made to the default list (e.g. filters you set). +Save the view to have it available directly from your project menu. A work package view is the sum of all modifications you made to the default table (e.g. filters you set). @@ -32,7 +32,7 @@ To open the work package table configuration, open the **Settings** icon with th ## Add or remove columns in the work package table -To configure the view of the work package table and have different attributes displayed in the list you can add or remove columns in the work package list. +To configure the view of the work package table and have different attributes displayed in the table you can add or remove columns in the work package table. First, [open the work package table configuration](#work-package-table-configuration). @@ -42,7 +42,7 @@ You can add columns by typing the name of the attribute which you would like to You can remove columns by clicking the **x** icon. -You order the attributes in the list with drag and drop. +You order the attributes via drag and drop. ![columns](1566395294543.png) @@ -52,7 +52,7 @@ Clicking the **Apply** button will save your changes and adapt the table accordi ## Filter work packages -In the work package list there will soon be quite a lot of work packages in a project. To filter the work packages in the list, click on the **Filter** button on top of the work packages view. The number next to it tells you how many filter criteria you have applied to a list. +In the work package table there will soon be quite a lot of work packages in a project. To filter the work packages in the table, click on the **Filter** button on top of the work packages view. The number next to it tells you how many filter criteria you have applied to a table. In this example one filter criterion is applied: Status = open. @@ -65,13 +65,13 @@ To add a filter criterion, choose one from the drop-down list next to **+ Add fi You can add as many filter criteria as needed. Also, you can filter by [custom fields](../../../system-admin-guide/custom-fields) if you set this in the custom field configuration. -> **Good to know**: Filtering a work packages list will temporarily change the default work package type and default status to the values used in the filters to make newly created work packages visible in the list. +> **Good to know**: Filtering a work package table will temporarily change the default work package type and default status to the values used in the filters to make newly created work packages visible in the table. ### Filter by text If you want to search for specific text in the subject, description or comments of a work package, type in the **Filter by text** the expression you want to filter for. -The results will be displayed accordingly in the work package list. +The results will be displayed accordingly in the work package table. ![filter-text](filter-text.png) @@ -84,12 +84,12 @@ If you only select work packages without children, no work packages will be show ### Include/exclude work packages from a specific project or subproject -It is possible to display the work packages from more than one project. To include, or exclude such work packages, use the **Include projects** button on top of the work packages list view, where you can select/unselect the appropriate projects and sub-projects you want to add. +It is possible to display the work packages from more than one project. To include, or exclude such work packages, use the **Include projects** button on top of the work package table view, where you can select/unselect the appropriate projects and sub-projects you want to add. To automatically include all sub-projects for each project you chose to select, check the **Include all sub-projects** box at the bottom of the dialog. ![work-package-filter-include-projects](work-package-filter-include-projects.png) -To view all work packages across all projects you could select everything, or use the [global work package list](../../projects/#global-work-packages-list). +To view all work packages across all projects you could select everything, or use the [global work package tables](../../projects/#global-work-package-tables). ### Filter by ID or work package name @@ -131,19 +131,19 @@ It will then display the corresponding work package with the attachment. ![openproject-search-work-package-attachments](openproject-search-work-package-attachments.png) -## Sort the work package list +## Sort the work package table -### Automatic sorting of the work package list -By default, the work package list will be sorted by work package ID. +### Automatic sorting of the work package table +By default, the work package table will be sorted by work package ID.
The **ID** is unique for a work package within OpenProject. It will be set automatically from the system. With the ID you can reference a specific work package in OpenProject.
-To sort the work package list view, open the [work package table configuration](#work-package-table-configuration) and select the tab **Sort by**. You can sort by up to three attributes, either ascending or descending. +To sort the work package table view, open the [work package table configuration](#work-package-table-configuration) and select the tab **Sort by**. You can sort by up to three attributes, either ascending or descending. ![work-package-table-configuration](work-package-table-configuration-4874227.png) -Clicking the blue **Apply** button will save your changes and display the results accordingly in the list view. +Clicking the blue **Apply** button will save your changes and display the results accordingly in the table view. ![sort-work-packages](sort-work-packages.png) @@ -157,11 +157,11 @@ The same filter applied in the hierarchy mode. ![sort-hierarchy-mode](sort-hierarchy-mode.png) -### Manual sorting of the work package list +### Manual sorting of the work package table -You can sort the work package list manually, using the icon with the 6 dots on the left of each work package to drag and drop it. +You can sort the work package table manually, using the icon with the 6 dots on the left of each work package to drag and drop it. -Moving a work package will change its attributes, depending on the kind of list displayed, e.g. hierarchy changes or priority. +Moving a work package will change its attributes, depending on the kind of table displayed, e.g. hierarchy changes or priority. To keep the sorting it is necessary to [save the work package view](#save-work-package-views). Please note: This has no effect on the "All open" view; you have to save your sorting with another name. @@ -169,35 +169,35 @@ Please note: This has no effect on the "All open" view; you have to save your so ## Flat list, Hierarchy mode and Group by -You have three different options to display results in the work package list. +You have three different options to display results in the work package table. * A **Flat list** (default), which contains all work packages in a list no matter how their parent-child-relation is. * A **Hierarchy**, which will display the filtered results within the parent-child-relation. -* **Group by** will group the list according to a defined attribute. +* **Group by** will group the table according to a defined attribute. To display the work package table you have to choose one of these options. -To switch between the different criteria, open the [work package table configuration](#work-package-table-configuration) and open the tab **Display settings**. Choose how to display the work packages in the list and click the blue **Apply** button. +To switch between the different criteria, open the [work package table configuration](#work-package-table-configuration) and open the tab **Display settings**. Choose how to display the work packages in the table and click the blue **Apply** button. ![display-settings](image-20210426164224748.png) -When you group the work package list by an attribute or by project a **button to collapse groups** shows up: +When you group the work package table by an attribute or by project a **button to collapse groups** shows up: ![collapse-button](collapse-all-expand-all.png) Use it to quickly collapse or expand all groups at the same time. Find out [here](../../gantt-chart/#aggregation-by-project) how to use this feature for a **quick overview of several projects** at once. -### Display sums in work package list +### Display sums in work package table -To display the sums of eligible work package attributes, go to the work package table configuration and click on the tab **Display settings** (see screenshot above). When you tick the box next to **Display sums** the sums of Estimated time and Remaining hours as well as custom fields of the type Integer or Float will be displayed at the bottom of the work package list. -If you group the work package list, sums will be shown for each group. +To display the sums of eligible work package attributes, go to the work package table configuration and click on the tab **Display settings** (see screenshot above). When you tick the box next to **Display sums** the sums of Estimated time and Remaining hours as well as custom fields of the type Integer or Float will be displayed at the bottom of the work package table. +If you group the work package table, sums will be shown for each group. ## Attribute highlighting (Enterprise add-on) -You can highlight attributes in the work package list to emphasize the importance of certain attributes and have important topics at a glance. +You can highlight attributes in the work package table to emphasize the importance of certain attributes and have important topics at a glance. -The following attributes can be highlighted in the list: +The following attributes can be highlighted in the table: * Priority * Status @@ -218,14 +218,14 @@ You can configure the colors for attribute highlighting in the system administra When you have configured your work package table, you can save the views to access them again and share them with your team. -1. Press the **Settings icon** with the three dots on the top right of the work packages list. +1. Press the **Settings icon** with the three dots on the top right corner of the work package table. 2. Choose **Save as...** ![Work-packages-save-view](Work-packages-save-view.png) 3. Enter a **Name** for your saved view (according to the criteria you have chosen in your work package table configuration). - In this example, the list was filtered for work packages assigned to me which have a high priority. + In this example, the table was filtered for work packages assigned to me which have a high priority. **Public views:** Check the public checkbox if you want to have this work package view accessible also for other users from this project. diff --git a/docs/user-guide/work-packages/work-package-views/README.md b/docs/user-guide/work-packages/work-package-views/README.md index 8feae9541760..4860a0239fd6 100644 --- a/docs/user-guide/work-packages/work-package-views/README.md +++ b/docs/user-guide/work-packages/work-package-views/README.md @@ -2,7 +2,7 @@ sidebar_navigation: title: Work packages views priority: 999 -description: Different ways of organising and viewing work packages, including list, split screen, board and Gantt. +description: Different ways of organising and viewing work packages, including table, split screen, board and Gantt. keywords: work packages views --- @@ -27,7 +27,7 @@ You can also create, save and modify your own work package views. Read about [wo The containing work packages in any view can be displayed a number of different ways. Each of these view modes display the same set of work packages but display them differently: -* [List view](#list-view) +* [Table view](#table-view) * [Split screen view](#split-screen-view) * [Details view](#full-screen-view) * [Card view](#card-view) @@ -35,29 +35,29 @@ The containing work packages in any view can be displayed a number of different * [Board view](../../../getting-started/boards-introduction/) -### List view +### Table view -The list view shows all work packages in a list with selected attributes in the columns. +The table view shows all work packages in a table with selected attributes in the columns. ![1566306576394](1566306576394.png) -Find out how to make changes to the work package list view, e.g. change the titles in the header, filter, group or add dependencies. +Find out how to make changes to the work package table view, e.g. change the titles in the header, filter, group or add dependencies. ### Split screen view -If you are in the work package list, click on the blue info icon at the right end of a work package row to open the split screen view. +If you are in the work package table, click on the blue info icon at the right end of a work package row to open the split screen view. -Also, the split screen view can be activated or de-activated with the **info button** at the top right of the work packages list, next to the Filter. +Also, the split screen view can be activated or de-activated with the **info button** at the top right corner of the work package table, next to the Filter. ![split-screen-icon](split-screen-icon.png) -Once the split screen is open, you can easily navigate through the work package list by clicking in a row of a work package and display the details in the split screen on the right. +Once the split screen is open, you can easily navigate through the work package table by clicking in a row of a work package and display the details in the split screen on the right. ![split-screen-view](1566307254418.png) ### Full screen view -To display a work package with all its details in full screen mode, double click on a row within the work package list. +To display a work package with all its details in full screen mode, double click on a row within the work package table. Also, you can use the full screen icon in the work package split screen view in the header at the right (next to Watcher). @@ -65,10 +65,10 @@ Also, you can use the full screen icon in the work package split screen view in Then, the work package with all its details will be displayed. -The arrow next to the subject will bring you back to the list view. +The arrow next to the subject will bring you back to the table view. ![back-to-list-view](image-20201217125332403.png) ### Card view -You can also display the work package list in a card view. To switch to the card view in the work package list, you must select the card icon at the top right of the work package list. +You can also display the work package table in a card view. To switch to the card view in the work package table, you must select the card icon at the top right corner of the work package table. diff --git a/docs/user-guide/work-packages/work-packages-faq/README.md b/docs/user-guide/work-packages/work-packages-faq/README.md index 7ac45a37fd51..bd4d9d643306 100644 --- a/docs/user-guide/work-packages/work-packages-faq/README.md +++ b/docs/user-guide/work-packages/work-packages-faq/README.md @@ -11,7 +11,7 @@ keywords: work packages FAQ, tickets, how to, task | Topic | Content | | --------------------------------------------------------- | ------------------------------------------------------------ | | [Working with work packages](#working-with-work-packages) | Work package attributes, work package form, relations | -| [Filters and queries](#filters-and-queries) | Work package list, saving and changing filters and views | +| [Filters and queries](#filters-and-queries) | Work package table, saving and changing filters and views | | [Status and type](#status-and-type) | Work package statuses and work package types | | [Move and copy](#move-and-copy) | Moving and copying work packages | | [Custom fields](#custom-fields) | Additional fields, self-defined attributes and values | @@ -30,13 +30,13 @@ If you want to manage your project alone (without informing other team members) ### How can I set workload, deadline and duration in a work package? -- Workload: Use "Estimated time" -- Deadline: Use the finish date -- Duration: Create a custom field or just set start date and finish date. +- Workload: Use the "Estimated time" field +- Deadline: Use the "Finish date" field +- Duration: Use the "Duration" field ### How can I see which work packages have been assigned to me as part of a group (e.g. "Marketing team")? -You can set the assignee filter in the work package list to "Assignee and belonging group" to see all work package directly and indirectly (through a group membership) assigned to you. [Save the view](../work-package-table-configuration/#save-work-package-views) to keep it for the future. +You can set the assignee filter in the work package table to "Assignee and belonging group" to see all work package directly and indirectly (through a group membership) assigned to you. [Save the view](../work-package-table-configuration/#save-work-package-views) to keep it for the future. ### How can I track the progress of my work package? @@ -86,7 +86,7 @@ As an inherited change is always commented ("Updated automatically by...") they ### How can I fill/populate the position field/column for work packages? The "Position" attribute is provided by the Backlogs plugin and shows the position of a work package in the backlog. -If you create e.g. a Feature and assign it to a sprint, the position of the feature in the sprint is shown in the "Position" attribute on the work package list. +If you create e.g. a Feature and assign it to a sprint, the position of the feature in the sprint is shown in the "Position" attribute on the work package table. ### Can I restore a deleted workpackage? @@ -94,12 +94,12 @@ There is no easy way to restore a deleted workpackage. Generally, you have the o ## Filters and queries -### How can I keep changed columns or filters for the work packages list? +### How can I keep changed columns or filters for the work package tables? Click on the three dots in the upper right corner and choose **Save** or **Save as**. The view's name will appear in the menu bar on the left. Please note: You can't change the default view "All open", clicking Save will have no effect. -### How can I set certain filters and columns in the work packages list for my colleagues? +### How can I set certain filters and columns in the work package tables for my colleagues? Tick the box next to "Public" when saving the work package view. We suggest ticking the box next to "Favored", too. @@ -109,16 +109,16 @@ This is not possible at the moment, but you can configure and save another view. A [feature request](../../../development/submit-feature-idea/) to change this can be found [here](https://community.openproject.com/projects/openproject/work_packages/31423/activity). -### I sorted my work package list and when I get back to my work package list it doesn't look the same way again. Why? +### I sorted my work package table and when I get back to my work package table it doesn't look the same way again. Why? -It is most likely that you did not save the view of your work package list after sorting it. Make sure you save it (top right menu -> **Save as** or **Save**). +It is most likely that you did not save the view of your work package table after sorting it. Make sure you save it (top right menu -> **Save as** or **Save**). -### In the global work packages list, not all custom fields are available for filters. Why? +### In the global work package tables, not all custom fields are available for filters. Why? -In the [global work packages list](../../projects/#global-work-packages-list), only the custom fields that apply to all projects are displayed in the filter area (setting "for all projects" in the administration). +In the [global work package tables](../../projects/#global-work-package-tables), only the custom fields that apply to all projects are displayed in the filter area (setting "for all projects" in the administration). There are two reasons for this: 1. Potentially, a lot of values are displayed in the global filter list - especially if a lot of custom fields are used in individual projects. This can impair usability and (in extreme cases) performance. 2. As the values in the filter area are displayed for all users, sensitive information (name of the custom fields and their values) could in principle be visible to users who do not have access to the respective project where the custom field is activated. -### I have a parent work package with multiple children. In the work package list I don't see all of the children below the parent. Why? How can I change this? +### I have a parent work package with multiple children. In the work package table I don't see all of the children below the parent. Why? How can I change this? Please increase the number of displayed work packages per page [in the administration](../../../system-admin-guide/system-settings/general-settings/#general-system-settings). Then the probability of this phenomenon happening is lower. This is a known behavior of OpenProject, but not trivial to solve. There's already a feature request for this [here](https://community.openproject.com/projects/openproject/work_packages/34925/activity). @@ -186,13 +186,13 @@ In the following view you have the possibility to change additional attributes o ### How can I move a work package to another project? -In the work package list: Right-click on the work package and choose **Change project**. +In the work package table: Right-click on the work package and choose **Change project**. In the details view of the work package: Click on **More** (button with three dots in the upper right hand corner) and the on **Change project**. ### Can I group tasks into folders? -There are no folders for work packages. To group work packages, such as tasks, you can use the [filter and grouping options](../work-package-table-configuration/#work-package-table-configuration) and [save the filters](../work-package-table-configuration/#save-work-package-views). You can also define all related work packages as children of the same parent work package (e.g. a phase). You can indent the hierarchy for work packages in the work packages list (with a right mouse click -> *Indent hierarchy*) to add them as children to another work package, for example a phase. This will then also be displayed in the Gantt chart. Alternatively, you can use the [work package categories](../../projects/project-settings/work-package-categories/#manage-work-package-categories) or a custom field to filter and group work packages. Also, you can create multiple projects to group different topics. +There are no folders for work packages. To group work packages, such as tasks, you can use the [filter and grouping options](../work-package-table-configuration/#work-package-table-configuration) and [save the filters](../work-package-table-configuration/#save-work-package-views). You can also define all related work packages as children of the same parent work package (e.g. a phase). You can indent the hierarchy for work packages in the work package tables (with a right mouse click -> *Indent hierarchy*) to add them as children to another work package, for example a phase. This will then also be displayed in the Gantt chart. Alternatively, you can use the [work package categories](../../projects/project-settings/work-package-categories/#manage-work-package-categories) or a custom field to filter and group work packages. Also, you can create multiple projects to group different topics. ## Custom fields @@ -200,13 +200,13 @@ There are no folders for work packages. To group work packages, such as tasks, y You can create a custom field for this that you add to the work package form. Please follow [these instructions](../../../system-admin-guide/custom-fields/). -### Will work package custom fields of the type "long text" be shown in the export of a work packages list? +### Will work package custom fields of the type "long text" be shown in the export of a work package tables? As custom fields of the type "long text" cannot be added as a column, they cannot be exported via the page-wide export. However, individual work packages can be exported. This can be done either via the "PDF Download" or (better) via the browser print function. ### Can I sum up custom fields? -Yes, you can display the sum of custom fields in the work packages list by checking the "Sum" option in [the work package display settings](../work-package-table-configuration/#display-sums-in-work-package-list). +Yes, you can display the sum of custom fields in the work package tables by checking the "Sum" option in [the work package display settings](../work-package-table-configuration/#display-sums-in-work-package-table). Calculating a sum across different attributes (e.g. Estimated time + added hours) is however not possible. diff --git a/frontend/src/app/core/current-user/current-user.service.ts b/frontend/src/app/core/current-user/current-user.service.ts index d495ad2680e0..cb8cc9272461 100644 --- a/frontend/src/app/core/current-user/current-user.service.ts +++ b/frontend/src/app/core/current-user/current-user.service.ts @@ -83,7 +83,7 @@ export class CurrentUserService { const filters:ApiV3ListFilter[] = [userFilter]; if (projectContext) { - filters.push(['context', '=', [projectContext === 'global' ? 'g' : `p${projectContext}`]]); + filters.push(['context', '=', [projectContext === 'global' || projectContext === 'projects' ? 'g' : `p${projectContext}`]]); } if (actions.length > 0) { diff --git a/frontend/src/app/core/setup/globals/global-listeners/preview-trigger.service.ts b/frontend/src/app/core/setup/globals/global-listeners/preview-trigger.service.ts index 448113d2f3a7..7cdf0f243e74 100644 --- a/frontend/src/app/core/setup/globals/global-listeners/preview-trigger.service.ts +++ b/frontend/src/app/core/setup/globals/global-listeners/preview-trigger.service.ts @@ -36,31 +36,37 @@ export class PreviewTriggerService { private mouseInModal = false; - constructor(readonly opModalService:OpModalService, + constructor( + readonly opModalService:OpModalService, readonly ngZone:NgZone, - readonly injector:Injector) { + readonly injector:Injector, + ) { } setupListener() { jQuery(document.body).on('mouseover', '.preview-trigger', (e) => { e.preventDefault(); e.stopPropagation(); - const el = jQuery(e.target); - const href = el.attr('href'); + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const el = e.target as HTMLElement; + if (el) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const href = el.getAttribute('href'); - if (!href) { - return; - } + if (!href) { + return; + } - this.opModalService.show( - WpPreviewModalComponent, - this.injector, - { workPackageLink: href, event: e }, - true, - ).subscribe((previewModal) => { - this.modalElement = previewModal.elementRef.nativeElement as HTMLElement; - previewModal.reposition(jQuery(this.modalElement), el); - }); + this.opModalService.show( + WpPreviewModalComponent, + this.injector, + { workPackageLink: href, event: e }, + true, + ).subscribe((previewModal) => { + this.modalElement = previewModal.elementRef.nativeElement as HTMLElement; + void previewModal.reposition(this.modalElement, el); + }); + } }); jQuery(document.body).on('mouseleave', '.preview-trigger', () => { @@ -93,11 +99,12 @@ export class PreviewTriggerService { } const previewElement = jQuery(this.modalElement.children[0]); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion if (previewElement && previewElement.offset()) { - const horizontalHover = e.pageX >= Math.floor(previewElement.offset()!.left) - && e.pageX < previewElement.offset()!.left + previewElement.width()!; - const verticalHover = e.pageY >= Math.floor(previewElement.offset()!.top) - && e.pageY < previewElement.offset()!.top + previewElement.height()!; + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const horizontalHover = e.pageX >= Math.floor(previewElement.offset()!.left) && e.pageX < previewElement.offset()!.left + previewElement.width()!; + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const verticalHover = e.pageY >= Math.floor(previewElement.offset()!.top) && e.pageY < previewElement.offset()!.top + previewElement.height()!; return horizontalHover && verticalHover; } return false; diff --git a/frontend/src/app/shared/components/editor/components/ckeditor/ckeditor-setup.service.ts b/frontend/src/app/shared/components/editor/components/ckeditor/ckeditor-setup.service.ts index e4d5d7dfcddc..2adf852a0468 100644 --- a/frontend/src/app/shared/components/editor/components/ckeditor/ckeditor-setup.service.ts +++ b/frontend/src/app/shared/components/editor/components/ckeditor/ckeditor-setup.service.ts @@ -23,9 +23,16 @@ export class CKEditorSetupService { /** The language CKEditor was able to load, falls back to 'en' */ private loadedLocale = 'en'; + /** Prefetch ckeditor when browser is idle */ + private prefetch:Promise; + constructor(private PathHelper:PathHelperService) { } + public initialize() { + this.prefetch = this.load(); + } + /** * Create a CKEditor instance of the given type on the wrapper element. * Pass a ICKEditorContext object that will be used to decide active plugins. @@ -42,7 +49,7 @@ export class CKEditorSetupService { initialData:string|null = null, ):Promise { // Load the bundle and the matching locale, if found. - await this.load(); + await this.prefetch; const { type } = context; const editorClass = type === 'constrained' ? window.OPConstrainedEditor : window.OPClassicEditor; @@ -108,11 +115,11 @@ export class CKEditorSetupService { // untyped module cannot be dynamically imported // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore - await import(/* webpackChunkName: "ckeditor" */ 'core-vendor/ckeditor/ckeditor.js'); + await import(/* webpackPrefetch: true; webpackChunkName: "ckeditor" */ 'core-vendor/ckeditor/ckeditor'); try { await import( - /* webpackChunkName: "ckeditor-translation" */ `../../../../../../vendor/ckeditor/translations/${I18n.locale}.js` + /* webpackPrefetch: true; webpackChunkName: "ckeditor-translation" */ `../../../../../../vendor/ckeditor/translations/${I18n.locale}.js` ) as unknown; this.loadedLocale = I18n.locale; } catch (e:unknown) { diff --git a/frontend/src/app/shared/components/editor/openproject-editor.module.ts b/frontend/src/app/shared/components/editor/openproject-editor.module.ts index b9e597bded29..dbfc575eb663 100644 --- a/frontend/src/app/shared/components/editor/openproject-editor.module.ts +++ b/frontend/src/app/shared/components/editor/openproject-editor.module.ts @@ -26,7 +26,11 @@ // See COPYRIGHT and LICENSE files for more details. //++ -import { NgModule } from '@angular/core'; +import { + APP_INITIALIZER, + Injector, + NgModule, +} from '@angular/core'; import { FormsModule } from '@angular/forms'; import { CommonModule } from '@angular/common'; import { OpenprojectAttachmentsModule } from 'core-app/shared/components/attachments/openproject-attachments.module'; @@ -40,6 +44,13 @@ import { WikiIncludePageMacroModalComponent } from 'core-app/shared/components/m import { ChildPagesMacroModalComponent } from 'core-app/shared/components/modals/editor/macro-child-pages-modal/child-pages-macro.modal'; import { CodeBlockMacroModalComponent } from 'core-app/shared/components/modals/editor/macro-code-block-modal/code-block-macro.modal'; +export function initializeServices(injector:Injector) { + return () => { + const ckeditorService = injector.get(CKEditorSetupService); + ckeditorService.initialize(); + }; +} + @NgModule({ imports: [ FormsModule, @@ -52,6 +63,9 @@ import { CodeBlockMacroModalComponent } from 'core-app/shared/components/modals/ EditorMacrosService, CKEditorSetupService, CKEditorPreviewService, + { + provide: APP_INITIALIZER, useFactory: initializeServices, deps: [Injector], multi: true, + }, ], exports: [ CkeditorAugmentedTextareaComponent, diff --git a/frontend/src/app/shared/components/modals/preview-modal/wp-preview-modal/wp-preview.modal.ts b/frontend/src/app/shared/components/modals/preview-modal/wp-preview-modal/wp-preview.modal.ts index 15509ffeea93..a808d2d0f810 100644 --- a/frontend/src/app/shared/components/modals/preview-modal/wp-preview-modal/wp-preview.modal.ts +++ b/frontend/src/app/shared/components/modals/preview-modal/wp-preview-modal/wp-preview.modal.ts @@ -27,7 +27,13 @@ //++ import { - ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Inject, OnInit, + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + ElementRef, + Inject, + OnInit, + Input, } from '@angular/core'; import { OpModalComponent } from 'core-app/shared/components/modal/modal.component'; import { OpModalLocalsToken, OpModalService } from 'core-app/shared/components/modal/modal.service'; @@ -37,6 +43,13 @@ import { WorkPackageResource } from 'core-app/features/hal/resources/work-packag import idFromLink from 'core-app/features/hal/helpers/id-from-link'; import { ApiV3Service } from 'core-app/core/apiv3/api-v3.service'; import { StateService } from '@uirouter/core'; +import { + computePosition, + flip, + limitShift, + Placement, + shift, +} from '@floating-ui/dom'; @Component({ templateUrl: './wp-preview.modal.html', @@ -50,20 +63,26 @@ export class WpPreviewModalComponent extends OpModalComponent implements OnInit created_by: this.i18n.t('js.label_created_by'), }; - constructor(readonly elementRef:ElementRef, + @Input() public alignment?:Placement = 'bottom-end'; + + @Input() public allowRepositioning? = true; + + constructor( + readonly elementRef:ElementRef, @Inject(OpModalLocalsToken) readonly locals:OpModalLocalsMap, readonly cdRef:ChangeDetectorRef, readonly i18n:I18nService, readonly apiV3Service:ApiV3Service, readonly opModalService:OpModalService, - readonly $state:StateService) { + readonly $state:StateService, + ) { super(locals, cdRef, elementRef); } ngOnInit() { super.ngOnInit(); const { workPackageLink } = this.locals; - const workPackageId = idFromLink(workPackageLink); + const workPackageId = idFromLink(workPackageLink as string|null); this .apiV3Service @@ -74,23 +93,37 @@ export class WpPreviewModalComponent extends OpModalComponent implements OnInit this.workPackage = workPackage; this.cdRef.detectChanges(); - const modal = jQuery(this.elementRef.nativeElement); - this.reposition(modal, this.locals.event.target); + const modal = this.elementRef.nativeElement as HTMLElement; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-explicit-any + void this.reposition(modal, this.locals.event.target as HTMLElement); }); } - public reposition(element:JQuery, target:JQuery) { - element.position({ - my: 'right top', - at: 'right bottom', - of: target, - collision: 'flipfit', + public async reposition(element:HTMLElement, target:HTMLElement) { + const floatingEl = element.children[0] as HTMLElement; + const { x, y } = await computePosition( + target, + floatingEl, + { + placement: this.alignment, + middleware: this.allowRepositioning ? [ + flip({ + mainAxis: true, + crossAxis: true, + fallbackAxisSideDirection: 'start', + }), + shift({ limiter: limitShift() }), + ] : [], + }, + ); + Object.assign(floatingEl.style, { + left: `${x}px`, + top: `${y}px`, }); } public openStateLink(event:{ workPackageId:string; requestedState:string }) { const params = { workPackageId: event.workPackageId }; - - this.$state.go(event.requestedState, params); + void this.$state.go(event.requestedState, params); } } diff --git a/frontend/src/global_styles/content/_datepicker.sass b/frontend/src/global_styles/content/_datepicker.sass index 122883df6fcc..e90afd9eee4b 100644 --- a/frontend/src/global_styles/content/_datepicker.sass +++ b/frontend/src/global_styles/content/_datepicker.sass @@ -237,11 +237,11 @@ $datepicker--selected-border-radius: 5px border-color: transparent !important color: $spot-color-basic-gray-1 !important - &.flatpickr-non-working-day + &.flatpickr-non-working-day:not(.today,.selected) background: $spot-color-basic-gray-6 !important color: $spot-color-basic-gray-3 !important - &.flatpickr-non-working-day_enabled + &.flatpickr-non-working-day_enabled:not(.today,.selected) background: $spot-color-basic-gray-6 !important color: $spot-color-basic-gray-1 !important @@ -255,15 +255,6 @@ $datepicker--selected-border-radius: 5px background: $spot-color-basic-gray-6 !important border-color: $spot-color-basic-gray-6 !important - &.today - color: $spot-color-basic-gray-1 !important - background: $spot-color-indication-current-date !important - border-color: $spot-color-indication-current-date !important - - &.today - background: $spot-color-indication-current-date !important - border-color: $spot-color-indication-current-date !important - .flatpickr-calendar:not(.inline) box-shadow: $spot-shadow-light-mid !important padding: $spot-spacing-0_5 !important diff --git a/frontend/src/main.ts b/frontend/src/main.ts index 5ddcf1a806cc..5ef76396785e 100644 --- a/frontend/src/main.ts +++ b/frontend/src/main.ts @@ -19,9 +19,13 @@ const ASSET_BASE_PATH = '/assets/frontend/'; // Sets the relative base path window.appBasePath = jQuery('meta[name=app_base_path]').attr('content') || ''; +// Get the asset host, if any +const initializer = document.querySelector('meta[name="openproject_initializer"]') as HTMLMetaElement; +const ASSET_HOST = initializer.dataset.assetHost ? `//${initializer.dataset.assetHost}` : ''; + // Ensure to set the asset base for dynamic code loading // https://webpack.js.org/guides/public-path/ -__webpack_public_path__ = window.appBasePath + ASSET_BASE_PATH; +__webpack_public_path__ = ASSET_HOST + window.appBasePath + ASSET_BASE_PATH; window.ErrorReporter = configureErrorReporter(); diff --git a/lib/api/v3/utilities/endpoints/delayed_modify.rb b/lib/api/v3/utilities/endpoints/delayed_modify.rb index 790ab60b7097..4b74b98c826d 100644 --- a/lib/api/v3/utilities/endpoints/delayed_modify.rb +++ b/lib/api/v3/utilities/endpoints/delayed_modify.rb @@ -42,6 +42,7 @@ def present_success(request, call) def redirect_to_status(request, job) request.redirect api_v3_paths.job_status(job.job_id) + request.content_type 'application/json' end end end diff --git a/lib/open_project/version.rb b/lib/open_project/version.rb index 4c7b872718a7..f940b211d75f 100644 --- a/lib/open_project/version.rb +++ b/lib/open_project/version.rb @@ -33,7 +33,7 @@ module OpenProject module VERSION # :nodoc: MAJOR = 12 MINOR = 5 - PATCH = 7 + PATCH = 8 class << self # Used by semver to define the special version (if any). diff --git a/modules/avatars/config/locales/crowdin/js-no.yml b/modules/avatars/config/locales/crowdin/js-no.yml index a46d62321840..8d1131b72d7a 100644 --- a/modules/avatars/config/locales/crowdin/js-no.yml +++ b/modules/avatars/config/locales/crowdin/js-no.yml @@ -2,7 +2,7 @@ "no": js: label_preview: 'Forhåndsvis' - button_update: 'Oppdatèr' + button_update: 'Oppdater' avatars: label_choose_avatar: "Velg Profilbilde fra fil" uploading_avatar: "Laster opp profilbildet ditt." diff --git a/modules/avatars/config/locales/crowdin/js-zh-TW.yml b/modules/avatars/config/locales/crowdin/js-zh-TW.yml index 4d8714e6e02d..decada470b8d 100644 --- a/modules/avatars/config/locales/crowdin/js-zh-TW.yml +++ b/modules/avatars/config/locales/crowdin/js-zh-TW.yml @@ -11,5 +11,5 @@ zh-TW: 選擇了圖像後,在上傳之前將顯示您的頭像預覽。 error_image_too_large: "圖片太大。" wrong_file_format: "允許的格式是jpg, png以及gif" - empty_file_error: "請上傳一個有效的圖片格式 (jpg, png, gif)" + empty_file_error: "請上傳一個有效的圖片 (jpg, png, gif)" diff --git a/modules/avatars/config/locales/crowdin/ka.yml b/modules/avatars/config/locales/crowdin/ka.yml index 9918f6b0566b..c434b483ee7f 100644 --- a/modules/avatars/config/locales/crowdin/ka.yml +++ b/modules/avatars/config/locales/crowdin/ka.yml @@ -1,8 +1,8 @@ #English strings go here ka: label_avatar: "Avatar" - label_avatar_plural: "Avatars" - label_current_avatar: "Current Avatar" + label_avatar_plural: "პროფილის ფოტოები" + label_current_avatar: "აქტუალური ავატარი" label_choose_avatar: "Choose Avatar from file" message_avatar_uploaded: "Avatar changed successfully." error_image_upload: "Error saving the image." diff --git a/modules/backlogs/config/locales/crowdin/bg.yml b/modules/backlogs/config/locales/crowdin/bg.yml index 476da3965f7a..4e5770b6aebf 100644 --- a/modules/backlogs/config/locales/crowdin/bg.yml +++ b/modules/backlogs/config/locales/crowdin/bg.yml @@ -78,7 +78,7 @@ bg: x_more: "%{count} more..." backlogs_active: "Активен" backlogs_any: "всякакви" - backlogs_card_specification: "Видове етикети за печат на карти" + backlogs_card_specification: "Label types for card printing" backlogs_inactive: "Проектът не показва активност" backlogs_points_burn_direction: "Точки на изгаряне нагоре/надолу" backlogs_product_backlog: "Натрупване на продукти" diff --git a/modules/backlogs/config/locales/crowdin/es.yml b/modules/backlogs/config/locales/crowdin/es.yml index d9c826a2a0e3..105458b31834 100644 --- a/modules/backlogs/config/locales/crowdin/es.yml +++ b/modules/backlogs/config/locales/crowdin/es.yml @@ -130,13 +130,13 @@ es: label_sprint_velocity: "Velocidad %{velocity}, basada en %{sprints} sprints con una media de %{days} días" label_stories: "Historias" label_stories_tasks: "Historias/tareas" - label_task_board: "Panel de tareas" + label_task_board: "Tablero de tareas" label_version_setting: "Versiones" label_version: 'Versión' label_webcal: "Webcal Feed" label_wiki: "Wiki" permission_view_master_backlog: "Ver backlog maestro" - permission_view_taskboards: "Ver paneles de tareas" + permission_view_taskboards: "Ver tablero de tareas" permission_select_done_statuses: "Seleccionar estados de finalización" permission_update_sprints: "Actualizar sprints" points_accepted: "puntos aceptados" diff --git a/modules/backlogs/config/locales/crowdin/hi.yml b/modules/backlogs/config/locales/crowdin/hi.yml index ce9c87b5bd30..f2a733b2437c 100644 --- a/modules/backlogs/config/locales/crowdin/hi.yml +++ b/modules/backlogs/config/locales/crowdin/hi.yml @@ -92,7 +92,7 @@ hi: backlogs_story: "कहानी" backlogs_story_type: "Story types" backlogs_task: "कार्य" - backlogs_task_type: "Task type" + backlogs_task_type: "कार्य प्रकार" backlogs_velocity_missing: "No velocity could be calculated for this project" backlogs_velocity_varies: "Velocity varies significantly over sprints" backlogs_wiki_template: "Template for sprint wiki page" diff --git a/modules/backlogs/config/locales/crowdin/ka.yml b/modules/backlogs/config/locales/crowdin/ka.yml index 4ff25c6ee8ca..ea7d0ec1d904 100644 --- a/modules/backlogs/config/locales/crowdin/ka.yml +++ b/modules/backlogs/config/locales/crowdin/ka.yml @@ -132,7 +132,7 @@ ka: label_stories_tasks: "Stories/Tasks" label_task_board: "Task board" label_version_setting: "Versions" - label_version: 'Version' + label_version: 'ვერსია' label_webcal: "Webcal Feed" label_wiki: "Wiki" permission_view_master_backlog: "View master backlog" diff --git a/modules/backlogs/config/locales/crowdin/no.yml b/modules/backlogs/config/locales/crowdin/no.yml index 454b415a6bd0..a55e81bb9821 100644 --- a/modules/backlogs/config/locales/crowdin/no.yml +++ b/modules/backlogs/config/locales/crowdin/no.yml @@ -95,67 +95,67 @@ backlogs_task_type: "Oppgavetype" backlogs_velocity_missing: "Ingen hastighet kan beregnes for dette prosjektet" backlogs_velocity_varies: "Hastigheten varierer betydelig over sprinter" - backlogs_wiki_template: "Template for sprint wiki page" - backlogs_empty_title: "No versions are defined to be used in backlogs" - backlogs_empty_action_text: "To get started with backlogs, create a new version and assign it to a backlogs column." - button_edit_wiki: "Edit wiki page" - error_backlogs_task_cannot_be_story: "The settings are invalid. The selected task type can not also be a story type." - error_intro_plural: "The following errors were encountered:" - error_intro_singular: "The following error was encountered:" - error_outro: "Please correct the above errors before submitting again." + backlogs_wiki_template: "Mal for sprint wiki-side" + backlogs_empty_title: "Ingen versjoner er definert til å brukes i backlogs" + backlogs_empty_action_text: "For å komme i gang med backlogs, lag en ny versjon og legg den til i en backlog-kolonne" + button_edit_wiki: "Rediger Wiki-sider" + error_backlogs_task_cannot_be_story: "Instillingene er ugyldige. Den valgte oppgavetypen kan ikke også være en historietype." + error_intro_plural: "Møtte på følgende feil:" + error_intro_singular: "Møtte på følgende feil:" + error_outro: "Venligst rett feilene over før du sender inn igjen." event_sprint_description: "%{summary}: %{url}\n%{description}" event_sprint_summary: "%{project}: %{summary}" - ideal: "ideal" + ideal: "Ideell" inclusion: "er ikke inkludert i listen" - label_back_to_project: "Back to project page" + label_back_to_project: "Tilbake til projektsiden" label_backlog: "Backlog" label_backlogs: "Backlogs" - label_backlogs_unconfigured: "You have not configured Backlogs yet. Please go to %{administration} > %{plugins}, then click on the %{configure} link for this plugin. Once you have set the fields, come back to this page to start using the tool." + label_backlogs_unconfigured: "Du har ikke konfigurert Backlogs enda. Gå til %{administration} > %{plugins}og klikk deretter på %{configure} linken for denne utvidelsen. Når du har angitt felter, kom du tilbake til denne siden for å begynne å bruke verktøyet." label_blocks_ids: "IDer for blokkerte arbeidspakker" - label_burndown: "Burndown" - label_column_in_backlog: "Column in backlog" + label_burndown: "Gjenstående" + label_column_in_backlog: "Kolonne i backlog" label_hours: " timer" - label_work_package_hierarchy: "Work package Hierarchy" + label_work_package_hierarchy: "Hierarki for arbeidspakker" label_master_backlog: "Master Backlog" - label_not_prioritized: "not prioritized" - label_points: "points" - label_points_burn_down: "Down" - label_points_burn_up: "Up" - label_product_backlog: "product backlog" - label_select_all: "Select all" + label_not_prioritized: "ikke prioritert" + label_points: "punkter" + label_points_burn_down: "Ned" + label_points_burn_up: "Opp" + label_product_backlog: "Produkt-backlog" + label_select_all: "Velg alle" label_sprint_backlog: "sprint backlog" - label_sprint_cards: "Export cards" - label_sprint_impediments: "Sprint Impediments" + label_sprint_cards: "Eksporter kort" + label_sprint_impediments: "Sprint hindring" label_sprint_name: "Sprint \"%{name}\"" - label_sprint_velocity: "Velocity %{velocity}, based on %{sprints} sprints with an average %{days} days" - label_stories: "Stories" - label_stories_tasks: "Stories/Tasks" - label_task_board: "Task board" + label_sprint_velocity: "Hastighet %{velocity}, basert på %{sprints} sprints med gjennomsnittlig %{days} dager" + label_stories: "Historier" + label_stories_tasks: "Historier/Oppgaver" + label_task_board: "Oppgavetavle" label_version_setting: "Versjoner" label_version: 'Versjon' label_webcal: "Webcal Feed" label_wiki: "Wiki" - permission_view_master_backlog: "View master backlog" - permission_view_taskboards: "View taskboards" - permission_select_done_statuses: "Select done statuses" - permission_update_sprints: "Update sprints" - points_accepted: "points accepted" - points_committed: "points committed" - points_resolved: "points resolved" - points_to_accept: "points not accepted" - points_to_resolve: "points not resolved" + permission_view_master_backlog: "Vis master backlog" + permission_view_taskboards: "Vis oppgavetavler" + permission_select_done_statuses: "Velg ferdige statuser" + permission_update_sprints: "Oppdater sprinter" + points_accepted: "poeng akseptert" + points_committed: "Poeng investert" + points_resolved: "Poeng løst" + points_to_accept: "Poeng ikke akseptert" + points_to_resolve: "Poeng ikke løst" project_module_backlogs: "Backlogs" - rb_label_copy_tasks: "Copy work packages" - rb_label_copy_tasks_all: "All" + rb_label_copy_tasks: "Kopier arbeidspakker" + rb_label_copy_tasks_all: "Alle" rb_label_copy_tasks_none: "Ingen" rb_label_copy_tasks_open: "Åpne" - rb_label_link_to_original: "Include link to original story" - remaining_hours: "remaining hours" - required_burn_rate_hours: "required burn rate (hours)" - required_burn_rate_points: "required burn rate (points)" + rb_label_link_to_original: "Inkluder lenke til den originale historien" + remaining_hours: "Gjenstående timer" + required_burn_rate_hours: "Nødvendig brennetid (timer)" + required_burn_rate_points: "Nødvendig brennetid (poeng)" todo_work_package_description: "%{summary}: %{url}\n%{description}" todo_work_package_summary: "%{type}: %{summary}" - version_settings_display_label: "Column in backlog" - version_settings_display_option_left: "left" + version_settings_display_label: "Kolonne i backlog" + version_settings_display_option_left: "venstre" version_settings_display_option_none: "ingen" - version_settings_display_option_right: "right" + version_settings_display_option_right: "høyre" diff --git a/modules/bim/config/locales/crowdin/id.yml b/modules/bim/config/locales/crowdin/id.yml index c80865eaf39f..91e6800f704f 100644 --- a/modules/bim/config/locales/crowdin/id.yml +++ b/modules/bim/config/locales/crowdin/id.yml @@ -15,7 +15,7 @@ id: file_invalid: "File BCF tidak valid" x_bcf_issues: zero: 'Tidak ada masalah BCF' - one: 'One BCF issue' + one: 'Satu masalah BCF' other: 'Terdapat %{count} masalah BCF' bcf_xml: xml_file: 'File BCF XML' @@ -23,7 +23,7 @@ id: export: 'Ekspor' import_update_comment: '(import BCF diperbarui)' import_failed: 'Tidak bisa mengimport file BCF: %{error}' - import_failed_unsupported_bcf_version: 'Failed to read the BCF file: The BCF version is not supported. Please ensure the version is at least %{minimal_version} or higher.' + import_failed_unsupported_bcf_version: 'Gagal membaca file BCF: Versi BCF tidak didukung. Pastikan versinya minimal %{minimal_version} atau lebih tinggi.' import_successful: '%{count} masalah BCF di import' import_canceled: 'import BCF-XML dibatalkan.' type_not_active: "Jenis masalah tidak di aktifkan dalam proyek ini." @@ -31,7 +31,7 @@ id: num_issues_found: '%{x_bcf_issues} terdapat pada file BCF-XML, lebih jelasnya tercantum dibawah ini.' button_prepare: 'Persiapan import' button_perform_import: 'Konfirmasi import' - button_proceed: 'Proceed with import' + button_proceed: 'Lanjutkan dengan impor' button_back_to_list: 'Kembali ke daftar' no_permission_to_add_members: 'Anda tidak memiliki izin untuk menambah mereka sebagai anggota kedalam proyek.' contact_project_admin: 'Hubungi admin proyek anda untuk menambah mereka sebagai anggota dan mulai lagi.' @@ -57,7 +57,7 @@ id: import_as_system_user: 'Import mereka sebaga pengguna "System".' what_to_do: "Apa yang ingin Anda lakukan?" work_package_has_newer_changes: "Kadaluarsa! Topik ini tidak diperbarui sebagai perubahan terakhir dalam server lebih baru dari \"ModifiedDate\" pada topik yang di import. Namun, komentar dan topik tersebut telah di import." - bcf_file_not_found: "Failed to locate BCF file. Please start the upload process again." + bcf_file_not_found: "Gagal menemukan berkas BCF. Silakan mulai proses pengunggahan lagi." export: format: bcf: "BCF-XML" @@ -67,7 +67,7 @@ id: project_module_bim: "BCF" permission_view_linked_issues: "Lihat masalah BCF" permission_manage_bcf: "Import dan atur masalah BCF" - permission_delete_bcf: "Delete BCF issues" + permission_delete_bcf: "Hapus masalah BCF" oauth: scopes: bcf_v2_1: "Akses penuh kepada API BCF v2.1" @@ -77,16 +77,16 @@ id: bim/ifc_models/ifc_model: "Model IFC" attributes: bim/ifc_models/ifc_model: - ifc_attachment: "IFC file" - is_default: "Default model" - attachments: "IFC file" + ifc_attachment: "berkas IFC" + is_default: "Model bawaan" + attachments: "berkas IFC" errors: models: bim/ifc_models/ifc_model: attributes: base: - ifc_attachment_missing: "No ifc file attached." - invalid_ifc_file: "The provided file is not a valid IFC file." + ifc_attachment_missing: "Tidak ada file ifc yang dilampirkan." + invalid_ifc_file: "File yang disediakan bukan file IFC yang valid." bim/bcf/viewpoint: bitmaps_not_writable: "bitmap tidak bisa ditulis karena belum dilakukan." index_not_integer: "index bukan sebuah integer." @@ -101,7 +101,7 @@ id: snapshot_data_blank: "snapshot_data harus disediakan." unsupported_key: "Properti json yang tidak support dimasukan." bim/bcf/issue: - uuid_already_taken: "Can't import this BCF issue as there already is another with the same GUID. Could it be that this BCF issue had already been imported into a different project?" + uuid_already_taken: "Tidak dapat mengimpor masalah BCF ini karena sudah ada masalah lain dengan GUID yang sama. Mungkinkah masalah BCF ini sudah diimpor ke proyek lain?" ifc_models: label_ifc_models: 'Model IFC' label_new_ifc_model: 'New IFC model' diff --git a/modules/bim/config/locales/crowdin/js-zh-TW.yml b/modules/bim/config/locales/crowdin/js-zh-TW.yml index f6fbfd2271f6..746fad495048 100644 --- a/modules/bim/config/locales/crowdin/js-zh-TW.yml +++ b/modules/bim/config/locales/crowdin/js-zh-TW.yml @@ -4,24 +4,24 @@ zh-TW: bcf: label_bcf: 'BCF' import: '匯入' - import_bcf_xml_file: 'Import BCF XML file (BCF version 2.1)' + import_bcf_xml_file: '匯出 BCF XML 檔案 (BCF version 2.1)' export: '匯出' - export_bcf_xml_file: 'Export BCF XML file (BCF version 2.1)' - viewpoint: 'Viewpoint' - add_viewpoint: 'Add viewpoint' - show_viewpoint: 'Show viewpoint' - delete_viewpoint: 'Delete viewpoint' - management: 'BCF management' - refresh: 'Refresh' - refresh_work_package: 'Refresh work package' + export_bcf_xml_file: '匯出 BCF XML 檔案 (BCF version 2.1)' + viewpoint: '視點' + add_viewpoint: '新增視點' + show_viewpoint: '顯示視點' + delete_viewpoint: '刪除視點' + management: 'BCF 管理' + refresh: '重新整理' + refresh_work_package: '刷新工作項目' ifc_models: - empty_warning: "This project does not yet have any IFC models." - use_this_link_to_manage: "Use this link to upload and manage your IFC models" + empty_warning: "此專案沒有任何 IFC 模型" + use_this_link_to_manage: "用此連結來上載及管理您的 IFC 模型" keyboard_input_disabled: "Viewer does not have keyboard controls. Click on the viewer to give keyboard control to the viewer." models: ifc_models: 'IFC 模型' views: - viewer: 'Viewer' + viewer: '檢視器' split: 'Viewer and table' split_cards: 'Viewer and cards' revit: diff --git a/modules/boards/config/locales/crowdin/es.yml b/modules/boards/config/locales/crowdin/es.yml index 7b8d1f4714d6..bc6a00c1442d 100644 --- a/modules/boards/config/locales/crowdin/es.yml +++ b/modules/boards/config/locales/crowdin/es.yml @@ -1,7 +1,7 @@ #English strings go here es: - permission_show_board_views: "Ver paneles" - permission_manage_board_views: "Administrar paneles" + permission_show_board_views: "Ver tableros" + permission_manage_board_views: "Administrar tableros" project_module_board_view: "Tableros" boards: label_board: "Tablero" diff --git a/modules/boards/config/locales/crowdin/js-ar.yml b/modules/boards/config/locales/crowdin/js-ar.yml index f9257c3d18e6..d2ede28c458d 100644 --- a/modules/boards/config/locales/crowdin/js-ar.yml +++ b/modules/boards/config/locales/crowdin/js-ar.yml @@ -62,7 +62,7 @@ ar: status: الحالة version: الإصدار subproject: مشروع فرعي - subtasks: Parent-child + subtasks: الاصل والفرع basic: Basic select_attribute: "Action attribute" add_list_modal: diff --git a/modules/boards/config/locales/crowdin/js-ca.yml b/modules/boards/config/locales/crowdin/js-ca.yml index 7b4ddfdc72f5..d8e6bdf35c04 100644 --- a/modules/boards/config/locales/crowdin/js-ca.yml +++ b/modules/boards/config/locales/crowdin/js-ca.yml @@ -7,7 +7,7 @@ ca: label_unnamed_list: 'Llista sense nom' label_board_type: 'Tipus de taulell' upsale: - teaser_text: 'T''agradaria automatitzar els teus processos de treball amb taulells? Els taulells avançats són un add-on de l''edició Enterprise. Si us plau, actualitza a un pla de pagament.' + teaser_text: 'T''agradaria automatitzar els teus processos de treball amb taulells? Els taulells avançats són una extensió de l''edició Enterprise. Si us plau, actualitza a un pla de pagament.' upgrade: 'Actualitzeu ara' lists: delete: 'Suprimeix la llista' diff --git a/modules/boards/config/locales/crowdin/js-es.yml b/modules/boards/config/locales/crowdin/js-es.yml index 59cb3d65e634..bbd62c1ec5ed 100644 --- a/modules/boards/config/locales/crowdin/js-es.yml +++ b/modules/boards/config/locales/crowdin/js-es.yml @@ -2,12 +2,12 @@ es: js: boards: - create_new: 'Crear panel' - label_unnamed_board: 'Panel sin nombre' + create_new: 'Crear tablero' + label_unnamed_board: 'Tablero sin nombre' label_unnamed_list: 'Lista sin nombre' - label_board_type: 'Tipo de panel' + label_board_type: 'Tipo de tablero' upsale: - teaser_text: '¿Quieres automatizar tus flujos de trabajo con Paneles? Los paneles avanzados son un add-on de la edición Enterprise. Por favor, actualice a un plan de pago.' + teaser_text: '¿Quieres automatizar tus flujos de trabajo con tableros? Los tableros avanzados son una extensión de Enterprise. Por favor, actualice a un plan de pago.' upgrade: 'Actualizar ahora' lists: delete: 'Eliminar lista' @@ -22,8 +22,8 @@ es: show_version: 'Mostrar versión' locked: 'Bloqueado' closed: 'Cerrado' - new_board: 'Nuevo panel' - add_list: 'Añadir lista al panel' + new_board: 'Nuevo tablero' + add_list: 'Añadir lista al tablero' add_card: 'Agregar tarjeta' error_attribute_not_writable: "No se puede mover el paquete de trabajo porque %{attribute} no permite la escritura." error_loading_the_list: "Error al cargar la lista: %{error_message}" @@ -32,23 +32,23 @@ es: text_hidden_list_warning: "No todas las listas son desplegadas debido a su falta de permiso. Contacte a su administrador para más información." click_to_remove_list: "Haga clic para quitar esta lista" board_type: - text: 'Tipo de panel' + text: 'Tipo de tablero' free: 'básico' select_board_type: 'Por favor elija el tipo de tablero que necesite.' free_text: > - Empiece desde cero con un panel en blanco. Añada de forma manual tarjetas y columnas a este panel. - action: 'Panel de acciones' - action_by_attribute: 'Panel de acciones (%{attribute})' + Empiece desde cero con un tablero en blanco. Añada de forma manual tarjetas y columnas a este tablero. + action: 'Tablero de acciones' + action_by_attribute: 'Tablero de acciones (%{attribute})' action_text: > - Un panel con listas filtradas en el atributo %{attribute}. Al mover paquetes de trabajo a otras listas, se actualizará su atributo. + Un tablero con listas filtradas en el atributo %{attribute}. Al mover paquetes de trabajo a otras listas, se actualizará su atributo. action_text_subprojects: > - Panel con columnas automáticas para subproyectos. Al arrastrar paquetes de trabajo a otras listas, se actualizan los (sub)proyectos en consecuencia. + Tablero con columnas automáticas para subproyectos. Al arrastrar paquetes de trabajo a otras listas, se actualizan los (sub)proyectos en consecuencia. action_text_subtasks: > - Panel con columnas automáticas para subelementos. Al arrastrar paquetes de trabajo a otras listas, se actualizan los elementos principales en consecuencia. + Tablero con columnas automáticas para subelementos. Al arrastrar paquetes de trabajo a otras listas, se actualizan los elementos principales en consecuencia. action_text_status: > - Panel básico estilo kanban con columnas para indicar el estado, como «Tarea pendiente», «En curso» y «Listo». + Tablero básico estilo kanban con columnas para indicar el estado, como «Tarea pendiente», «En curso» y «Listo». action_text_assignee: > - Panel con columnas automáticas basadas en los usuarios asignados. Ideal para enviar paquetes de trabajo. + Tablero con columnas automáticas basadas en los usuarios asignados. Ideal para enviar paquetes de trabajo. action_text_version: > Tablero con columnas automatizadas basadas en el atributo de la versión. Ideal para planificar el desarrollo de productos. action_type: @@ -75,12 +75,12 @@ es: warning: status: | No hay estados disponibles actualmente.
- Puede que no haya ninguno, o bien ya se añadieron todos al panel. + Puede que no haya ninguno, o bien ya se añadieron todos al tablero. assignee: No hay ningún miembro que coincida con el valor de filtro.
no_member: El proyecto no tiene actualmente ningún miembro que pueda añadirse.
add_members: Añada un miembro a este proyecto para volver a seleccionar usuarios. configuration_modal: - title: 'Configurar este panel' + title: 'Configurar este tablero' display_settings: card_mode: "Mostrar como tarjetas" table_mode: "Mostrar como tabla" diff --git a/modules/boards/config/locales/crowdin/js-id.yml b/modules/boards/config/locales/crowdin/js-id.yml index 4e42399e82b3..d89bb4203b55 100644 --- a/modules/boards/config/locales/crowdin/js-id.yml +++ b/modules/boards/config/locales/crowdin/js-id.yml @@ -63,7 +63,7 @@ id: version: Versi subproject: Sub-Project subtasks: Parent-child - basic: Basic + basic: Dasar select_attribute: "Aksi atribut" add_list_modal: labels: diff --git a/modules/boards/config/locales/crowdin/js-ka.yml b/modules/boards/config/locales/crowdin/js-ka.yml index 1b65ab033b57..90bda857a7db 100644 --- a/modules/boards/config/locales/crowdin/js-ka.yml +++ b/modules/boards/config/locales/crowdin/js-ka.yml @@ -8,7 +8,7 @@ ka: label_board_type: 'Board type' upsale: teaser_text: 'Would you like to automate your workflows with Boards? Advanced boards are an Enterprise add-on. Please upgrade to a paid plan.' - upgrade: 'Upgrade now' + upgrade: 'ახლავე განაახლე' lists: delete: 'Delete list' version: @@ -24,7 +24,7 @@ ka: closed: 'Closed' new_board: 'New board' add_list: 'Add list to board' - add_card: 'Add card' + add_card: 'ბარათის დამატება' error_attribute_not_writable: "Cannot move the work package, %{attribute} is not writable." error_loading_the_list: "Error loading the list: %{error_message}" error_permission_missing: "The permission to create public queries is missing" @@ -54,16 +54,16 @@ ka: action_type: assignee: assignee status: status - version: version + version: ვერსია subproject: subproject subtasks: parent-child board_type_title: assignee: Assignee - status: Status - version: Version + status: სტატუსი + version: ვერსია subproject: Subproject subtasks: Parent-child - basic: Basic + basic: ძირითადი select_attribute: "Action attribute" add_list_modal: labels: diff --git a/modules/boards/config/locales/crowdin/js-lt.yml b/modules/boards/config/locales/crowdin/js-lt.yml index ead406c6a1d5..ab6ecc367a1d 100644 --- a/modules/boards/config/locales/crowdin/js-lt.yml +++ b/modules/boards/config/locales/crowdin/js-lt.yml @@ -7,7 +7,7 @@ lt: label_unnamed_list: 'Bevardis sąrašas' label_board_type: 'Lentos tipas' upsale: - teaser_text: 'Would you like to automate your workflows with Boards? Advanced boards are an Enterprise add-on. Please upgrade to a paid plan.' + teaser_text: 'Ar norite automatizuoti jūsų procesus su Lentomis? Išmaniosios lentos yra Enterprise priedas. Prašome pasikeisti į mokamą planą.' upgrade: 'Užsisakykite dabar' lists: delete: 'Pašalinti sąrašą' @@ -62,7 +62,7 @@ lt: status: Būsena version: Versija subproject: Sub-projektas - subtasks: Parent-child + subtasks: Tėvo-vaiko basic: Pagrindinis select_attribute: "Veiksmo atributas" add_list_modal: diff --git a/modules/boards/config/locales/crowdin/js-nl.yml b/modules/boards/config/locales/crowdin/js-nl.yml index 4c3a44dd07b4..df8f4f034cd2 100644 --- a/modules/boards/config/locales/crowdin/js-nl.yml +++ b/modules/boards/config/locales/crowdin/js-nl.yml @@ -62,7 +62,7 @@ nl: status: Status version: Versie subproject: Subproject - subtasks: Parent-child + subtasks: Ouder-kind basic: Basis select_attribute: "Actie attribuut" add_list_modal: diff --git a/modules/boards/config/locales/crowdin/js-zh-TW.yml b/modules/boards/config/locales/crowdin/js-zh-TW.yml index f91e9b44c6cb..1e34843280d2 100644 --- a/modules/boards/config/locales/crowdin/js-zh-TW.yml +++ b/modules/boards/config/locales/crowdin/js-zh-TW.yml @@ -27,9 +27,9 @@ zh-TW: add_card: '新增卡片' error_attribute_not_writable: "無法移動該工作項目, %{attribute} 不可寫入" error_loading_the_list: "列表讀取錯誤: %{error_message}" - error_permission_missing: "The permission to create public queries is missing" - error_cannot_move_into_self: "You can not move a work package into its own column." - text_hidden_list_warning: "Not all lists are displayed because you lack the permission. Contact your admin for more information." + error_permission_missing: "缺少建立公開查詢的權限" + error_cannot_move_into_self: "不可將任務移至自己的欄位" + text_hidden_list_warning: "因權限限制,清單無法全部顯示,請聯絡管理員。" click_to_remove_list: "移除列表" board_type: text: '看板類型' @@ -37,8 +37,8 @@ zh-TW: select_board_type: '選擇您需要的看板類型' free_text: > 從空白看板開始使用,添加新的卡片和列表到這個看板 - action: 'Action board' - action_by_attribute: 'Action board (%{attribute})' + action: '行動項看板' + action_by_attribute: '行動項看板 (%{attribute})' action_text: > A board with filtered lists on %{attribute} attribute. Moving work packages to other lists will update their attribute. action_text_subprojects: > @@ -56,7 +56,7 @@ zh-TW: status: 狀態 version: 版本 subproject: 子專案 - subtasks: parent-child + subtasks: 父-子 board_type_title: assignee: 負責執行者 status: 狀態 @@ -64,23 +64,22 @@ zh-TW: subproject: 子專案 subtasks: Parent-child basic: 基本 - select_attribute: "Action attribute" + select_attribute: "動作屬性" add_list_modal: labels: assignee: 選擇使用者至新的指派列表 - status: Select status to add as a new list - version: Select version to add as a new list - subproject: Select subproject to add as a new list - subtasks: Select work package to add as a new list + status: 依選擇狀態新增清單 + version: 依選擇版本新增清單 + subproject: 依選擇子專案新增清單 + subtasks: 依選擇任務新增清單 warning: status: | - There is currently no status available.
- Either there are none or they have all already been added to the board. - assignee: There isn't any member matched with your filter value.
- no_member: This project currently does not have any members that can be added.
- add_members: Add a new member to this project to select users again. + 目前無可用狀態 + assignee: 沒有任何符合您設定篩選值的人員 + no_member: 此專案目前沒有任何可以加入的人員 + add_members: 新增人員至此專案 來再次選擇使用者。 configuration_modal: - title: 'Configure this board' + title: '設定此看板' display_settings: - card_mode: "Display as cards" - table_mode: "Display as table" + card_mode: "顯示為卡片" + table_mode: "顯示為預覽圖" diff --git a/modules/budgets/config/locales/crowdin/ar.yml b/modules/budgets/config/locales/crowdin/ar.yml index d23df67b0fee..82701e14ddcd 100644 --- a/modules/budgets/config/locales/crowdin/ar.yml +++ b/modules/budgets/config/locales/crowdin/ar.yml @@ -66,7 +66,7 @@ ar: label_example_placeholder: 'مثال، %{decimal}' label_view_all_budgets: "عرض جميع الميزانيات" label_yes: "نعم" - notice_budget_conflict: "Work packages must be of the same project." + notice_budget_conflict: "مجموعات العمل يجب أن تكون لنفس المشروع." notice_no_budgets_available: "لا يوجد ميزانيات متاحة." permission_edit_budgets: "تحرير الميزانية" permission_view_budgets: "عرض الميزانيات" diff --git a/modules/budgets/config/locales/crowdin/ka.yml b/modules/budgets/config/locales/crowdin/ka.yml index 1e904171eaff..738bf4c80bc8 100644 --- a/modules/budgets/config/locales/crowdin/ka.yml +++ b/modules/budgets/config/locales/crowdin/ka.yml @@ -29,7 +29,7 @@ ka: budget_ratio: "Spent (ratio)" description: "Description" spent: "Spent" - status: "Status" + status: "სტატუსი" subject: "Subject" type: "Cost type" labor_budget: "Planned labor costs" diff --git a/modules/budgets/config/locales/crowdin/lt.yml b/modules/budgets/config/locales/crowdin/lt.yml index de03d5ceb0ae..38ee2628247a 100644 --- a/modules/budgets/config/locales/crowdin/lt.yml +++ b/modules/budgets/config/locales/crowdin/lt.yml @@ -66,7 +66,7 @@ lt: label_example_placeholder: 't.y., %{decimal}' label_view_all_budgets: "Peržiūrėti visus biudžetus" label_yes: "Taip" - notice_budget_conflict: "Work packages must be of the same project." + notice_budget_conflict: "Darbų paketai turi būti tame pačiame projekte." notice_no_budgets_available: "Nėra biudžetų." permission_edit_budgets: "Redaguoti biudžetus" permission_view_budgets: "Peržiūrėti biudžetus" diff --git a/modules/budgets/config/locales/crowdin/zh-TW.yml b/modules/budgets/config/locales/crowdin/zh-TW.yml index 7a9ad4aa2ce4..8c17232de7e1 100644 --- a/modules/budgets/config/locales/crowdin/zh-TW.yml +++ b/modules/budgets/config/locales/crowdin/zh-TW.yml @@ -59,7 +59,7 @@ zh-TW: help_currency_format: "Format of displayed currency values. %n is replaced with the currency value, %u ist replaced with the currency unit." help_override_rate: "Enter a value here to override the default rate." label_budget: "預算" - label_budget_new: "新增預算" + label_budget_new: "新預算" label_budget_plural: "預算" label_budget_id: "預算 #%{id}" label_deliverable: "預算" diff --git a/modules/calendar/config/locales/crowdin/js-zh-TW.yml b/modules/calendar/config/locales/crowdin/js-zh-TW.yml index 59c0f13d770d..09a9307b70b1 100644 --- a/modules/calendar/config/locales/crowdin/js-zh-TW.yml +++ b/modules/calendar/config/locales/crowdin/js-zh-TW.yml @@ -2,7 +2,7 @@ zh-TW: js: calendar: - create_new: 'Create new calendar' + create_new: '建立行事曆' title: '行事曆' too_many: '總共有 %{count} 個工作項目,但只有 %{max} 個可以顯示。' - unsaved_title: 'Unnamed calendar' + unsaved_title: '未命名的行事曆' diff --git a/modules/calendar/config/locales/crowdin/zh-TW.yml b/modules/calendar/config/locales/crowdin/zh-TW.yml index dded6ec6740b..07dd59d45cb1 100644 --- a/modules/calendar/config/locales/crowdin/zh-TW.yml +++ b/modules/calendar/config/locales/crowdin/zh-TW.yml @@ -1,6 +1,6 @@ #English strings go here zh-TW: - label_calendar_plural: "Calendars" - permission_view_calendar: "View calendars" - permission_manage_calendars: "Manage calendars" + label_calendar_plural: "行事曆" + permission_view_calendar: "檢視行事曆" + permission_manage_calendars: "管理行事曆" project_module_calendar_view: "行事曆" diff --git a/modules/costs/config/locales/crowdin/js-zh-TW.yml b/modules/costs/config/locales/crowdin/js-zh-TW.yml index bc5bb7b49cc2..ec2185f58ad0 100644 --- a/modules/costs/config/locales/crowdin/js-zh-TW.yml +++ b/modules/costs/config/locales/crowdin/js-zh-TW.yml @@ -23,10 +23,10 @@ zh-TW: js: work_packages: property_groups: - costs: "Costs" + costs: "費用" properties: - overallCosts: "Overall costs" - spentUnits: "Spent units" - button_log_costs: "Log unit costs" + overallCosts: "總計" + spentUnits: "支出單位" + button_log_costs: "紀錄支出單位" label_hour: "小時" label_hours: "小時" diff --git a/modules/costs/config/locales/crowdin/no.yml b/modules/costs/config/locales/crowdin/no.yml index fdb57500d700..9ddbcc149447 100644 --- a/modules/costs/config/locales/crowdin/no.yml +++ b/modules/costs/config/locales/crowdin/no.yml @@ -24,72 +24,72 @@ attributes: cost_entry: work_package: "Arbeidspakke" - overridden_costs: "Overridden costs" + overridden_costs: "Overstyrte kostnader" spent: "Brukt" spent_on: "Dato" cost_type: - unit: "Unit name" - unit_plural: "Pluralized unit name" + unit: "Enhetsnavn" + unit_plural: "Flertallsnavn på enhet" work_package: - costs_by_type: "Spent units" - labor_costs: "Labor costs" - material_costs: "Unit costs" - overall_costs: "Overall costs" - spent_costs: "Spent costs" - spent_units: "Spent units" + costs_by_type: "Brukte enheter" + labor_costs: "Arbeidskostnad" + material_costs: "Enhetskostnader" + overall_costs: "Samlede kostnader" + spent_costs: "Brukte kostnader" + spent_units: "Brukte enheter" rate: - rate: "Rate" + rate: "Sats" user: - default_rates: "Default rates" + default_rates: "Standard satser" models: cost_type: one: "Type kostnader" other: "Cost types" - rate: "Rate" + rate: "Sats" errors: models: work_package: - is_not_a_valid_target_for_cost_entries: "Work package #%{id} is not a valid target for reassigning the cost entries." - nullify_is_not_valid_for_cost_entries: "Cost entries can not be assigned to a project." + is_not_a_valid_target_for_cost_entries: "Arbeidspakke #%{id} er ikke et gyldig mål for nytildeling av kostnadsoppføringer." + nullify_is_not_valid_for_cost_entries: "Kostnadsoppføringer kan ikke tilordnes et prosjekt." attributes: comment: "Kommentar" cost_type: "Type kostnader" - costs: "Costs" - current_rate: "Current rate" + costs: "Kostnader" + current_rate: "Nåværende sats" hours: "Timer" units: "Enheter" - valid_from: "Valid from" - fixed_date: "Fixed date" - button_add_rate: "Add rate" - button_log_costs: "Log unit costs" - caption_booked_on_project: "Booked on project" + valid_from: "Gyldig fra" + fixed_date: "Fast dato" + button_add_rate: "Legg til sats" + button_log_costs: "Loggfør enhetskostnader" + caption_booked_on_project: "Bestilt i prosjektet" caption_default: "Standard" - caption_default_rate_history_for: "Default rate history for %{user}" - caption_locked_on: "Locked on" + caption_default_rate_history_for: "Standardratehistorikk for %{user}" + caption_locked_on: "Låst på" caption_materials: "Enheter" - caption_rate_history: "Rate history" - caption_rate_history_for: "Rate history for %{user}" - caption_rate_history_for_project: "Rate history for %{user} in project %{project}" - caption_save_rate: "Save rate" - caption_set_rate: "Set current rate" - caption_show_locked: "Show locked types" - description_date_for_new_rate: "Date for new rate" - group_by_others: "not in any group" + caption_rate_history: "Satshistorikk" + caption_rate_history_for: "Satshistorikk for %{user}" + caption_rate_history_for_project: "Satshistorikk for %{user} i prosjektet %{project}" + caption_save_rate: "Lagre sats" + caption_set_rate: "Angi gjeldende sats" + caption_show_locked: "Vis låste typer" + description_date_for_new_rate: "Dato for ny sats" + group_by_others: "ikke i noen grupper" label_between: "mellom" - label_cost_filter_add: "Add cost entry filter" - label_costlog: "Logged unit costs" - label_cost_plural: "Costs" - label_cost_type_plural: "Cost types" - label_cost_type_specific: "Cost type #%{id}: %{name}" #%{id}: %{name}" - label_costs_per_page: "Costs per page" - label_currency: "Currency" - label_currency_format: "Format of currency" - label_current_default_rate: "Current default rate" + label_cost_filter_add: "Legg til filter for kostnadspost" + label_costlog: "Loggførte enhetskostnader" + label_cost_plural: "Kostnader" + label_cost_type_plural: "Kostnadstyper" + label_cost_type_specific: "Kostnadstype #%{id}: %{name}" #%{id}: %{name}" + label_costs_per_page: "Kostnader per side" + label_currency: "Valuta" + label_currency_format: "Formatet på valuta" + label_current_default_rate: "Nåværende standardsats" label_date_on: "på" - label_deleted_cost_types: "Deleted cost types" - label_locked_cost_types: "Locked cost types" - label_display_cost_entries: "Display unit costs" - label_display_time_entries: "Display reported hours" + label_deleted_cost_types: "Slettede kostnadstyper" + label_locked_cost_types: "Låste kostnadstyper" + label_display_cost_entries: "Vis enhetskostnader" + label_display_time_entries: "Vis rapporterte timer" label_display_types: "Display types" label_edit: "Rediger" label_generic_user: "Generic user" diff --git a/modules/costs/config/locales/crowdin/zh-TW.yml b/modules/costs/config/locales/crowdin/zh-TW.yml index 2cfc81c15cd4..be5e4cdc7985 100644 --- a/modules/costs/config/locales/crowdin/zh-TW.yml +++ b/modules/costs/config/locales/crowdin/zh-TW.yml @@ -28,39 +28,39 @@ zh-TW: spent: "花費" spent_on: "日期" cost_type: - unit: "Unit name" - unit_plural: "Pluralized unit name" + unit: "單位名稱" + unit_plural: "複數單位名稱" work_package: - costs_by_type: "Spent units" - labor_costs: "Labor costs" - material_costs: "Unit costs" - overall_costs: "Overall costs" - spent_costs: "Spent costs" - spent_units: "Spent units" + costs_by_type: "支出單位" + labor_costs: "工資" + material_costs: "單位花費" + overall_costs: "總計" + spent_costs: "支出成本" + spent_units: "支出單位" rate: - rate: "Rate" + rate: "費率" user: - default_rates: "Default rates" + default_rates: "預設費率" models: cost_type: - other: "Cost types" - rate: "Rate" + other: "費用類別" + rate: "費率" errors: models: work_package: - is_not_a_valid_target_for_cost_entries: "Work package #%{id} is not a valid target for reassigning the cost entries." - nullify_is_not_valid_for_cost_entries: "Cost entries can not be assigned to a project." + is_not_a_valid_target_for_cost_entries: "工作項目 #%{id} 不是重新分配支出的有效目標" + nullify_is_not_valid_for_cost_entries: "支出項目無法分配至專案" attributes: comment: "評論" cost_type: "費用類別" - costs: "Costs" - current_rate: "Current rate" + costs: "費用" + current_rate: "目前費率" hours: "小時" units: "單位" - valid_from: "Valid from" - fixed_date: "Fixed date" - button_add_rate: "Add rate" - button_log_costs: "Log unit costs" + valid_from: "有效期從" + fixed_date: "固定日期" + button_add_rate: "新增費率" + button_log_costs: "紀錄支出單位" caption_booked_on_project: "Booked on project" caption_default: "預設" caption_default_rate_history_for: "Default rate history for %{user}" @@ -77,8 +77,8 @@ zh-TW: label_between: "介於" label_cost_filter_add: "Add cost entry filter" label_costlog: "Logged unit costs" - label_cost_plural: "Costs" - label_cost_type_plural: "Cost types" + label_cost_plural: "費用" + label_cost_type_plural: "費用類別" label_cost_type_specific: "Cost type #%{id}: %{name}" #%{id}: %{name}" label_costs_per_page: "Costs per page" label_currency: "貨幣" @@ -100,17 +100,17 @@ zh-TW: label_work_package_filter_add: "新增工作項目篩選器" label_kind: "類型" label_less_or_equal: "<=" - label_log_costs: "Log unit costs" + label_log_costs: "紀錄支出單位" label_no: "否" label_option_plural: "選項" - label_overall_costs: "Overall costs" - label_rate: "Rate" + label_overall_costs: "總計" + label_rate: "費率" label_rate_plural: "Rates" label_status_finished: "已完成" label_units: "Cost units" label_user: "使用者" label_until: "until" - label_valid_from: "Valid from" + label_valid_from: "有效期從" label_yes: "是" notice_something_wrong: "Something went wrong. Please try again." notice_successful_restore: "Successful restore." diff --git a/modules/dashboards/config/locales/crowdin/es.yml b/modules/dashboards/config/locales/crowdin/es.yml index 369c63a12cfb..d91f2c5123b0 100644 --- a/modules/dashboards/config/locales/crowdin/es.yml +++ b/modules/dashboards/config/locales/crowdin/es.yml @@ -1,4 +1,4 @@ es: dashboards: - label: 'Paneles' - project_module_dashboards: 'Paneles' + label: 'Paneles de control' + project_module_dashboards: 'Paneles de control' diff --git a/modules/dashboards/config/locales/crowdin/js-es.yml b/modules/dashboards/config/locales/crowdin/js-es.yml index 56bec7f95c93..6b14cbe606cd 100644 --- a/modules/dashboards/config/locales/crowdin/js-es.yml +++ b/modules/dashboards/config/locales/crowdin/js-es.yml @@ -1,4 +1,4 @@ es: js: dashboards: - label: 'Paneles' + label: 'Panel de control' diff --git a/modules/github_integration/config/locales/crowdin/js-cs.yml b/modules/github_integration/config/locales/crowdin/js-cs.yml index 2563a8df7afa..e9aae1de867d 100644 --- a/modules/github_integration/config/locales/crowdin/js-cs.yml +++ b/modules/github_integration/config/locales/crowdin/js-cs.yml @@ -28,13 +28,13 @@ cs: title: "Pull Requesty" copy_menu: label: Git snippets - description: Kopírovat snippety gitu do schránky + description: Kopírovat úryvky gitu do schránky git_actions: branch_name: Název pobočky commit_message: Commit message cmd: Vytvořit větev s prázdným commitem title: Rychlé snippety pro Git - copy_success: '✅ Zkopírováno!' + copy_success: '✅ zkopírováno!' copy_error: '❌ Kopírování selhalo!' tab_prs: empty: 'There are no pull requests linked yet. Link an existing PR by using the code OP#%{wp_id} in the PR description or create a new PR.' diff --git a/modules/github_integration/config/locales/crowdin/js-es.yml b/modules/github_integration/config/locales/crowdin/js-es.yml index fa9b72b89440..6593e5be59ec 100644 --- a/modules/github_integration/config/locales/crowdin/js-es.yml +++ b/modules/github_integration/config/locales/crowdin/js-es.yml @@ -38,4 +38,4 @@ es: copy_error: '❌ Error al copiar' tab_prs: empty: 'Aún no hay solicitudes de incorporación de cambios vinculadas. Vincule una solicitud de incorporación de cambios existente con el código OP#%{wp_id} en la descripción, o bien cree una nueva solicitud de incorporación de cambios.' - github_actions: Acciones + github_actions: Comportamiento diff --git a/modules/github_integration/config/locales/crowdin/js-uk.yml b/modules/github_integration/config/locales/crowdin/js-uk.yml index 6c40a479d890..b3e3e7155e47 100644 --- a/modules/github_integration/config/locales/crowdin/js-uk.yml +++ b/modules/github_integration/config/locales/crowdin/js-uk.yml @@ -37,5 +37,5 @@ uk: copy_success: '✅ Скопійовано!' copy_error: '❌ Не скопійовано!' tab_prs: - empty: 'Немає прив’язаних запитів на включення. Прив''яжіть наявний PR за допомогою коду OP#%{wp_id} в описі PR або створіть новий PR.' + empty: 'Немає прив’язаних запитів на включення. Прив’яжіть наявний PR за допомогою коду OP#%{wp_id} в описі PR або створіть новий PR.' github_actions: Дії diff --git a/modules/grids/config/locales/crowdin/js-ar.yml b/modules/grids/config/locales/crowdin/js-ar.yml index c9b9679b45f3..d7b66a474fd1 100644 --- a/modules/grids/config/locales/crowdin/js-ar.yml +++ b/modules/grids/config/locales/crowdin/js-ar.yml @@ -5,8 +5,8 @@ ar: remove: 'إزالة الأداة' configure: 'Configure widget' upsale: - text: "Some widgets, like the work package graph widget, are only available in the Enterprise edition." - link: 'Enterprise edition.' + text: "بعض الأدوات، مثل أداة الرسم البياني لحزمة العمل، متوفرة فقط في النسخة المدفوعة." + link: 'طبعة المؤسسة.' widgets: custom_text: title: 'نص مخصص' diff --git a/modules/grids/config/locales/crowdin/js-de.yml b/modules/grids/config/locales/crowdin/js-de.yml index 93e317b3ab8e..88f4cfd954e1 100644 --- a/modules/grids/config/locales/crowdin/js-de.yml +++ b/modules/grids/config/locales/crowdin/js-de.yml @@ -20,7 +20,7 @@ de: add: 'Mitglied' too_many: 'Zeigt %{count} von %{total} Mitgliedern an.' news: - title: 'Nachrichten' + title: 'Neuigkeiten' at: 'um' no_results: 'Nichts Neues zu berichten.' project_description: diff --git a/modules/grids/config/locales/crowdin/js-es.yml b/modules/grids/config/locales/crowdin/js-es.yml index dd3ac7fe93dc..872cdd3dbb04 100644 --- a/modules/grids/config/locales/crowdin/js-es.yml +++ b/modules/grids/config/locales/crowdin/js-es.yml @@ -5,8 +5,8 @@ es: remove: 'Quitar widget' configure: 'Configurar widget' upsale: - text: "Algunos widgets, como el widget de gráfico de paquetes de trabajo, solo están disponibles en la edición Enterprise." - link: 'Edición Enterprise.' + text: "Algunos widgets, como el widget de gráfico de paquetes de trabajo, solo están disponibles con Enterprise." + link: 'Enterprise.' widgets: custom_text: title: 'Texto personalizado' diff --git a/modules/grids/config/locales/crowdin/js-id.yml b/modules/grids/config/locales/crowdin/js-id.yml index 601003db7420..686b5c3c9ba0 100644 --- a/modules/grids/config/locales/crowdin/js-id.yml +++ b/modules/grids/config/locales/crowdin/js-id.yml @@ -31,13 +31,13 @@ id: no_results: 'No custom fields have been defined for projects.' project_status: title: 'Project status' - not_started: 'Not started' - on_track: 'On track' - off_track: 'Off track' - at_risk: 'At risk' + not_started: 'Belum mulai' + on_track: 'Di jalur' + off_track: 'Keluar dari jalur' + at_risk: 'Berisiko' not_set: 'Not set' finished: 'Selesai' - discontinued: 'Discontinued' + discontinued: 'Dihentikan' subprojects: title: 'Sub Project' no_results: 'No subprojects.' diff --git a/modules/grids/config/locales/crowdin/js-ja.yml b/modules/grids/config/locales/crowdin/js-ja.yml index 0c3ac3d31562..c7199ef21b34 100644 --- a/modules/grids/config/locales/crowdin/js-ja.yml +++ b/modules/grids/config/locales/crowdin/js-ja.yml @@ -31,13 +31,13 @@ ja: no_results: 'プロジェクトにカスタムフィールドが定義されていません。' project_status: title: 'プロジェクトの進捗状況' - not_started: 'Not started' + not_started: '未着手' on_track: '順調' off_track: '脱線' at_risk: 'リスクあり' not_set: '未設定' finished: '完了しました' - discontinued: 'Discontinued' + discontinued: '中止' subprojects: title: '子プロジェクト' no_results: '子プロジェクトはありません。' diff --git a/modules/grids/config/locales/crowdin/js-lt.yml b/modules/grids/config/locales/crowdin/js-lt.yml index 2925a8a8ab5e..ef1ccf6060f0 100644 --- a/modules/grids/config/locales/crowdin/js-lt.yml +++ b/modules/grids/config/locales/crowdin/js-lt.yml @@ -5,8 +5,8 @@ lt: remove: 'Išimti valdiklį' configure: 'Valdiklio nustatymai' upsale: - text: "Some widgets, like the work package graph widget, are only available in the Enterprise edition." - link: 'Enterprise edition.' + text: "Kai kurie valdikliai, pavyzdžiui darbo paketų grafo valdiklis, galimi tik Enterprise versijoje." + link: 'Enterprise versija.' widgets: custom_text: title: 'Pritaikytas tekstas' diff --git a/modules/ldap_groups/config/locales/crowdin/id.yml b/modules/ldap_groups/config/locales/crowdin/id.yml index 3e4141577634..d6f817e0c36b 100644 --- a/modules/ldap_groups/config/locales/crowdin/id.yml +++ b/modules/ldap_groups/config/locales/crowdin/id.yml @@ -51,21 +51,17 @@ id: info: "Catatan: Grup OpenProject itu sendiri dan anggota yang ditambahkan di luar sinkronisasi LDAP ini tidak akan dihapus." verification: "Masukkan nama grup %{name} untuk memverifikasi penghapusan." help_text_html: | - This module allows you to set up a synchronization between LDAP and OpenProject groups. - It depends on LDAP groups need to use the groupOfNames / memberOf attribute set to be working with OpenProject. -
- Groups are synchronized hourly through a cron job. - Please see our documentation on this topic. - no_results: 'No synchronized groups found.' - no_members: 'This group has no synchronized members yet.' - plural: 'Synchronized LDAP groups' + Modul ini memungkinkan Anda mengatur sinkronisasi antara grup LDAP dan OpenProject. Itu tergantung pada grup LDAP yang perlu menggunakan atribut groupOfNames / memberOf yang disetel untuk bekerja dengan OpenProject.
Grup disinkronkan setiap jam melalui tugas cron. Lihat dokumentasi kami tentang topik ini. + no_results: 'Tidak ditemukan grup tersinkronisasi.' + no_members: 'Grup ini belum memiliki anggota yang disinkronkan.' + plural: 'Grup LDAP tersinkronisasi' singular: 'Grup LDAP tersinkronisasi' form: - auth_source_text: 'Select which LDAP connection should be used.' + auth_source_text: 'Pilih koneksi LDAP mana yang harus digunakan.' sync_users_text: > - If you enable this option, found users will also be automatically created in OpenProject. Without it, only existing accounts in OpenProject will be added to groups. - dn_text: 'Enter the full DN of the group in LDAP' - group_text: 'Select an existing OpenProject group that members of the LDAP group shall be synchronized with' + Jika Anda mengaktifkan opsi ini, pengguna yang ditemukan juga akan dibuat secara otomatis di OpenProject. Tanpanya, hanya akun yang ada di OpenProject yang akan ditambahkan ke grup. + dn_text: 'Masukkan DN lengkap grup di LDAP' + group_text: 'Pilih grup OpenProject yang ada yang akan disinkronkan dengan anggota grup LDAP' upsale: - description: 'Take advantage of synchronised LDAP groups to manage users, change their permissions and facilitate user management across groups.' + description: 'Manfaatkan grup LDAP tersinkronisasi untuk mengelola pengguna, mengubah izin mereka, dan memfasilitasi pengelolaan pengguna di seluruh grup.' diff --git a/modules/meeting/app/views/meeting_contents/_form.html.erb b/modules/meeting/app/views/meeting_contents/_form.html.erb index 40ce71936fc2..be0b55304eaf 100644 --- a/modules/meeting/app/views/meeting_contents/_form.html.erb +++ b/modules/meeting/app/views/meeting_contents/_form.html.erb @@ -48,6 +48,8 @@ See COPYRIGHT and LICENSE files for more details. <% path = send("preview_#{content_type}_path", content.meeting) %>

<%= f.text_field :journal_notes, label: :comments %>

-

<%= styled_button_tag t(:button_save), class: '-highlight -with-icon icon-checkmark button--save-agenda' %> + <%= styled_button_tag t(:button_save), + class: '-highlight -with-icon icon-checkmark button--save-agenda', + data: { disable_with: I18n.t(:label_loading) } %> <%= link_to t(:button_cancel), "#", data: { 'content-type': content_type }, class: 'button -with-icon icon-cancel button--cancel-agenda' %> <% end %> diff --git a/modules/meeting/config/locales/crowdin/cs.yml b/modules/meeting/config/locales/crowdin/cs.yml index 105062a41b23..fab5deda6fe4 100644 --- a/modules/meeting/config/locales/crowdin/cs.yml +++ b/modules/meeting/config/locales/crowdin/cs.yml @@ -85,7 +85,7 @@ cs: text_duration_in_hours: "Doba trvání v hodinách" text_in_hours: "v hodinách" text_meeting_agenda_for_meeting: 'Agenda schůzky "%{meeting}"' - text_meeting_closing_are_you_sure: "Are you sure you want to close the agenda?" + text_meeting_closing_are_you_sure: "Opravdu chcete tuto schůzku zavřít?" text_meeting_agenda_open_are_you_sure: "Toto přepíše všechny změny v zápisech! Chcete pokračovat?" text_meeting_minutes_for_meeting: 'zápis pro schůzku "%{meeting}"' text_review_meeting_agenda: "%{author} dal %{link} na revizi." diff --git a/modules/meeting/config/locales/crowdin/id.yml b/modules/meeting/config/locales/crowdin/id.yml index fa47aa158186..661265d68330 100644 --- a/modules/meeting/config/locales/crowdin/id.yml +++ b/modules/meeting/config/locales/crowdin/id.yml @@ -85,7 +85,7 @@ id: text_duration_in_hours: "Durasi dalam jam" text_in_hours: "dalam jam" text_meeting_agenda_for_meeting: 'agenda untuk rapat "%{meeting}"' - text_meeting_closing_are_you_sure: "Are you sure you want to close the agenda?" + text_meeting_closing_are_you_sure: "Yakin ingin menutup agenda?" text_meeting_agenda_open_are_you_sure: "Ini akan mengganti semua perubahan dalam beberapa menit! Apakah anda ingin lanjut?" text_meeting_minutes_for_meeting: 'laporan untuk rapat "%{meeting}"' text_review_meeting_agenda: "%{author} telah memberikan %{link} untuk diulas." diff --git a/modules/meeting/config/locales/crowdin/ka.yml b/modules/meeting/config/locales/crowdin/ka.yml index d9d418ae2327..01fc575161bd 100644 --- a/modules/meeting/config/locales/crowdin/ka.yml +++ b/modules/meeting/config/locales/crowdin/ka.yml @@ -63,7 +63,7 @@ ka: label_meeting_diff: "Diff" label_notify: "Send for review" label_icalendar: "Send iCalendar" - label_version: "Version" + label_version: "ვერსია" label_time_zone: "Time zone" label_start_date: "Start date" meeting: diff --git a/modules/meeting/config/locales/crowdin/nl.yml b/modules/meeting/config/locales/crowdin/nl.yml index 351c235b3f9e..1e79d2d523f7 100644 --- a/modules/meeting/config/locales/crowdin/nl.yml +++ b/modules/meeting/config/locales/crowdin/nl.yml @@ -85,7 +85,7 @@ nl: text_duration_in_hours: "Duur in uren" text_in_hours: "in uren" text_meeting_agenda_for_meeting: 'agenda voor de vergadering "%{meeting}"' - text_meeting_closing_are_you_sure: "Are you sure you want to close the agenda?" + text_meeting_closing_are_you_sure: "Weet u zeker dat u de agenda wilt afsluiten?" text_meeting_agenda_open_are_you_sure: "Dit overschrijft alle wijzigingen in de aantekeningen! Wilt u doorgaan?" text_meeting_minutes_for_meeting: 'minuten voor de vergadering "%{meeting}"' text_review_meeting_agenda: "%{author} heeft de %{link} geselecteerd voor herziening." diff --git a/modules/openid_connect/config/locales/crowdin/id.yml b/modules/openid_connect/config/locales/crowdin/id.yml index 15729b50ba7e..79e3998d8651 100644 --- a/modules/openid_connect/config/locales/crowdin/id.yml +++ b/modules/openid_connect/config/locales/crowdin/id.yml @@ -1,14 +1,14 @@ id: logout_warning: > - You have been logged out. The contents of any form you submit may be lost. Please [log in]. + Anda telah keluar. Isi formulir apa pun yang Anda kirim mungkin akan hilang. Silahkan [log in]. activemodel: attributes: openid_connect/provider: name: Nama - display_name: Display name + display_name: Nama tampilan identifier: Pengenal - secret: Secret - scope: Scope + secret: Rahasia + scope: Cakupan limit_self_registration: Limit self registration openid_connect: menu_title: penyedia OpenID diff --git a/modules/openid_connect/config/locales/crowdin/lt.yml b/modules/openid_connect/config/locales/crowdin/lt.yml index 0d8333b6be7d..73f5e353e67f 100644 --- a/modules/openid_connect/config/locales/crowdin/lt.yml +++ b/modules/openid_connect/config/locales/crowdin/lt.yml @@ -9,7 +9,7 @@ lt: identifier: Identifikatorius secret: Paslaptis scope: Apimtis - limit_self_registration: Limit self registration + limit_self_registration: Riboti savarankišką registraciją openid_connect: menu_title: OpenID tiekėjai providers: @@ -20,4 +20,4 @@ lt: singular: OpenID tiekėjas setting_instructions: limit_self_registration: > - If enabled users can only register using this provider if the self registration setting allows for it. + Įjungus, naudotojai gali registruotis naudodami šį tiekėją, tik jei savarankiškos registracijos nustatymas tai leidžia. diff --git a/modules/reporting/app/controllers/cost_reports_controller.rb b/modules/reporting/app/controllers/cost_reports_controller.rb index d6a9e247770d..a1c0d490cca5 100644 --- a/modules/reporting/app/controllers/cost_reports_controller.rb +++ b/modules/reporting/app/controllers/cost_reports_controller.rb @@ -82,6 +82,15 @@ def index format.html do session[report_engine.name.underscore.to_sym].try(:delete, :name) end + + format.xls do + job_id = ::CostQuery::ScheduleExportService + .new(user: current_user) + .call(filter_params:, project: @project, cost_types: @cost_types) + .result + + redirect_to job_status_path(job_id) + end end end end diff --git a/modules/reporting/app/models/cost_query/export.rb b/modules/reporting/app/models/cost_query/export.rb new file mode 100644 index 000000000000..029a248569dc --- /dev/null +++ b/modules/reporting/app/models/cost_query/export.rb @@ -0,0 +1,10 @@ +class CostQuery::Export < Export + acts_as_attachable view_permission: :export_work_packages, + add_permission: :export_work_packages, + delete_permission: :export_work_packages, + only_user_allowed: true + + def ready? + attachments.any? + end +end diff --git a/modules/reporting/app/services/cost_query/schedule_export_service.rb b/modules/reporting/app/services/cost_query/schedule_export_service.rb new file mode 100644 index 000000000000..059732e89ad5 --- /dev/null +++ b/modules/reporting/app/services/cost_query/schedule_export_service.rb @@ -0,0 +1,53 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) 2012-2023 the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +class CostQuery::ScheduleExportService + attr_accessor :user + + def initialize(user:) + self.user = user + end + + def call(filter_params:, project:, cost_types:) + export_storage = ::CostQuery::Export.create + job = schedule_export(export_storage, filter_params, project, cost_types) + + ServiceResult.success result: job.job_id + end + + private + + def schedule_export(export_storage, filter_params, project, cost_types) + ::CostQuery::ExportJob.perform_later(export: export_storage, + user:, + mime_type: :xls, + query: filter_params, + project:, + cost_types:) + end +end diff --git a/modules/reporting/app/views/cost_reports/index.html.erb b/modules/reporting/app/views/cost_reports/index.html.erb index de858e902f89..4f9dc1a15c9f 100644 --- a/modules/reporting/app/views/cost_reports/index.html.erb +++ b/modules/reporting/app/views/cost_reports/index.html.erb @@ -43,6 +43,16 @@ See COPYRIGHT and LICENSE files for more details.

    + <% if User.current.allowed_to? :export_work_packages, @project, global: @project.nil? %> +
  • + <%= link_to(t(:export_to_excel), + { controller: "cost_reports" , + action: :index, + format: 'xls', + project_id: @project }, + class: "button icon-export-xls-descr") %> +
  • + <% end %> <%= call_hook(:view_cost_report_toolbar) %>
diff --git a/modules/reporting/app/workers/cost_query/export_job.rb b/modules/reporting/app/workers/cost_query/export_job.rb new file mode 100644 index 000000000000..90472f7add9c --- /dev/null +++ b/modules/reporting/app/workers/cost_query/export_job.rb @@ -0,0 +1,61 @@ +require 'active_storage/filename' + +class CostQuery::ExportJob < Exports::ExportJob + self.model = ::CostQuery + + def title + I18n.t('export.cost_reports.title') + end + + def project + options[:project] + end + + def cost_types + options[:cost_types] + end + + private + + def prepare! + self.query = build_query(query) + end + + def export! + # Build an xls file from a cost report. + # We only support extracting a simple xls table, so grouping is ignored. + handle_export_result(export, xls_report_result) + end + + def xls_report_result + params = { query:, project:, cost_types: } + content = ::OpenProject::Reporting::CostEntryXlsTable.generate(params).xls + time = Time.zone.now.strftime('%d-%m-%Y-T-%H-%M-%S') + export_title = "cost-report-#{time}.xls" + + ::Exports::Result.new(format: :xls, + title: export_title, + mime_type: 'application/vnd.ms-excel', + content:) + end + + # rubocop:disable Metrics/AbcSize + def build_query(filters, groups = {}) + query = CostQuery.new(project:) + query.tap do |q| + filters[:operators].each do |filter, operator| + unless filters[:values][filter] == ['<>'] + values = Array(filters[:values][filter]).map { |v| v == '<>' ? nil : v } + q.filter(filter.to_sym, + operator:, + values:) + end + end + end + groups[:columns].try(:reverse_each) { |c| query.column(c) } + groups[:rows].try(:reverse_each) { |r| query.row(r) } + query + end + + # rubocop:enable Metrics/AbcSize +end diff --git a/modules/reporting/config/locales/crowdin/af.yml b/modules/reporting/config/locales/crowdin/af.yml index 715b272d8531..8e89a6cd5541 100644 --- a/modules/reporting/config/locales/crowdin/af.yml +++ b/modules/reporting/config/locales/crowdin/af.yml @@ -81,6 +81,9 @@ af: units: "Units" validation_failure_date: "is not a valid date" validation_failure_integer: "is not a valid integer" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Selected columns" diff --git a/modules/reporting/config/locales/crowdin/ar.yml b/modules/reporting/config/locales/crowdin/ar.yml index c77878da5eab..9638245c29a6 100644 --- a/modules/reporting/config/locales/crowdin/ar.yml +++ b/modules/reporting/config/locales/crowdin/ar.yml @@ -81,6 +81,9 @@ ar: units: "الوحدات" validation_failure_date: "ليس تاريخًا صالحًا" validation_failure_integer: "ليس عددًا صحيحًا صالحًا" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "الاعمدة المحددة" diff --git a/modules/reporting/config/locales/crowdin/az.yml b/modules/reporting/config/locales/crowdin/az.yml index d9ecadcdc406..33f90d77555c 100644 --- a/modules/reporting/config/locales/crowdin/az.yml +++ b/modules/reporting/config/locales/crowdin/az.yml @@ -81,6 +81,9 @@ az: units: "Units" validation_failure_date: "is not a valid date" validation_failure_integer: "is not a valid integer" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Selected columns" diff --git a/modules/reporting/config/locales/crowdin/be.yml b/modules/reporting/config/locales/crowdin/be.yml index 9b171d607858..1f14beadde5e 100644 --- a/modules/reporting/config/locales/crowdin/be.yml +++ b/modules/reporting/config/locales/crowdin/be.yml @@ -81,6 +81,9 @@ be: units: "Units" validation_failure_date: "is not a valid date" validation_failure_integer: "is not a valid integer" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Selected columns" diff --git a/modules/reporting/config/locales/crowdin/bg.yml b/modules/reporting/config/locales/crowdin/bg.yml index f47e120affdf..4d75740b68a6 100644 --- a/modules/reporting/config/locales/crowdin/bg.yml +++ b/modules/reporting/config/locales/crowdin/bg.yml @@ -81,6 +81,9 @@ bg: units: "Units" validation_failure_date: "is not a valid date" validation_failure_integer: "is not a valid integer" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Selected columns" diff --git a/modules/reporting/config/locales/crowdin/ca.yml b/modules/reporting/config/locales/crowdin/ca.yml index ae858057b727..8969a87b5c0d 100644 --- a/modules/reporting/config/locales/crowdin/ca.yml +++ b/modules/reporting/config/locales/crowdin/ca.yml @@ -81,6 +81,9 @@ ca: units: "Unitats" validation_failure_date: "no és una data vàlida" validation_failure_integer: "no és un enter vàlid" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Columnes seleccionades" diff --git a/modules/reporting/config/locales/crowdin/ckb-IR.yml b/modules/reporting/config/locales/crowdin/ckb-IR.yml index a5f0a19bb5fe..1b0a63e1a716 100644 --- a/modules/reporting/config/locales/crowdin/ckb-IR.yml +++ b/modules/reporting/config/locales/crowdin/ckb-IR.yml @@ -81,6 +81,9 @@ ckb-IR: units: "Units" validation_failure_date: "is not a valid date" validation_failure_integer: "is not a valid integer" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Selected columns" diff --git a/modules/reporting/config/locales/crowdin/cs.yml b/modules/reporting/config/locales/crowdin/cs.yml index 215c57f18d94..f70406474779 100644 --- a/modules/reporting/config/locales/crowdin/cs.yml +++ b/modules/reporting/config/locales/crowdin/cs.yml @@ -81,6 +81,9 @@ cs: units: "Jednotky" validation_failure_date: "není platné datum" validation_failure_integer: "není platné číslo" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Vybrané sloupce" diff --git a/modules/reporting/config/locales/crowdin/da.yml b/modules/reporting/config/locales/crowdin/da.yml index d1bae85b258a..be2773f643fa 100644 --- a/modules/reporting/config/locales/crowdin/da.yml +++ b/modules/reporting/config/locales/crowdin/da.yml @@ -81,6 +81,9 @@ da: units: "Enheder" validation_failure_date: "er en ugyldig dato" validation_failure_integer: "er et ugyldigt heltal" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Selected columns" diff --git a/modules/reporting/config/locales/crowdin/de.yml b/modules/reporting/config/locales/crowdin/de.yml index bf10e5cda6e4..1cbcfec79b3e 100644 --- a/modules/reporting/config/locales/crowdin/de.yml +++ b/modules/reporting/config/locales/crowdin/de.yml @@ -81,6 +81,9 @@ de: units: "Einheiten" validation_failure_date: "ist kein gültiges Datum" validation_failure_integer: "ist keine ganze Zahl" + export: + cost_reports: + title: "Kostenbericht als XLS-Export" reporting: group_by: selected_columns: "Ausgewählte Spalten" diff --git a/modules/reporting/config/locales/crowdin/el.yml b/modules/reporting/config/locales/crowdin/el.yml index dc3836e12ca7..cbc4a06641c1 100644 --- a/modules/reporting/config/locales/crowdin/el.yml +++ b/modules/reporting/config/locales/crowdin/el.yml @@ -81,6 +81,9 @@ el: units: "Μονάδες" validation_failure_date: "δεν είναι έγκυρη ημερομηνία" validation_failure_integer: "δεν είναι έγκυρος ακέραιος αριθμός" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Επιλεγμένες στήλες" diff --git a/modules/reporting/config/locales/crowdin/eo.yml b/modules/reporting/config/locales/crowdin/eo.yml index f8fa5d1cddcc..f59fb6135782 100644 --- a/modules/reporting/config/locales/crowdin/eo.yml +++ b/modules/reporting/config/locales/crowdin/eo.yml @@ -81,6 +81,9 @@ eo: units: "Units" validation_failure_date: "is not a valid date" validation_failure_integer: "is not a valid integer" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Selected columns" diff --git a/modules/reporting/config/locales/crowdin/es.yml b/modules/reporting/config/locales/crowdin/es.yml index 8c76c61eea53..2925262edf25 100644 --- a/modules/reporting/config/locales/crowdin/es.yml +++ b/modules/reporting/config/locales/crowdin/es.yml @@ -81,6 +81,9 @@ es: units: "Unidades" validation_failure_date: "no es una fecha válida" validation_failure_integer: "no es un entero válido" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Columnas seleccionadas" diff --git a/modules/reporting/config/locales/crowdin/et.yml b/modules/reporting/config/locales/crowdin/et.yml index 79680059a669..d17531a6a17b 100644 --- a/modules/reporting/config/locales/crowdin/et.yml +++ b/modules/reporting/config/locales/crowdin/et.yml @@ -81,6 +81,9 @@ et: units: "Ühikud" validation_failure_date: "pole korrektne kuupäev" validation_failure_integer: "pole täisarv" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Selected columns" diff --git a/modules/reporting/config/locales/crowdin/eu.yml b/modules/reporting/config/locales/crowdin/eu.yml index fa3f0eb91b66..7038ebcd9146 100644 --- a/modules/reporting/config/locales/crowdin/eu.yml +++ b/modules/reporting/config/locales/crowdin/eu.yml @@ -81,6 +81,9 @@ eu: units: "Units" validation_failure_date: "is not a valid date" validation_failure_integer: "is not a valid integer" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Selected columns" diff --git a/modules/reporting/config/locales/crowdin/fa.yml b/modules/reporting/config/locales/crowdin/fa.yml index e0aa24960a6d..11f7433d806c 100644 --- a/modules/reporting/config/locales/crowdin/fa.yml +++ b/modules/reporting/config/locales/crowdin/fa.yml @@ -81,6 +81,9 @@ fa: units: "واحدها" validation_failure_date: "is not a valid date" validation_failure_integer: "is not a valid integer" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Selected columns" diff --git a/modules/reporting/config/locales/crowdin/fi.yml b/modules/reporting/config/locales/crowdin/fi.yml index 3c65c0f8cd36..92b447acfaba 100644 --- a/modules/reporting/config/locales/crowdin/fi.yml +++ b/modules/reporting/config/locales/crowdin/fi.yml @@ -81,6 +81,9 @@ fi: units: "Yksiköt" validation_failure_date: "ei ole kelvollinen päivämäärä" validation_failure_integer: "ei ole kelvollinen kokonaisluku" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Valitut sarakkeet" diff --git a/modules/reporting/config/locales/crowdin/fil.yml b/modules/reporting/config/locales/crowdin/fil.yml index 8ce56c2c90d0..c1a41d6149a4 100644 --- a/modules/reporting/config/locales/crowdin/fil.yml +++ b/modules/reporting/config/locales/crowdin/fil.yml @@ -81,6 +81,9 @@ fil: units: "Units" validation_failure_date: "is not a valid date" validation_failure_integer: "is not a valid integer" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Selected columns" diff --git a/modules/reporting/config/locales/crowdin/fr.yml b/modules/reporting/config/locales/crowdin/fr.yml index 94120ba3e353..29dcd8556337 100644 --- a/modules/reporting/config/locales/crowdin/fr.yml +++ b/modules/reporting/config/locales/crowdin/fr.yml @@ -81,6 +81,9 @@ fr: units: "Unités" validation_failure_date: "n'est pas une date valide" validation_failure_integer: "n'est pas un nombre entier valide" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Colonnes sélectionnées" diff --git a/modules/reporting/config/locales/crowdin/he.yml b/modules/reporting/config/locales/crowdin/he.yml index 3ef5ff0b48fe..734983b3e8fb 100644 --- a/modules/reporting/config/locales/crowdin/he.yml +++ b/modules/reporting/config/locales/crowdin/he.yml @@ -81,6 +81,9 @@ he: units: "יחידות" validation_failure_date: "אינו תאריך בר תוקף" validation_failure_integer: "אינו מספר שלם חוקי" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Selected columns" diff --git a/modules/reporting/config/locales/crowdin/hi.yml b/modules/reporting/config/locales/crowdin/hi.yml index 3c8d0858cc2f..05f5eb836873 100644 --- a/modules/reporting/config/locales/crowdin/hi.yml +++ b/modules/reporting/config/locales/crowdin/hi.yml @@ -81,6 +81,9 @@ hi: units: "Units" validation_failure_date: "is not a valid date" validation_failure_integer: "is not a valid integer" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Selected columns" diff --git a/modules/reporting/config/locales/crowdin/hr.yml b/modules/reporting/config/locales/crowdin/hr.yml index 379aba0806e5..089b514ca94f 100644 --- a/modules/reporting/config/locales/crowdin/hr.yml +++ b/modules/reporting/config/locales/crowdin/hr.yml @@ -81,6 +81,9 @@ hr: units: "Jedinice" validation_failure_date: "nije valjan datum" validation_failure_integer: "nije valjan cijeli broj" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Selected columns" diff --git a/modules/reporting/config/locales/crowdin/hu.yml b/modules/reporting/config/locales/crowdin/hu.yml index c81fba4750ba..efe06a79d11a 100644 --- a/modules/reporting/config/locales/crowdin/hu.yml +++ b/modules/reporting/config/locales/crowdin/hu.yml @@ -81,6 +81,9 @@ hu: units: "Egységek" validation_failure_date: "nem érvényes dátum" validation_failure_integer: "nem érvényes egész szám" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "A kijelölt oszlopok" diff --git a/modules/reporting/config/locales/crowdin/id.yml b/modules/reporting/config/locales/crowdin/id.yml index f09816c947b7..97cbe8251d54 100644 --- a/modules/reporting/config/locales/crowdin/id.yml +++ b/modules/reporting/config/locales/crowdin/id.yml @@ -81,6 +81,9 @@ id: units: "Unit" validation_failure_date: "validasi tanggal gagal" validation_failure_integer: "validasi bilangan bulat gagal" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Kolom terpilih" diff --git a/modules/reporting/config/locales/crowdin/it.yml b/modules/reporting/config/locales/crowdin/it.yml index f93921339ccd..99543dd4b367 100644 --- a/modules/reporting/config/locales/crowdin/it.yml +++ b/modules/reporting/config/locales/crowdin/it.yml @@ -81,6 +81,9 @@ it: units: "Unità di misura" validation_failure_date: "non è una data valida" validation_failure_integer: "non è un numero intero valido" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Colonne selezionate" diff --git a/modules/reporting/config/locales/crowdin/ja.yml b/modules/reporting/config/locales/crowdin/ja.yml index aa6512950916..fe5f4dc64b59 100644 --- a/modules/reporting/config/locales/crowdin/ja.yml +++ b/modules/reporting/config/locales/crowdin/ja.yml @@ -81,6 +81,9 @@ ja: units: "単位" validation_failure_date: "は有効な日付ではありません。" validation_failure_integer: "は有効な整数ではありません。" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "選択された列" diff --git a/modules/reporting/config/locales/crowdin/ka.yml b/modules/reporting/config/locales/crowdin/ka.yml index fa02b2e2f757..2979a81d554b 100644 --- a/modules/reporting/config/locales/crowdin/ka.yml +++ b/modules/reporting/config/locales/crowdin/ka.yml @@ -81,6 +81,9 @@ ka: units: "Units" validation_failure_date: "is not a valid date" validation_failure_integer: "is not a valid integer" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Selected columns" diff --git a/modules/reporting/config/locales/crowdin/ko.yml b/modules/reporting/config/locales/crowdin/ko.yml index eabae6ef10a2..7c9dde7708d4 100644 --- a/modules/reporting/config/locales/crowdin/ko.yml +++ b/modules/reporting/config/locales/crowdin/ko.yml @@ -81,6 +81,9 @@ ko: units: "단위" validation_failure_date: "은(는) 유효한 날짜가 아닙니다." validation_failure_integer: "은(는) 유효한 정수가 아닙니다." + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "선택된 열" diff --git a/modules/reporting/config/locales/crowdin/lol.yml b/modules/reporting/config/locales/crowdin/lol.yml index ffe66a0bfb9f..b699ad4a55c3 100644 --- a/modules/reporting/config/locales/crowdin/lol.yml +++ b/modules/reporting/config/locales/crowdin/lol.yml @@ -81,6 +81,9 @@ lol: units: "crwdns547095:0crwdne547095:0" validation_failure_date: "crwdns547097:0crwdne547097:0" validation_failure_integer: "crwdns547099:0crwdne547099:0" + export: + cost_reports: + title: "crwdns859141:0crwdne859141:0" reporting: group_by: selected_columns: "crwdns547101:0crwdne547101:0" diff --git a/modules/reporting/config/locales/crowdin/lt.yml b/modules/reporting/config/locales/crowdin/lt.yml index 77f7616e5cb6..1756cae23ed6 100644 --- a/modules/reporting/config/locales/crowdin/lt.yml +++ b/modules/reporting/config/locales/crowdin/lt.yml @@ -81,6 +81,9 @@ lt: units: "Vienetai" validation_failure_date: "nėra tinkama data" validation_failure_integer: "nėra tinkamas sveikas skaičius" + export: + cost_reports: + title: "Jūsų kainos ataskaitų XLS eksportas" reporting: group_by: selected_columns: "Pasirinkti stulpeliai" diff --git a/modules/reporting/config/locales/crowdin/lv.yml b/modules/reporting/config/locales/crowdin/lv.yml index 26b880686494..bcca57b35b69 100644 --- a/modules/reporting/config/locales/crowdin/lv.yml +++ b/modules/reporting/config/locales/crowdin/lv.yml @@ -81,6 +81,9 @@ lv: units: "Units" validation_failure_date: "is not a valid date" validation_failure_integer: "is not a valid integer" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Selected columns" diff --git a/modules/reporting/config/locales/crowdin/mn.yml b/modules/reporting/config/locales/crowdin/mn.yml index ff837e06611e..28c4b8653f7f 100644 --- a/modules/reporting/config/locales/crowdin/mn.yml +++ b/modules/reporting/config/locales/crowdin/mn.yml @@ -81,6 +81,9 @@ mn: units: "Units" validation_failure_date: "is not a valid date" validation_failure_integer: "is not a valid integer" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Selected columns" diff --git a/modules/reporting/config/locales/crowdin/ne.yml b/modules/reporting/config/locales/crowdin/ne.yml index 321bab0ccb6a..dff5fbbd9521 100644 --- a/modules/reporting/config/locales/crowdin/ne.yml +++ b/modules/reporting/config/locales/crowdin/ne.yml @@ -81,6 +81,9 @@ ne: units: "Units" validation_failure_date: "is not a valid date" validation_failure_integer: "is not a valid integer" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Selected columns" diff --git a/modules/reporting/config/locales/crowdin/nl.yml b/modules/reporting/config/locales/crowdin/nl.yml index 7bc4059b7842..d02f447e1a7e 100644 --- a/modules/reporting/config/locales/crowdin/nl.yml +++ b/modules/reporting/config/locales/crowdin/nl.yml @@ -81,6 +81,9 @@ nl: units: "Eenheden" validation_failure_date: "is geen geldige datum" validation_failure_integer: "is geen geldig geheel getal" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Geselecteerde kolommen" diff --git a/modules/reporting/config/locales/crowdin/no.yml b/modules/reporting/config/locales/crowdin/no.yml index 49146627b1d5..789f6673d149 100644 --- a/modules/reporting/config/locales/crowdin/no.yml +++ b/modules/reporting/config/locales/crowdin/no.yml @@ -81,6 +81,9 @@ units: "Enheter" validation_failure_date: "er ikke en gyldig dato" validation_failure_integer: "er ikke et gyldig heltall" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Valgte kolonner" diff --git a/modules/reporting/config/locales/crowdin/pl.yml b/modules/reporting/config/locales/crowdin/pl.yml index 7d6cfd0d7995..f8428c1f6eb4 100644 --- a/modules/reporting/config/locales/crowdin/pl.yml +++ b/modules/reporting/config/locales/crowdin/pl.yml @@ -81,6 +81,9 @@ pl: units: "Jednostki" validation_failure_date: "nie jest poprawną datą" validation_failure_integer: "nie jest prawidłową liczbą całkowitą" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Wybrane kolumny" diff --git a/modules/reporting/config/locales/crowdin/pt.yml b/modules/reporting/config/locales/crowdin/pt.yml index 00fc076cb013..a6caf4a34b43 100644 --- a/modules/reporting/config/locales/crowdin/pt.yml +++ b/modules/reporting/config/locales/crowdin/pt.yml @@ -81,6 +81,9 @@ pt: units: "Unidades" validation_failure_date: "não é uma data válida" validation_failure_integer: "não é um valor inteiro válido" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Colunas selecionadas" diff --git a/modules/reporting/config/locales/crowdin/ro.yml b/modules/reporting/config/locales/crowdin/ro.yml index dfd54f869702..5d71aa6ebdf8 100644 --- a/modules/reporting/config/locales/crowdin/ro.yml +++ b/modules/reporting/config/locales/crowdin/ro.yml @@ -81,6 +81,9 @@ ro: units: "Unități" validation_failure_date: "nu e o dată validă" validation_failure_integer: "nu e un întreg valid" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Coloane selectate" diff --git a/modules/reporting/config/locales/crowdin/ru.yml b/modules/reporting/config/locales/crowdin/ru.yml index 6b3c3b575fc7..e88012c588d7 100644 --- a/modules/reporting/config/locales/crowdin/ru.yml +++ b/modules/reporting/config/locales/crowdin/ru.yml @@ -81,6 +81,9 @@ ru: units: "Модули" validation_failure_date: "не является допустимой датой" validation_failure_integer: "не является допустимым целым числом" + export: + cost_reports: + title: "Экспорт ваших отчетов о затратах в XLS" reporting: group_by: selected_columns: "Выбранные столбцы" diff --git a/modules/reporting/config/locales/crowdin/rw.yml b/modules/reporting/config/locales/crowdin/rw.yml index 4533b109bf75..b193a3340c0e 100644 --- a/modules/reporting/config/locales/crowdin/rw.yml +++ b/modules/reporting/config/locales/crowdin/rw.yml @@ -81,6 +81,9 @@ rw: units: "Units" validation_failure_date: "is not a valid date" validation_failure_integer: "is not a valid integer" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Selected columns" diff --git a/modules/reporting/config/locales/crowdin/si.yml b/modules/reporting/config/locales/crowdin/si.yml index e06fedf6110f..46e03f8d87d4 100644 --- a/modules/reporting/config/locales/crowdin/si.yml +++ b/modules/reporting/config/locales/crowdin/si.yml @@ -81,6 +81,9 @@ si: units: "Units" validation_failure_date: "is not a valid date" validation_failure_integer: "is not a valid integer" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Selected columns" diff --git a/modules/reporting/config/locales/crowdin/sk.yml b/modules/reporting/config/locales/crowdin/sk.yml index ba356636540a..c1d101c1f0bf 100644 --- a/modules/reporting/config/locales/crowdin/sk.yml +++ b/modules/reporting/config/locales/crowdin/sk.yml @@ -81,6 +81,9 @@ sk: units: "Jednotky" validation_failure_date: "nie je platný dátum" validation_failure_integer: "nie je platné celé číslo" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Vybrané stĺpce" diff --git a/modules/reporting/config/locales/crowdin/sl.yml b/modules/reporting/config/locales/crowdin/sl.yml index cb041440b37a..430c8fb86ee2 100644 --- a/modules/reporting/config/locales/crowdin/sl.yml +++ b/modules/reporting/config/locales/crowdin/sl.yml @@ -81,6 +81,9 @@ sl: units: "Enote" validation_failure_date: "ni veljaven datum" validation_failure_integer: "ni veljavno število" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Izbrani stolpci" diff --git a/modules/reporting/config/locales/crowdin/sr.yml b/modules/reporting/config/locales/crowdin/sr.yml index 4bd43d6d5db7..a383352a85ac 100644 --- a/modules/reporting/config/locales/crowdin/sr.yml +++ b/modules/reporting/config/locales/crowdin/sr.yml @@ -81,6 +81,9 @@ sr: units: "Units" validation_failure_date: "is not a valid date" validation_failure_integer: "is not a valid integer" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Selected columns" diff --git a/modules/reporting/config/locales/crowdin/sv.yml b/modules/reporting/config/locales/crowdin/sv.yml index 7319fc1c03ad..f7d5b6b49297 100644 --- a/modules/reporting/config/locales/crowdin/sv.yml +++ b/modules/reporting/config/locales/crowdin/sv.yml @@ -81,6 +81,9 @@ sv: units: "Enheter" validation_failure_date: "inte är ett giltigt datum" validation_failure_integer: "är inte ett giltigt heltal" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Valda kolumner" diff --git a/modules/reporting/config/locales/crowdin/th.yml b/modules/reporting/config/locales/crowdin/th.yml index c6c98825be98..d15d3a6d5c61 100644 --- a/modules/reporting/config/locales/crowdin/th.yml +++ b/modules/reporting/config/locales/crowdin/th.yml @@ -81,6 +81,9 @@ th: units: "Units" validation_failure_date: "is not a valid date" validation_failure_integer: "is not a valid integer" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Selected columns" diff --git a/modules/reporting/config/locales/crowdin/tr.yml b/modules/reporting/config/locales/crowdin/tr.yml index 550173683d5e..5e8914746731 100644 --- a/modules/reporting/config/locales/crowdin/tr.yml +++ b/modules/reporting/config/locales/crowdin/tr.yml @@ -81,6 +81,9 @@ tr: units: "Birimler" validation_failure_date: "geçerli bir tarih değil" validation_failure_integer: "geçerli bir tamsayı değil" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Seçilen sütunlar" diff --git a/modules/reporting/config/locales/crowdin/uk.yml b/modules/reporting/config/locales/crowdin/uk.yml index 72bbc606d736..494245621b2e 100644 --- a/modules/reporting/config/locales/crowdin/uk.yml +++ b/modules/reporting/config/locales/crowdin/uk.yml @@ -81,6 +81,9 @@ uk: units: "Одиниці" validation_failure_date: "є недійсною датою" validation_failure_integer: "не є дійсним цілим числом" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Вибрані стовпці" diff --git a/modules/reporting/config/locales/crowdin/vi.yml b/modules/reporting/config/locales/crowdin/vi.yml index 71df19b1a5d1..37e466b28b30 100644 --- a/modules/reporting/config/locales/crowdin/vi.yml +++ b/modules/reporting/config/locales/crowdin/vi.yml @@ -81,6 +81,9 @@ vi: units: "Units" validation_failure_date: "is not a valid date" validation_failure_integer: "is not a valid integer" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "Selected columns" diff --git a/modules/reporting/config/locales/crowdin/zh-TW.yml b/modules/reporting/config/locales/crowdin/zh-TW.yml index 022791238538..0c595b087156 100644 --- a/modules/reporting/config/locales/crowdin/zh-TW.yml +++ b/modules/reporting/config/locales/crowdin/zh-TW.yml @@ -81,6 +81,9 @@ zh-TW: units: "單位" validation_failure_date: "不是一個有效日期" validation_failure_integer: "不是一個有效的整數" + export: + cost_reports: + title: "Your Cost Reports XLS export" reporting: group_by: selected_columns: "選擇列" diff --git a/modules/reporting/config/locales/en.yml b/modules/reporting/config/locales/en.yml index 62e391dbe0be..a59d5d0826de 100644 --- a/modules/reporting/config/locales/en.yml +++ b/modules/reporting/config/locales/en.yml @@ -99,6 +99,10 @@ en: validation_failure_date: "is not a valid date" validation_failure_integer: "is not a valid integer" + export: + cost_reports: + title: "Your Cost Reports XLS export" + reporting: group_by: selected_columns: "Selected columns" diff --git a/modules/xls_export/lib/open_project/xls_export/xls_views/cost_entry_table.rb b/modules/reporting/lib/open_project/reporting/cost_entry_xls_table.rb similarity index 96% rename from modules/xls_export/lib/open_project/xls_export/xls_views/cost_entry_table.rb rename to modules/reporting/lib/open_project/reporting/cost_entry_xls_table.rb index 1b80420e5e94..11851766e81f 100644 --- a/modules/xls_export/lib/open_project/xls_export/xls_views/cost_entry_table.rb +++ b/modules/reporting/lib/open_project/reporting/cost_entry_xls_table.rb @@ -1,4 +1,4 @@ -class OpenProject::XlsExport::XlsViews::CostEntryTable < OpenProject::XlsExport::XlsViews +class OpenProject::Reporting::CostEntryXlsTable < OpenProject::XlsExport::XlsViews def generate @spreadsheet = OpenProject::XlsExport::SpreadsheetBuilder.new(I18n.t(:label_money)) default_query = serialize_query_without_hidden(@query) diff --git a/modules/reporting/spec/features/export_cost_report_spec.rb b/modules/reporting/spec/features/export_cost_report_spec.rb new file mode 100644 index 000000000000..49d38d7a363b --- /dev/null +++ b/modules/reporting/spec/features/export_cost_report_spec.rb @@ -0,0 +1,76 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) 2012-2023 the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +require_relative '../spec_helper' +require_relative 'support/pages/cost_report_page' + +describe "Cost reports XLS export", js: true do + shared_let(:project) { create(:project) } + shared_let(:user) { create(:admin) } + shared_let(:cost_type) { create(:cost_type, name: 'Post-war', unit: 'cap', unit_plural: 'caps') } + shared_let(:work_package) { create(:work_package, project:, subject: 'Some task') } + shared_let(:cost_entry) { create(:cost_entry, user:, work_package:, project:, cost_type:) } + let(:report_page) { Pages::CostReportPage.new project } + let(:sheet) { @download_list.refresh_from(page).latest_downloaded_content } # rubocop:disable RSpec/InstanceVariable + + subject do + io = StringIO.new sheet + Spreadsheet.open(io).worksheets.first + end + + before do + @download_list = DownloadList.new + login_as(user) + end + + after do + DownloadList.clear + end + + it 'can download and open the XLS' do + report_page.visit! + click_on 'Export XLS' + + expect(page).to have_content I18n.t('js.job_status.generic_messages.in_queue'), + wait: 10 + perform_enqueued_jobs + + expect(page).to have_text("The export has completed successfully") + + title, _, entry, = subject.rows + expect(title.first).to include("Cost reports (#{Time.zone.today.strftime('%m/%d/%Y')})") + date, user_ref, _, wp_ref, _, project_ref, costs, type, = entry + + expect(date).to eq(Time.zone.today.iso8601) + expect(user_ref).to eq(user.name) + expect(wp_ref).to include 'Some task' + expect(project_ref).to eq project.name + expect(costs).to eq 1.0 + expect(type).to eq 'Post-war' + end +end diff --git a/modules/storages/config/locales/crowdin/cs.yml b/modules/storages/config/locales/crowdin/cs.yml index 72c1bc19696f..cf170a29f03d 100644 --- a/modules/storages/config/locales/crowdin/cs.yml +++ b/modules/storages/config/locales/crowdin/cs.yml @@ -51,7 +51,7 @@ cs: type_link_text: "„Integration OpenProject“" name: "Dejte svému úložišti jméno, aby uživatelé mohli rozlišovat mezi více úložišti." host: "Přidejte prosím adresu hostitele vašeho úložiště obsahující https://. Nemělo by být delší než 255 znaků." - no_storage_set_up: "There are no file storages set up yet." + no_storage_set_up: "Dosud nejsou nastaveny žádné úložiště souborů." setting_up_additional_storages: "Pro nastavení dalších úložišť souborů navštivte prosím" setting_up_additional_storages_non_admin: "Administrátoři mohou nastavit další úložiště souborů v administraci / Úložiště souborů." setting_up_storages: "Pro nastavení úložišť souborů navštivte prosím" diff --git a/modules/storages/config/locales/crowdin/js-cs.yml b/modules/storages/config/locales/crowdin/js-cs.yml index 60a625e4b9bd..c8533af20269 100644 --- a/modules/storages/config/locales/crowdin/js-cs.yml +++ b/modules/storages/config/locales/crowdin/js-cs.yml @@ -3,7 +3,7 @@ cs: js: storages: link_files_in_storage: "Prolinkovat soubory v" - link_existing_files: "Link existing files" + link_existing_files: "Odkaz na existující soubory" upload_files: "Nahrát soubory" drop_files: "Přetáhněte soubory pro jejich nahrání na %{name}." drop_or_click_files: "Drop files here or click to upload them to %{name}." diff --git a/modules/storages/config/locales/crowdin/js-lt.yml b/modules/storages/config/locales/crowdin/js-lt.yml index 0a865f2cf79e..c4953a801c2d 100644 --- a/modules/storages/config/locales/crowdin/js-lt.yml +++ b/modules/storages/config/locales/crowdin/js-lt.yml @@ -2,74 +2,74 @@ lt: js: storages: - link_files_in_storage: "Link files in %{storageType}" - link_existing_files: "Link existing files" - upload_files: "Upload files" - drop_files: "Drop files here to upload them to %{name}." - drop_or_click_files: "Drop files here or click to upload them to %{name}." - login: "%{storageType} login" - login_to: "Login to %{storageType}" - no_connection: "No %{storageType} connection" - open_storage: "Open %{storageType}" - select_location: "Select location" - choose_location: "Choose location" + link_files_in_storage: "Susieti failus %{storageType}" + link_existing_files: "Susieti esamus failus" + upload_files: "Įkelti failus" + drop_files: "Įkelkite failus čia, norėdami įkelti juos į %{name}." + drop_or_click_files: "Įkelkite failus čia arba spauskite pele, norėdami įkelti juos į %{name}." + login: "%{storageType} prisijungimas" + login_to: "Prisijungti prie %{storageType}" + no_connection: "Nėra %{storageType} jungties" + open_storage: "Atverti %{storageType}" + select_location: "Pažymėti vietą" + choose_location: "Parinkite vietą" types: nextcloud: "Nextcloud" information: connection_error: > - Some %{storageType} settings are not working. Please contact your %{storageType} administrator. - live_data_error: "Error fetching file details" + Kai kurie %{storageType} nustatymai neveikia. Prašome susisiekti su jūsų %{storageType} administratoriumi. + live_data_error: "Klaida ištraukiant failo detales" live_data_error_description: > - Some %{storageType} data could not be fetched. Please try to reload this page or contact your %{storageType} administrator. - no_file_links: "In order to link files to this work package please do it via %{storageType}." + Dalies %{storageType} duomenų nepavyko ištraukti. Prašome pabandyti iš naujo įkelti šį puslapį arba susisiekti su jūsų %{storageType} administratoriumi. + no_file_links: "Norėdami susieti failus su šiuo darbo paketu, prašome daryti tai per %{storageType}." not_logged_in: > - To add a link, see or upload files related to this work package, please login to %{storageType}. + Norėdami pridėti nuorodą, žiūrėti ar įkelkiti failus, susijusius su šiuo darbo paketu, prašome prisijungti prie %{storageType}. files: - already_existing_header: "This file already exists" + already_existing_header: "Toks failas jau yra" already_existing_body: > - A file with the name "%{fileName}" already exists in the location where you are trying to upload this file. What would you like to do? - directory_not_writeable: "You do not have permission to add files to this folder." - dragging_many_files: "The upload to %{storageType} supports only one file at once." - empty_folder: "This folder is empty." - empty_folder_location_hint: "Click the button below to upload the file to this location." - file_not_selectable_location: "Selecting a file is not possible in the process of choosing a location." - upload_keep_both: "Keep both" + Failas pavadinimu „%{fileName}“ jau yra vietoje, į kurią bandote jį įkelti. Ką norėtumėte padaryti? + directory_not_writeable: "Jūs neturite teisių pridėti failų į šį aplanką." + dragging_many_files: "Įkėlimas į %{storageType} galimas tik po vieną failą vienu metu." + empty_folder: "Šis aplankas yra tuščias." + empty_folder_location_hint: "Spauskite mygtuką žemiau, jei norite įkelti failą į šią vietą." + file_not_selectable_location: "Vietos pasirinkimo metu negalima parinkti failo." + upload_keep_both: "Pasilikti abu" upload_replace: "Pakeisti" file_links: empty: > - Currently there are no linked files to this work package. Start linking files with the action below or from within %{storageType}. - download: "Download %{fileName}" - no_permission: "You have no permission to see this file." - open: "Open file on storage" - open_location: "Open file in location" - remove: "Remove file link" + Šio metu nėra failų, susietų su šiuo darbo paketu. Pradėkite susieti failus naudodami veiksmą apačioje arba iš %{storageType}. + download: "Atsisiųsti %{fileName}" + no_permission: "Jūs neturite teisės žiūrėti šį failą." + open: "Atverti failą saugykloje" + open_location: "Atverti failą vietoje" + remove: "Pašalinti nuorodą" remove_confirmation: > - Are you sure you want to unlink the file from this work package? Unlinking does not affect the original file and only removes the connection to this work package. - remove_short: "Remove link" - select: "Select files" + Ar tikrai norite atsieti failą nuo šio darbo paketo? Atsiejimas neįtakoja originalaus failo, tik pašalina jungtį su dabartiniu darbo paketu. + remove_short: "Pašalinti nuorodą" + select: "Pasirinkite failus" select_all: "Pasirinkti viską" selection: zero: "Pasirinkite failus susiejimui" - one: "Link 1 file" - few: "Link %{count} files" - many: "Link %{count} files" - other: "Link %{count} files" + one: "Susieti 1 failą" + few: "Susieti %{count} failus" + many: "Susieti %{count} failų" + other: "Susieti %{count} failus" success_create: - one: "Successfully created 1 file link." - few: "Successfully created %{count} file links." - many: "Successfully created %{count} file links." - other: "Successfully created %{count} file links." + one: "Sėkmingai sukurta 1 failo nuoroda" + few: "Sėkmingai sukurtos %{count} failų nuorodos." + many: "Sėkmingai sukurta %{count} failų nuorodų." + other: "Sėkmingai sukurtos %{count} failų nuorodos." upload_error: default: > - Your file (%{fileName}) could not be uploaded. Please check that the latest version of the Nextcloud App "OpenProject Integration" is installed and contact your administrator for more information. + Jūsų failo (%{fileName}) nepavyko įkelti. Prašome patikrinti, kad įdiegta paskutinė Nextcloud aplikacijos „OpenProject Integration“ versija ir susisiekti su jūsų administratoriumi, kad gautumėte daugiau informacijos. 403: > - Your file (%{fileName}) could not be uploaded due to system restrictions. Please contact your administrator for more information. + Jūsų failas (%{fileName}) negalėjo būti įkeltas dėl sistemos apribojimų. Prašome susiekti su jūsų administratoriumi, kad gautumėte daugiau informacijos. 413: > - Your file (%{fileName}) is bigger than what OpenProject can upload to %{storageType}. You can upload it directly to %{storageType} first and then link the file. + Jūsų failas (%{fileName}) per didelis, kad OpenProject galėtų įkelti jį į %{storageType}. Jūs galite įkelti tiesiai į %{storageType} ir tada susieti failą. 507: > - Your file (%{fileName}) is bigger than the storage quota allows. Contact your administrator to modify this quota. + Jūsų failas (%{fileName}) yra didesnis nei leidžia saugyklos apribojimai. Susisiekite su jūsų administratoriumi, kad padidintumėte šį apribojimą. link_uploaded_file_error: > - An error occurred linking the recently uploaded file '%{fileName}' to the work package %{workPackageId}. - not_allowed_tooltip: "Please log in to Nextcloud to access this file" - already_linked_file: "This file is already linked to this work package." - already_linked_directory: "This directory is already linked to this work package." + Susiejant neseniai įkeltą failą „%{fileName}“ su darbo paketu %{workPackageId} įvyko klaida. + not_allowed_tooltip: "Prašome prisijungti prie Nextcloud, kad pasiektumėte failą" + already_linked_file: "Šis failas jau susietas su šiuo darbo paketu." + already_linked_directory: "Šis aplankas jau susietas su šiuo darbo paketu." diff --git a/modules/storages/config/locales/crowdin/js-no.yml b/modules/storages/config/locales/crowdin/js-no.yml index 6d1a9d170fee..47ed472a3851 100644 --- a/modules/storages/config/locales/crowdin/js-no.yml +++ b/modules/storages/config/locales/crowdin/js-no.yml @@ -47,7 +47,7 @@ Are you sure you want to unlink the file from this work package? Unlinking does not affect the original file and only removes the connection to this work package. remove_short: "Remove link" select: "Select files" - select_all: "Select all" + select_all: "Velg alle" selection: zero: "Select files to link" one: "Link 1 file" diff --git a/modules/storages/config/locales/crowdin/lt.yml b/modules/storages/config/locales/crowdin/lt.yml index 8cfc7c930850..97e9298fa118 100644 --- a/modules/storages/config/locales/crowdin/lt.yml +++ b/modules/storages/config/locales/crowdin/lt.yml @@ -25,9 +25,9 @@ lt: minimal_nextcloud_version_unmet: "neatitinka minimalių versijos reikalavimų (turi būti Nextcloud 23 ar aukštesnis)" not_nextcloud_server: "nėra Nextcloud serveris" op_application_not_installed: > - appears to not have the app "OpenProject integration" installed. Please install it first and then try again. + panašu neturi įdiegtos „OpenProject integracijos“ aplikacijos. Prašome ją įdiegti ir bandyti dar kartą. authorization_header_missing: > - is not fully set up. The Nextcloud instance does not receive the "Authorization" header, which is necessary for a Bearer token based authorization of API requests. Please double check your HTTP server configuration. + nėra pilnai nustatytas. Nextcloud egzempliorius negauna „Autorizacijos“ antraštės, kuri būtina Turėtojo žetonu paremtoms autorizacijos API užklausoms. Prašome patikrinti jūsų HTTP serverio konfigūraciją. storages/file_link: attributes: origin_id: @@ -37,29 +37,29 @@ lt: too_many_elements_created_at_once: "Per daug elementu vienu metu. Tikėtasi daugiausia %{max}, gauta %{actual}." storages: buttons: - done_continue_setup: "Done. Continue setup" - replace_openproject_oauth: "Replace OpenProject OAuth" - replace_provider_type_oauth: "Replace %{provider_type} OAuth" - save_and_continue_setup: "Save and continue setup" - save_and_complete_setup: "Save and complete setup" + done_continue_setup: "Atlikta. Tęsti nustatymą" + replace_openproject_oauth: "Keisti OpenProject OAuth" + replace_provider_type_oauth: "Keisti %{provider_type} OAuth" + save_and_continue_setup: "Įrašyti r tęsti nustatymą" + save_and_complete_setup: "Įrašyti ir baigti nustatymą" page_titles: project_settings: index: "Šiame projekte prieinamos failų saugyklos." - new: "Add a file storage to this project" + new: "Pridėti failų saugyklą šiam projektui" instructions: - type: "Please make sure you have administration privileges in your Nextcloud instance and have the following application installed before doing the setup:" - type_link_text: "“Integration OpenProject”" - name: "Give your storage a name so that users can differentiate between multiple storages." - host: "Please add the host address of your storage including the https://. It should not be longer than 255 characters." - no_storage_set_up: "There are no file storages set up yet." + type: "Prašome įsitikinti, kad turite administratoriaus teises jūsų Nextcloud egzemplioriuje bei kad įdiegtos šios aplikacijos, prieš tęsiant nustatymą:" + type_link_text: "„Integration OpenProject“" + name: "Suteikite jūsų saugyklai pavadinimą, kad naudotojai galėtų atskirti tarp skirtingų saugyklų." + host: "Prašome pridėti jūsų saugyklos stoties adresą, įskaitant https://. Jis turi būti ne ilgesnis už 255 simbolius." + no_storage_set_up: "Dar nėra nustatyta nei viena failų saugykla." setting_up_additional_storages: "Norėdami sukurti papildomas failų saugyklas, prašome aplankyti" setting_up_additional_storages_non_admin: "Administratoriai gali sukurti papildomas failų saugyklas: Administravimas / Failų saugyklos." setting_up_storages: "Norėdami nustatyti failų saugyklas aplankykite" setting_up_storages_non_admin: "Administratoriai gali nustatyti failų saugyklas: Administravimas / Failų saugyklos" all_available_storages_already_added: "Visos galimos failų saugyklos jau pridėtos į projektą." - copy_from: "Copy this value from" + copy_from: "Kopijuoti reikšmę iš" nextcloud: - integration: "Nextcloud Administration / OpenProject" + integration: "Nextclout Administravimas / OpenProject" delete_warning: storage: > Ar tikrai norite ištrinti šią failų saugyklą? Saugykla taipogi bus ištrinta iš visų projektų, kur ji naudojama. Taipogi tai ištrins visus ryšius iš darbo paketų į failus, esančius šioje saugykloje. @@ -69,24 +69,24 @@ lt: label_file_link: "Failo nuoroda" label_file_links: "Failo nuorodos" label_name: "Pavadinimas" - label_host: "Host URL" + label_host: "Stoties URL" label_oauth_breadcrumb: openproject: "OpenProject OAuth" nextcloud: "Nextcloud OAuth" - label_oauth_application_details: "OAuth application details" - label_oauth_client_details: "OAuth client details" + label_oauth_application_details: "OAuth aplikacijos detalės" + label_oauth_client_details: "OAuth kliento detalės" label_provider_type: "Tiekėjo tipas" label_new_storage: "Nauja saugykla" label_storage: "Saugykla" label_storages: "Saugyklos" - no_results: "No storages set up yet." + no_results: "Dar nenustatyta jokia saugykla." provider_types: label: "Tiekėjo tipas" nextcloud: name: "Nextcloud" - name_placeholder: "e.g. Nextcloud" - default_name: "My Nextcloud" - confirm_replace_oauth_application: "Are you sure? All users will have to authorize again against OpenProject." - confirm_replace_oauth_client: "Are you sure? All users will have to authorize again against the storage." - oauth_client_details_missing: "To complete the setup, please add OAuth client credentials from your storage." - notice_oauth_application_replaced: "The OpenProject OAuth application was successfully replaced." + name_placeholder: "pvz. Nextcloud" + default_name: "Mano Nextcloud" + confirm_replace_oauth_application: "Ar jūs įsitikinę? Visi naudotojai turės iš naujo autorizuotis su OpenProject." + confirm_replace_oauth_client: "Ar jūs įsitikinę? Visi naudotojai turės iš naujo autorizuotis su saugykla." + oauth_client_details_missing: "Norėdami baigti nustatymą, prašome pridėti OAuth kliento prisijungimo duomenis iš jūsų saugyklos." + notice_oauth_application_replaced: "OpenProject OAuth aplikacija buvo sėkmingai pakeista." diff --git a/modules/team_planner/config/locales/crowdin/js-nl.yml b/modules/team_planner/config/locales/crowdin/js-nl.yml index 6196aac9d8d4..cd415ca5f839 100644 --- a/modules/team_planner/config/locales/crowdin/js-nl.yml +++ b/modules/team_planner/config/locales/crowdin/js-nl.yml @@ -12,7 +12,7 @@ nl: remove_assignee: 'Verwijder verantwoordelijke' two_weeks: '2-week' one_week: '1-week' - work_week: 'Work week' + work_week: 'Werkweek' today: 'Vandaag' drag_here_to_remove: 'Sleep hierheen om taakontvanger en start- en einddata te verwijderen.' cannot_drag_here: 'Kan het werkpakket niet verwijderen vanwege machtigingen of bewerkingsbeperkingen.' diff --git a/modules/webhooks/config/locales/crowdin/id.yml b/modules/webhooks/config/locales/crowdin/id.yml index 8d3f9f707db3..61b2c5c0dfc7 100644 --- a/modules/webhooks/config/locales/crowdin/id.yml +++ b/modules/webhooks/config/locales/crowdin/id.yml @@ -2,62 +2,62 @@ id: activerecord: attributes: webhooks/webhook: - url: 'Payload URL' - secret: 'Signature secret' - events: 'Events' + url: 'URL muatan' + secret: 'Rahasia tanda tangan' + events: 'Acara' projects: 'Proyek-proyek yang diaktifkan' webhooks/log: - event_name: 'Event name' - url: 'Payload URL' - response_code: 'Response code' - response_body: 'Response' + event_name: 'Nama acara' + url: 'URL muatan' + response_code: 'Kode respon' + response_body: 'Tanggapan' models: - webhooks/outgoing_webhook: "Outgoing webhook" + webhooks/outgoing_webhook: "Webhook keluar" webhooks: singular: Webhook - plural: Webhooks + plural: Webhook resources: time_entry: - name: "Time entry" + name: "Entri waktu" outgoing: - no_results_table: No webhooks have been defined yet. - label_add_new: Add new webhook - label_edit: Edit webhook - label_event_resources: Event resources + no_results_table: Belum ada webhook yang ditentukan. + label_add_new: Tambahkan webhook baru + label_edit: Ubah webhook + label_event_resources: Sumber acara events: created: "Dibuat" - updated: "Updated" + updated: "Diperbarui" explanation: text: > - Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the %{link} has passed. - link: configured aggregation period + Setelah kejadian seperti pembuatan paket kerja atau pembaruan proyek, OpenProject akan mengirimkan permintaan POST ke titik akhir web yang dikonfigurasi. Sering kali, acara dikirim setelah %{link} lewat. + link: periode agregasi yang dikonfigurasi status: - enabled: 'Webhook is enabled' - disabled: 'Webhook is disabled' - enabled_text: 'The webhook will emit payloads for the defined events below.' - disabled_text: 'Click the edit button to activate the webhook.' + enabled: 'Webhook diaktifkan' + disabled: 'Webhook dinonaktifkan' + enabled_text: 'Webhook akan mengeluarkan payload untuk peristiwa yang ditentukan di bawah.' + disabled_text: 'Klik tombol ubah untuk mengaktifkan webhook.' deliveries: - no_results_table: No deliveries have been made for this webhook in the past days. - title: 'Recent deliveries' - time: 'Delivery time' + no_results_table: Tidak ada pengiriman yang dilakukan untuk webhook ini dalam beberapa hari terakhir. + title: 'Pengiriman terbaru' + time: 'Waktu pengiriman' form: introduction: > - Send a POST request to the payload URL below for any event in the project you're subscribed to. Payload will correspond to the APIv3 representation of the object being modified. - apiv3_doc_url: For more information, visit the API documentation + Kirim permintaan POST ke URL payload di bawah ini untuk acara apa pun dalam proyek langganan Anda. Muatan akan sesuai dengan representasi APIv3 dari objek yang sedang dimodifikasi. + apiv3_doc_url: Untuk informasi lebih lanjut, kunjungi dokumentasi API description: - placeholder: 'Optional description for the webhook.' + placeholder: 'Deskripsi opsional untuk webhook.' enabled: description: > - When checked, the webhook will trigger on the selected events. Uncheck to disable the webhook. + Jika dicentang, webhook akan dipicu pada peristiwa yang dipilih. Hapus centang untuk menonaktifkan webhook. events: - title: 'Enabled events' + title: 'Acara yang diaktifkan' project_ids: title: 'Proyek-proyek yang diaktifkan' - description: 'Select for which projects this webhook should be executed for.' - all: 'All projects' - selected: 'Selected projects only' + description: 'Pilih untuk project mana webhook ini harus dijalankan.' + all: 'Semua proyek' + selected: 'Proyek yang dipilih saja' selected_project_ids: - title: 'Selected projects' + title: 'Proyek terpilih' secret: description: > - If set, this secret value is used by OpenProject to sign the webhook payload. + Jika disetel, nilai rahasia ini digunakan oleh OpenProject untuk menandatangani payload webhook. diff --git a/modules/xls_export/app/views/hooks/xls_report/_view_cost_report_toolbar.html.erb b/modules/xls_export/app/views/hooks/xls_report/_view_cost_report_toolbar.html.erb index 518faed2ebd8..e69de29bb2d1 100644 --- a/modules/xls_export/app/views/hooks/xls_report/_view_cost_report_toolbar.html.erb +++ b/modules/xls_export/app/views/hooks/xls_report/_view_cost_report_toolbar.html.erb @@ -1,10 +0,0 @@ -<% if User.current.allowed_to? :export_work_packages, @project, global: @project.nil? %> -
  • - <%= link_to(t(:export_to_excel), - { controller: "cost_reports" , - action: :index, - format: 'xls', - project_id: @project }, - class: "button icon-export-xls-descr") %> -
  • -<% end %> diff --git a/modules/xls_export/config/locales/crowdin/zh-TW.yml b/modules/xls_export/config/locales/crowdin/zh-TW.yml index 38bb14e9874d..7c671dc8d240 100644 --- a/modules/xls_export/config/locales/crowdin/zh-TW.yml +++ b/modules/xls_export/config/locales/crowdin/zh-TW.yml @@ -1,7 +1,7 @@ zh-TW: export_to_excel: "匯出到 XLS" print_with_description: "預覽列印(帶描述)" - sentence_separator_or: "或者" + sentence_separator_or: "或" different_formats: 不同格式 export: format: diff --git a/modules/xls_export/lib/open_project/xls_export/engine.rb b/modules/xls_export/lib/open_project/xls_export/engine.rb index d63be150d3b6..884d18c94076 100644 --- a/modules/xls_export/lib/open_project/xls_export/engine.rb +++ b/modules/xls_export/lib/open_project/xls_export/engine.rb @@ -8,10 +8,7 @@ class Engine < ::Rails::Engine author_url: 'https://www.openproject.org', bundled: true - patches %i[CostReportsController] - config.to_prepare do - OpenProject::XlsExport::Hooks::CostReportHook OpenProject::XlsExport::Hooks::WorkPackageHook end diff --git a/modules/xls_export/lib/open_project/xls_export/hooks/cost_report_hook.rb b/modules/xls_export/lib/open_project/xls_export/hooks/cost_report_hook.rb deleted file mode 100644 index 7b8508dea468..000000000000 --- a/modules/xls_export/lib/open_project/xls_export/hooks/cost_report_hook.rb +++ /dev/null @@ -1,5 +0,0 @@ -module OpenProject::XlsExport::Hooks - class CostReportHook < OpenProject::Hook::ViewListener - render_on :view_cost_report_toolbar, partial: 'hooks/xls_report/view_cost_report_toolbar' - end -end diff --git a/modules/xls_export/lib/open_project/xls_export/patches/cost_reports_controller_patch.rb b/modules/xls_export/lib/open_project/xls_export/patches/cost_reports_controller_patch.rb deleted file mode 100644 index e7e78d6329a6..000000000000 --- a/modules/xls_export/lib/open_project/xls_export/patches/cost_reports_controller_patch.rb +++ /dev/null @@ -1,45 +0,0 @@ -module OpenProject::XlsExport::Patches - module CostReportsControllerPatch - def self.included(base) # :nodoc: - base.prepend InstanceMethods - end - - module InstanceMethods - def excel_export? - (params["action"] == "index" or params[:action] == "all") && params["format"] == "xls" - end - - def ensure_project_scope? - !excel_export? && super - end - - # If the index action is called, hook the xls format into the cost report - def respond_to - if excel_export? - super do |format| - yield format - format.xls do - report = report_to_xls - time = Time.now.strftime('%d-%m-%Y-T-%H-%M-%S') - send_data(report, type: :xls, filename: "export-#{time}.xls") if report - end - end - else - super - end - end - - # Build an xls file from a cost report. - # We only support extracting a simple xls table, so grouping is ignored. - def report_to_xls - export_query = build_query(filter_params) - - options = { query: export_query, project: @project, cost_types: @cost_types } - - ::OpenProject::XlsExport::XlsViews::CostEntryTable.generate(options).xls - end - end - end -end - -CostReportsController.include OpenProject::XlsExport::Patches::CostReportsControllerPatch diff --git a/modules/xls_export/openproject-xls_export.gemspec b/modules/xls_export/openproject-xls_export.gemspec index 8ae8d44e04e4..bdd739ea5e0a 100644 --- a/modules/xls_export/openproject-xls_export.gemspec +++ b/modules/xls_export/openproject-xls_export.gemspec @@ -4,8 +4,7 @@ Gem::Specification.new do |s| s.authors = "OpenProject GmbH" s.email = "info@openproject.com" s.summary = 'OpenProject XLS Export' - s.description = 'Export issue lists as Excel spreadsheets (.xls). Support for exporting - cost entries and cost reports is not yet migrated to Rails 3 and disabled.' + s.description = 'Export issue lists as Excel spreadsheets (.xls)' s.license = "GPLv3" s.files = Dir["{app,config,db,lib}/**/*"] + %w(CHANGELOG.md README.md) diff --git a/modules/xls_export/spec/patches/cost_reports_controller_patch_spec.rb b/modules/xls_export/spec/patches/cost_reports_controller_patch_spec.rb deleted file mode 100644 index d2b24bbfea46..000000000000 --- a/modules/xls_export/spec/patches/cost_reports_controller_patch_spec.rb +++ /dev/null @@ -1,21 +0,0 @@ -require 'spec_helper' - -describe 'CostReportsController', "rendering to xls" do - skip 'XlsExport: CostReports support not yet migrated to Rails 3' - - it "responds with the xls if requested in the index" do - skip - render action: :index - expect(response).to be_redirect - end - - it "does not respond with the xls if requested in a detail view" do - skip - render action: :show - expect(response).to be_redirect - end - - it "generates xls from issues" do - skip - end -end diff --git a/spec/controllers/account_controller_spec.rb b/spec/controllers/account_controller_spec.rb index 283433d4d1db..0e03eed4edaa 100644 --- a/spec/controllers/account_controller_spec.rb +++ b/spec/controllers/account_controller_spec.rb @@ -98,6 +98,32 @@ def reset! end end + describe 'GET #internal_login' do + shared_let(:admin) { create(:admin) } + + context 'when direct login enabled', with_config: { omniauth_direct_login_provider: 'some_provider' } do + it 'allows to login internally using a special route' do + get :internal_login + + expect(response).to render_template 'account/login' + end + + it 'allows to post to login' do + post :login, params: { username: admin.login, password: 'adminADMIN!' } + expect(response).to redirect_to '/my/page' + end + end + + context 'when direct login disabled' do + it 'allows to login internally using a special route' do + get :internal_login + + expect(response).to have_http_status(:not_found) + expect(session[:internal_login]).not_to be_present + end + end + end + context 'POST #login' do shared_let(:admin) { create(:admin) } @@ -295,7 +321,7 @@ def reset! let(:user) { build_stubbed(:user, login: 'bob', identity_url: 'saml:foo') } let(:slo_callback) { nil } let(:sso_provider) do - { name: 'saml', single_sign_out_callback: slo_callback } + { name: 'saml', single_sign_out_callback: slo_callback } end before do @@ -456,10 +482,11 @@ def reset! end describe 'POST' do - it 'redirects to some_provider' do - post :login, params: { username: 'foo', password: 'bar' } + shared_let(:admin) { create(:admin) } - expect(response).to redirect_to '/auth/some_provider' + it 'allows to login internally still' do + post :login, params: { username: admin.login, password: 'adminADMIN!' } + expect(response).to redirect_to "/my/page" end end end @@ -795,9 +822,7 @@ def reset! end it 'preserves the back url' do - expect(response).to redirect_to( - '/login?back_url=https%3A%2F%2Fexample.net%2Fsome_back_url' - ) + expect(response).to redirect_to('/login?back_url=https%3A%2F%2Fexample.net%2Fsome_back_url') end it 'calls the user_registered callback' do diff --git a/spec/features/groups/group_memberships_spec.rb b/spec/features/groups/group_memberships_spec.rb index 215c92838162..f68e8fe54e6d 100644 --- a/spec/features/groups/group_memberships_spec.rb +++ b/spec/features/groups/group_memberships_spec.rb @@ -167,5 +167,29 @@ expect(members_page2).not_to have_group 'A-Team' expect(members_page2).not_to have_user 'Hannibal Smith' end + + context 'with an archived project' do + let!(:archived_project) do + create(:project, + name: 'Archived project', + identifier: 'archived_project', + active: false) + end + + let!(:other_project) do + create(:project, + name: 'Other project', + identifier: 'other_project') + end + + it 'can only a add the group to active projects in which the group is not yet a member' do + group_page.visit! + group_page.open_projects_tab! + + target_dropdown = group_page.search_for_project 'project' + expect(target_dropdown).to have_selector(".ng-option", text: 'Other project') + expect(target_dropdown).not_to have_selector(".ng-option", text: 'Archived project') + end + end end end diff --git a/spec/features/projects/projects_custom_fields_spec.rb b/spec/features/projects/projects_custom_fields_spec.rb index e33db0bb3ee5..af9d0f0941b9 100644 --- a/spec/features/projects/projects_custom_fields_spec.rb +++ b/spec/features/projects/projects_custom_fields_spec.rb @@ -275,5 +275,17 @@ cv = project.custom_values.find_by(custom_field_id: custom_field.id).typed_value expect(cv).to eq invisible_user end + + it 'does not show invite user button when there is no project selected' do + visit new_project_path + + name_field.set_value 'My project name' + + find('.op-fieldset--toggle', text: 'ADVANCED SETTINGS').click + + cf_field.expect_visible + cf_field.expect_no_option invisible_user + expect(page).not_to have_selector('.ng-dropdown-footer button', text: 'Invite') + end end end diff --git a/spec/support/pages/groups.rb b/spec/support/pages/groups.rb index 2edd3295bf41..21d4124e5087 100644 --- a/spec/support/pages/groups.rb +++ b/spec/support/pages/groups.rb @@ -106,6 +106,13 @@ def remove_from_project!(name) find_project(name).find('a[data-method=delete]').click end + def search_for_project(query) + autocomplete = page.find('[data-qa-selector="membership_project_id"]') + search_autocomplete autocomplete, + query:, + results_selector: 'body' + end + def find_project(name) find('tr', text: name) end diff --git a/spec/workers/copy_project_job_spec.rb b/spec/workers/copy_project_job_spec.rb index 992f9aa5854e..d58e6d7cdeb6 100644 --- a/spec/workers/copy_project_job_spec.rb +++ b/spec/workers/copy_project_job_spec.rb @@ -92,6 +92,7 @@ "#{WorkPackage.model_name.human} '#{work_package.type.name} ##{work_package.id}: #{work_package.subject}': #{custom_field.name} #{I18n.t('errors.messages.blank')}." end + # rubocop:disable RSpec/InstanceVariable before do source_project.work_package_custom_fields << custom_field type.custom_fields << custom_field @@ -110,8 +111,12 @@ expect(copy_job.job_status).to be_present expect(copy_job.job_status[:status]).to eq 'success' expect(copy_job.job_status[:payload]['redirect']).to include '/projects/copy' + + expected_link = { 'href' => "/api/v3/projects/#{@copied_project.id}", 'title' => @copied_project.name } + expect(copy_job.job_status[:payload]['_links']['project']).to eq(expected_link) end end + # rubocop:enable RSpec/InstanceVariable describe 'project has an invalid repository' do let(:admin) { create(:admin) }