<% content_for :content_body do %>
- <%= turbo_frame_tag :backlogs_container, refresh: :morph, src: backlog_backlogs_project_backlogs_path(@project), class: "op-backlogs-page" %>
+ <%= turbo_frame_tag :backlogs_container,
+ refresh: :morph,
+ src: backlog_backlogs_project_backlogs_path(@project, all: show_all_backlog),
+ class: "op-backlogs-page" %>
<% end %>
<% content_for :content_body_right do %>
diff --git a/modules/backlogs/config/locales/crowdin/af.yml b/modules/backlogs/config/locales/crowdin/af.yml
index e360c42d2b8..9b89b06f417 100644
--- a/modules/backlogs/config/locales/crowdin/af.yml
+++ b/modules/backlogs/config/locales/crowdin/af.yml
@@ -143,8 +143,8 @@ af:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ af:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/ar.yml b/modules/backlogs/config/locales/crowdin/ar.yml
index 55ec7128827..0d0d458cffd 100644
--- a/modules/backlogs/config/locales/crowdin/ar.yml
+++ b/modules/backlogs/config/locales/crowdin/ar.yml
@@ -27,15 +27,15 @@ ar:
activerecord:
attributes:
agile/sprint:
- duration: Duration
- finish_date: Finish date
+ duration: المدة
+ finish_date: تاريخ الانتهاء
goal: Sprint goal
name: Sprint name
- sharing: Sharing
+ sharing: المشاركة
statuses:
- in_planning: In planning
- active: Active
- completed: Completed
+ in_planning: مرحلة التخطيط
+ active: نشط
+ completed: مكتمل
project:
sprint_sharing: Sprint sharing
sprint:
@@ -50,7 +50,7 @@ ar:
story_points: نقاط القصة
errors:
messages:
- must_be_in_planning: must be in planning to start.
+ must_be_in_planning: يجب أن يكون في مرحلة التخطيط للبدء.
only_one_active_sprint_allowed: only one active sprint is allowed per project.
dates_required: Start and finish dates are required in order to start the sprint.
models:
@@ -82,22 +82,22 @@ ar:
other: There are %{count} work packages that were not completed in this sprint.
format: "%{message}"
status:
- not_active: is not active so it cannot be closed.
+ not_active: غير نشِط لذا لا يمكن إغلاقه.
sprint:
cannot_end_before_it_starts: لا يمكن أن ينتهي السباق قبل أن يبدأ.
models:
sprint: Sprint
attributes:
- task_type: Task type
+ task_type: نوع المهمة
backlogs:
any: أي
caption_sprints_default_fold_state: Sprints will not be expanded by default when viewing the 'Backlog and sprints' page. Each one has to be manually expanded.
- column_width: Column width
+ column_width: عرض العمود
definition_of_done: تعريف ما تم
definition_of_done_caption: Work packages with these statuses are treated as completed in backlog views and reporting.
done_status: Done status
sharing_description: This project can either share its own sprints, receive shared sprints or handle sprints independently (no sharing).
- sharing: Sharing
+ sharing: المشاركة
impediment: عائق
label_versions_default_fold_state: إظهار الإصدارات مطوية
label_burndown_chart: Burndown chart
@@ -106,11 +106,11 @@ ar:
label_is_done_status: الحالة %{status_name} تعني أنها منجزة
points_label:
zero: points
- one: point
+ one: نقطة
two: points
few: points
many: points
- other: points
+ other: نِقَاط
positions_could_not_be_rebuilt: تعذَر إعادة بناء المواقع.
positions_rebuilt_successfully: تم إعادة بناء المواقع بنجاح.
rebuild: إعِدْ بناء
@@ -135,10 +135,10 @@ ar:
header_backlogs: ''
button_update_backlogs: Update backlogs module
backlog_component:
- blankslate_title: "%{name} is empty"
+ blankslate_title: "%{name} فارغ"
blankslate_description: No items planned yet. Drag items here to add them.
sprint_component:
- blankslate_title: "%{name} is empty"
+ blankslate_title: "%{name} فارغ"
blankslate_description: No items planned yet. Drag items here to add them.
backlog_header_component:
label_toggle_backlog: Collapse/Expand %{name}
@@ -149,18 +149,18 @@ ar:
inbox_component:
blankslate_title: Backlog inbox is empty
blankslate_description: All open work packages in this project will automatically appear here.
- label_drag_work_package: Move %{name}
+ label_drag_work_package: نقل %{name}
show_more:
zero: Show %{count} more items
- one: Show 1 more item
+ one: عرض 1 عنصر آخر
two: Show %{count} more items
few: Show %{count} more items
many: Show %{count} more items
- other: Show %{count} more items
+ other: عرض %{count} عناصر أخرى
inbox_item_component:
- label_drag_work_package: Move %{name}
- inbox_menu_component:
+ label_drag_work_package: نقل %{name}
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -180,8 +180,8 @@ ar:
receive_shared_no_actions_description_text: This project receives shared sprints from a different project, but none are available right now.
settings_link_text: project settings
sprint_header_component:
- label_start_sprint: Start
- label_complete_sprint: Complete
+ label_start_sprint: ابدأ
+ label_complete_sprint: مكتمل
start_sprint_disabled_reason_active_sprint: Another sprint is already active.
start_sprint_disabled_reason_missing_dates: Start and finish dates are required in order to start the sprint.
label_story_count:
@@ -194,9 +194,9 @@ ar:
edit_sprint: Edit sprint
new_story: New story
stories_tasks: Stories/Tasks
- task_board: Task board
- wiki: Wiki
- properties: Properties
+ task_board: لوحة المهام
+ wiki: الموسوعة
+ properties: الخصائص
finish_sprint_dialog_component:
title: There are work in progress items
body: "%{message} What would you like to do with these?"
@@ -213,9 +213,9 @@ ar:
edit_sprint: Edit sprint
add_work_package: Add work package
story_component:
- label_drag_story: Move %{name}
- story_menu_component:
+ label_drag_story: نقل %{name}
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -227,7 +227,7 @@ ar:
backlogs_task: المهمة
backlogs_task_type: نوع المهمة
backlogs_wiki_template: نموذج لصفحة ويكي wiki الخاصة بالسباق
- backlogs_empty_title: No versions are defined yet
+ backlogs_empty_title: لم يعَّرَّف أي إصدار بعد
backlogs_empty_action_text: To start using backlogs, please create a version first
backlogs_not_configured_title: Backlogs not configured
backlogs_not_configured_description: Story and task types need to be set before using this module.
@@ -240,7 +240,7 @@ ar:
task_type:
cannot_be_story_type: can not also be a story type
label_backlog: Backlog
- label_inbox: Inbox
+ label_inbox: الوارد
label_backlogs: الأعمال المتراكمة غير المنجزة
label_backlogs_unconfigured: لم تقم بإنشاء الأعمال المتراكمة غير المنجزة بعد. من فضلك اذهب إلى %{administration} > %{plugins}، ثم اضغط على رابط %{configure} لهذا البرنامج المساعد. عندما تنتهي من تعيين الحقول، ارجع إلى هذه الصفحة لتبدأ باستخدام الأداة.
label_blocks_ids: الهويات المعرِّفة لمجموعات العمل المحظورة
@@ -273,14 +273,14 @@ ar:
backlog_sharing:
options:
no_sharing:
- label: Don't share
+ label: لا تشارك
caption: Sprints created in this project will only be available and visible to this project. They will also not be visible to subprojects.
receive_shared:
label: Receive shared sprints
caption: This project can only use sprints shared by other projects.
warning: This project can only use sprints shared by other projects. Unused sprints created in this project in the past, will no longer be visible.
share_all_projects:
- label: All projects
+ label: جميع المشاريع
caption: Sprints created in this project will be available to all projects in this instance. If you select this option, it will no longer be available to other projects.
disabled_caption: Option not available since project "%{name}" is currently sharing with all projects and only one project can do this.
disabled_caption_anonymous: Option not available since another project is currently sharing with all projects and only one project can do this.
diff --git a/modules/backlogs/config/locales/crowdin/az.yml b/modules/backlogs/config/locales/crowdin/az.yml
index 39cbe1520f4..1cc9fbef5d1 100644
--- a/modules/backlogs/config/locales/crowdin/az.yml
+++ b/modules/backlogs/config/locales/crowdin/az.yml
@@ -143,8 +143,8 @@ az:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ az:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/be.yml b/modules/backlogs/config/locales/crowdin/be.yml
index b22fdb63edd..fb1a07def9f 100644
--- a/modules/backlogs/config/locales/crowdin/be.yml
+++ b/modules/backlogs/config/locales/crowdin/be.yml
@@ -151,8 +151,8 @@ be:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -206,8 +206,8 @@ be:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/bg.yml b/modules/backlogs/config/locales/crowdin/bg.yml
index 5efad1e587b..59ec5b52e25 100644
--- a/modules/backlogs/config/locales/crowdin/bg.yml
+++ b/modules/backlogs/config/locales/crowdin/bg.yml
@@ -143,8 +143,8 @@ bg:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ bg:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/ca.yml b/modules/backlogs/config/locales/crowdin/ca.yml
index ab09fed7b12..0314128d1ca 100644
--- a/modules/backlogs/config/locales/crowdin/ca.yml
+++ b/modules/backlogs/config/locales/crowdin/ca.yml
@@ -143,8 +143,8 @@ ca:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ ca:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/ckb-IR.yml b/modules/backlogs/config/locales/crowdin/ckb-IR.yml
index a3a279877de..138f17125ac 100644
--- a/modules/backlogs/config/locales/crowdin/ckb-IR.yml
+++ b/modules/backlogs/config/locales/crowdin/ckb-IR.yml
@@ -143,8 +143,8 @@ ckb-IR:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ ckb-IR:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/cs.yml b/modules/backlogs/config/locales/crowdin/cs.yml
index 2c3ea30e48a..35392edaa75 100644
--- a/modules/backlogs/config/locales/crowdin/cs.yml
+++ b/modules/backlogs/config/locales/crowdin/cs.yml
@@ -151,8 +151,8 @@ cs:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Přesunout %{name}
+ label_actions: Work package actions
inbox_menu_component:
- label_actions: Operace na pracovním balíčku
action_menu:
copy_url_to_clipboard: Kopírovat odkaz do schránky
copy_work_package_id: Kopírovat pracovní balíček
@@ -206,12 +206,12 @@ cs:
add_work_package: Přidat pracovní balíček
story_component:
label_drag_story: Přesunout %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
- copy_url_to_clipboard: Kopírovat odkaz do schránky
- copy_work_package_id: Kopírovat ID pracovního balíčku
- move_menu: Přesunout
+ copy_url_to_clipboard: Copy URL to clipboard
+ copy_work_package_id: Copy work package ID
+ move_menu: Move
backlogs_points_burn_direction: Body popáleniny nahoru/dolů
backlogs_product_backlog: Nevyřízené produkty
backlogs_story: Příběh
diff --git a/modules/backlogs/config/locales/crowdin/da.yml b/modules/backlogs/config/locales/crowdin/da.yml
index e0eba5f9879..edae3eb240a 100644
--- a/modules/backlogs/config/locales/crowdin/da.yml
+++ b/modules/backlogs/config/locales/crowdin/da.yml
@@ -143,8 +143,8 @@ da:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ da:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/de.yml b/modules/backlogs/config/locales/crowdin/de.yml
index df349f6eb61..8571931e73a 100644
--- a/modules/backlogs/config/locales/crowdin/de.yml
+++ b/modules/backlogs/config/locales/crowdin/de.yml
@@ -143,8 +143,8 @@ de:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,12 +198,12 @@ de:
add_work_package: Add work package
story_component:
label_drag_story: "%{name} verschieben"
- story_menu_component:
- label_actions: Weitere Aktionen
+ label_actions: Story actions
+ story_menu_list_component:
action_menu:
- copy_url_to_clipboard: URL in die Zwischenablage kopieren
- copy_work_package_id: Arbeitspaket-ID kopieren
- move_menu: Verschieben
+ copy_url_to_clipboard: Copy URL to clipboard
+ copy_work_package_id: Copy work package ID
+ move_menu: Move
backlogs_points_burn_direction: Burnup/-down Punkte
backlogs_product_backlog: Produkt-Backlog
backlogs_story: Story
diff --git a/modules/backlogs/config/locales/crowdin/el.yml b/modules/backlogs/config/locales/crowdin/el.yml
index 85b48e33983..40291f5bacb 100644
--- a/modules/backlogs/config/locales/crowdin/el.yml
+++ b/modules/backlogs/config/locales/crowdin/el.yml
@@ -143,8 +143,8 @@ el:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ el:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/eo.yml b/modules/backlogs/config/locales/crowdin/eo.yml
index cedca4fa28a..9ae0c131e7a 100644
--- a/modules/backlogs/config/locales/crowdin/eo.yml
+++ b/modules/backlogs/config/locales/crowdin/eo.yml
@@ -143,8 +143,8 @@ eo:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ eo:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/es.yml b/modules/backlogs/config/locales/crowdin/es.yml
index fc1a6d5ecaa..5195e9e240a 100644
--- a/modules/backlogs/config/locales/crowdin/es.yml
+++ b/modules/backlogs/config/locales/crowdin/es.yml
@@ -33,11 +33,11 @@ es:
name: Nombre del sprint
sharing: Uso compartido
statuses:
- in_planning: In planning
- active: Active
- completed: Completed
+ in_planning: En planificación
+ active: Activo
+ completed: Completado
project:
- sprint_sharing: Sprint sharing
+ sprint_sharing: Compartir Sprint
sprint:
duration: Duración del sprint
user_preference:
@@ -50,16 +50,16 @@ es:
story_points: Puntos de Historia
errors:
messages:
- must_be_in_planning: must be in planning to start.
+ must_be_in_planning: debe estar en planificación para comenzar.
only_one_active_sprint_allowed: solo se permite un sprint activo por proyecto.
- dates_required: Start and finish dates are required in order to start the sprint.
+ dates_required: Es necesario indicar las fechas de inicio y finalización para poder comenzar el sprint.
models:
project:
- receiving_sprints: is receiving shared sprints. Own sprints cannot be created.
+ receiving_sprints: estás recibiendo sprints compartidos. No se pueden crear sprints propios.
attributes:
sprint_sharing:
- share_all_projects_already_taken: cannot be set because project "%{name}" is already sharing with all projects.
- share_all_projects_already_taken_anonymous: cannot be set because another project is already sharing with all projects.
+ share_all_projects_already_taken: no se puede establecer porque el proyecto "%{name}" ya está compartiendo con todos los proyectos.
+ share_all_projects_already_taken_anonymous: no se puede establecer porque otro proyecto ya está compartiendo con todos los proyectos.
work_package:
attributes:
blocks_ids:
@@ -68,17 +68,17 @@ es:
version_id:
task_version_must_be_the_same_as_story_version: debe coincidir con la versión de la historia principal.
sprint:
- not_shared_with_project: is not shared with the project the work package is in.
- not_eligible_for_moving: is not an active sprint in the project which holds the sprint the work package is moved out of.
+ not_shared_with_project: no se comparte con el proyecto en el que se encuentra el paquete de trabajo.
+ not_eligible_for_moving: no es un sprint activo en el proyecto que tiene el sprint del que se desplaza el paquete de trabajo.
agile/sprint:
attributes:
base:
unfinished_work_packages:
- one: There is %{count} work package that was not completed in this sprint.
- other: There are %{count} work packages that were not completed in this sprint.
+ one: Hay %{count} paquete de trabajo que no se completó en este sprint.
+ other: Hay %{count} paquetes de trabajo que no se completaron en este sprint.
format: "%{message}"
status:
- not_active: is not active so it cannot be closed.
+ not_active: no está activo, por lo que no puede cerrarse.
sprint:
cannot_end_before_it_starts: El sprint no puede terminar antes del inicio.
models:
@@ -90,14 +90,14 @@ es:
caption_sprints_default_fold_state: Sprints will not be expanded by default when viewing the 'Backlog and sprints' page. Each one has to be manually expanded.
column_width: Ancho de columna
definition_of_done: Criterio de Aceptación
- definition_of_done_caption: Work packages with these statuses are treated as completed in backlog views and reporting.
- done_status: Done status
- sharing_description: This project can either share its own sprints, receive shared sprints or handle sprints independently (no sharing).
- sharing: Sharing
+ definition_of_done_caption: Los paquetes de trabajo con estos estados se tratan como completados en las vistas de backlog y en los informes.
+ done_status: Estado completado
+ sharing_description: Este proyecto puede compartir sus propios sprints, recibir sprints compartidos o gestionar los sprints de forma independiente (sin compartir).
+ sharing: Uso compartido
impediment: Impedimento
label_versions_default_fold_state: Mostrar versiones colapsadas
- label_burndown_chart: Burndown chart
- label_sprint_board: Sprint board
+ label_burndown_chart: Diagrama Burndown
+ label_sprint_board: Tablero Sprint
work_package_is_closed: El paquete de trabajo esta terminado, cuando
label_is_done_status: El estado %{status_name} significa completado
points_label:
@@ -108,7 +108,7 @@ es:
rebuild: Reconstruir
rebuild_positions: Reconstruir posiciones
remaining_hours: Trabajo restante
- show_burndown_chart: Burndown chart
+ show_burndown_chart: Diagrama Burndown
story: Historia
story_points:
one: "%{count} punto de historia"
@@ -117,8 +117,8 @@ es:
task_color: Color de la tarea
unassigned: No asignado
administration_blankslate:
- title: Backlog admin settings are evolving
- text: We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available.
+ title: Las opciones de configuración de Backlog están cambiando
+ text: Ahora mismo estamos rediseñando el módulo «Backlogs». La configuración de administración para los sprints y los backlogs estará disponible aquí en breve. La configuración a nivel de proyecto sigue estando disponible.
user_preference:
header_backlogs: Módulo de trabajos pendientes
button_update_backlogs: Actualizar módulo de trabajos pendientes
@@ -135,23 +135,23 @@ es:
one: "%{count} historia en backlog"
other: "%{count} historias en backlog"
inbox_component:
- blankslate_title: Backlog inbox is empty
- blankslate_description: All open work packages in this project will automatically appear here.
- label_drag_work_package: Move %{name}
+ blankslate_title: La bandeja de entrada de backlog está vacía
+ blankslate_description: Todos los paquetes de trabajo abiertos en este proyecto aparecerán automáticamente aquí.
+ label_drag_work_package: Mover %{name}
show_more:
- one: Show 1 more item
- other: Show %{count} more items
+ one: Mostrar 1 artículo más
+ other: Mostrar %{count} artículos más
inbox_item_component:
- label_drag_work_package: Move %{name}
+ label_drag_work_package: Mover %{name}
+ label_actions: Acciones del paquete de trabajo
inbox_menu_component:
- label_actions: Work package actions
action_menu:
- copy_url_to_clipboard: Copy URL to clipboard
- copy_work_package_id: Copy work package ID
- move_menu: Move
- label_move_to_sprint: Move to sprint
+ copy_url_to_clipboard: Copiar URL al portapapeles
+ copy_work_package_id: Copia del ID del paquete de trabajo
+ move_menu: Mover
+ label_move_to_sprint: Mover al sprint
move_to_sprint_dialog_component:
- title: Move to sprint
+ title: Mover al sprint
label_sprint: Sprint
backlog:
blankslate:
@@ -164,10 +164,10 @@ es:
receive_shared_no_actions_description_text: This project receives shared sprints from a different project, but none are available right now.
settings_link_text: project settings
sprint_header_component:
- label_start_sprint: Start
- label_complete_sprint: Complete
- start_sprint_disabled_reason_active_sprint: Another sprint is already active.
- start_sprint_disabled_reason_missing_dates: Start and finish dates are required in order to start the sprint.
+ label_start_sprint: Iniciar
+ label_complete_sprint: Completar
+ start_sprint_disabled_reason_active_sprint: Otro sprint ya está activo.
+ start_sprint_disabled_reason_missing_dates: Es necesario indicar las fechas de inicio y finalización para poder comenzar el sprint.
label_story_count:
zero: No hay historias en sprint
one: "%{count} historia en sprint"
@@ -182,28 +182,28 @@ es:
wiki: Wiki
properties: Propiedades
finish_sprint_dialog_component:
- title: There are work in progress items
- body: "%{message} What would you like to do with these?"
- legend: Action for unfinished work packages
+ title: Hay elementos en curso
+ body: "%{message} ¿Qué te gustaría hacer con ellos?"
+ legend: Acción para los paquetes de trabajo inacabados
actions:
- move_to_top_of_backlog: Move them to the top of the backlog
- move_to_bottom_of_backlog: Move them to the bottom of the backlog
- move_to_sprint: Move them to another sprint
- select_sprint_label: Select sprint
- button_complete_sprint: Complete sprint
+ move_to_top_of_backlog: Muévelos a la parte superior del backlog
+ move_to_bottom_of_backlog: Muévelos a la parte inferior del backlog
+ move_to_sprint: Muévelos a otro sprint
+ select_sprint_label: Seleccionar sprint
+ button_complete_sprint: Completar sprint
sprint_menu_component:
label_actions: Acciones de sprint
action_menu:
edit_sprint: Editar sprint
- add_work_package: Add work package
+ add_work_package: Añadir paquete de trabajo
story_component:
label_drag_story: Mover %{name}
- story_menu_component:
- label_actions: Acciones de la historia
+ label_actions: Acciones de historia
+ story_menu_list_component:
action_menu:
- copy_url_to_clipboard: Copy URL to clipboard
- copy_work_package_id: Copy work package ID
- move_menu: Move
+ copy_url_to_clipboard: Copiar URL al portapapeles
+ copy_work_package_id: Copia del ID del paquete de trabajo
+ move_menu: Mover
backlogs_points_burn_direction: Puntos de quemado arriba/abajo
backlogs_product_backlog: Cartera de producto
backlogs_story: Historia
@@ -224,27 +224,27 @@ es:
task_type:
cannot_be_story_type: no puede ser también un tipo de historia
label_backlog: Backlog
- label_inbox: Inbox
+ label_inbox: Bandeja de entrada
label_backlogs: Backlogs
label_backlogs_unconfigured: Todavía no ha configurado backlogs. Por favor, visite %{administration} > %{plugins}, luego haga clic en el enlace de %{configure} para esta extensión. Cuando haya establecido los campos, vuelva a esta página para empezar a usar la herramienta.
label_blocks_ids: ID de los paquetes de trabajo bloqueados
- label_burndown_chart: Burndown chart
+ label_burndown_chart: Diagrama Burndown
label_column_in_backlog: Columna en backlog
label_used_as_backlog: Se usa como backlog
- label_sprint_board: Sprint board
+ label_sprint_board: Tablero Sprint
label_points_burn_down: Abajo
label_points_burn_up: Arriba
label_sprint_edit: Editar sprint
label_sprint_impediments: Impedimentos de sprint
label_sprint_new: Nuevo sprint
- label_backlog_and_sprints: Backlog and sprints
+ label_backlog_and_sprints: Backlog y sprints
label_task_board: Tablero de tareas
- notice_successful_start: The sprint was started.
- notice_successful_finish: The sprint was completed.
- notice_unsuccessful_start: The sprint could not be started.
- notice_unsuccessful_start_with_reason: 'The sprint could not be started: %{reason}'
- notice_unsuccessful_finish: The sprint could not be completed.
- notice_unsuccessful_finish_with_reason: 'The sprint could not be completed: %{reason}'
+ notice_successful_start: Se inició el sprint.
+ notice_successful_finish: El sprint se completó.
+ notice_unsuccessful_start: El sprint no pudo iniciarse.
+ notice_unsuccessful_start_with_reason: 'El sprint no pudo iniciarse: %{reason}'
+ notice_unsuccessful_finish: El sprint no pudo completarse.
+ notice_unsuccessful_finish_with_reason: 'El sprint no pudo completarse: %{reason}'
permission_create_sprints: Crear sprints
permission_manage_sprint_items: Gestionar elementos de sprint
permission_select_done_statuses: Seleccionar estados de finalización
@@ -257,22 +257,22 @@ es:
backlog_sharing:
options:
no_sharing:
- label: Don't share
- caption: Sprints created in this project will only be available and visible to this project. They will also not be visible to subprojects.
+ label: No compartir
+ caption: Los sprints creados en este proyecto sólo estarán disponibles y visibles para este proyecto. Tampoco serán visibles para los subproyectos.
receive_shared:
- label: Receive shared sprints
- caption: This project can only use sprints shared by other projects.
- warning: This project can only use sprints shared by other projects. Unused sprints created in this project in the past, will no longer be visible.
+ label: Recibir sprints compartidos
+ caption: Este proyecto sólo puede utilizar sprints compartidos por otros proyectos.
+ warning: Este proyecto sólo puede utilizar sprints compartidos por otros proyectos. Los sprints no utilizados creados previamente en este proyecto ya no serán visibles.
share_all_projects:
- label: All projects
- caption: Sprints created in this project will be available to all projects in this instance. If you select this option, it will no longer be available to other projects.
- disabled_caption: Option not available since project "%{name}" is currently sharing with all projects and only one project can do this.
- disabled_caption_anonymous: Option not available since another project is currently sharing with all projects and only one project can do this.
+ label: Todos los proyectos
+ caption: Los sprints creados en este proyecto estarán disponibles para todos los proyectos de esta instancia. Si seleccionas esta opción, dejará de estar disponible para otros proyectos.
+ disabled_caption: Esta opción no está disponible porque el proyecto «%{name}» se está compartiendo actualmente con todos los proyectos y solo un proyecto puede hacerlo.
+ disabled_caption_anonymous: Esta opción no está disponible porque otro proyecto ya la está compartiendo con todos los proyectos, y solo un proyecto puede hacerlo.
share_subprojects:
- label: Subprojects
- caption: Sprints created in this project will be available to all subprojects of the current project.
- info: Sharing a sprint will share the name, status and the start and finish dates in all projects. These cannot be modified in projects that receive and use these sprints.
- sprint_sharing: Share sprints
+ label: Subproyectos
+ caption: Los sprints creados en este proyecto estarán disponibles para todos los subproyectos del proyecto actual.
+ info: Al compartir un sprint, se compartirán el nombre, el estado y las fechas de inicio y finalización en todos los proyectos. Estos datos no se pueden modificar en los proyectos que reciben y utilizan estos sprints.
+ sprint_sharing: Compartir sprints
rb_burndown_charts:
show:
blankslate_title: No hay datos de trabajo pendiente disponibles
diff --git a/modules/backlogs/config/locales/crowdin/et.yml b/modules/backlogs/config/locales/crowdin/et.yml
index 276fb10d3e4..9565739834c 100644
--- a/modules/backlogs/config/locales/crowdin/et.yml
+++ b/modules/backlogs/config/locales/crowdin/et.yml
@@ -143,8 +143,8 @@ et:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ et:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/eu.yml b/modules/backlogs/config/locales/crowdin/eu.yml
index 46de3af2bfb..09722615073 100644
--- a/modules/backlogs/config/locales/crowdin/eu.yml
+++ b/modules/backlogs/config/locales/crowdin/eu.yml
@@ -143,8 +143,8 @@ eu:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ eu:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/fa.yml b/modules/backlogs/config/locales/crowdin/fa.yml
index bb63e7a3900..fe628e53b81 100644
--- a/modules/backlogs/config/locales/crowdin/fa.yml
+++ b/modules/backlogs/config/locales/crowdin/fa.yml
@@ -143,8 +143,8 @@ fa:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ fa:
add_work_package: Add work package
story_component:
label_drag_story: انتقال %{name}
- story_menu_component:
- label_actions: اقدامات داستانی
+ label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/fi.yml b/modules/backlogs/config/locales/crowdin/fi.yml
index 82c92ab2bcd..18e284b0f7b 100644
--- a/modules/backlogs/config/locales/crowdin/fi.yml
+++ b/modules/backlogs/config/locales/crowdin/fi.yml
@@ -143,8 +143,8 @@ fi:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ fi:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/fil.yml b/modules/backlogs/config/locales/crowdin/fil.yml
index aa3a1e0cc23..ed9d94570b9 100644
--- a/modules/backlogs/config/locales/crowdin/fil.yml
+++ b/modules/backlogs/config/locales/crowdin/fil.yml
@@ -143,8 +143,8 @@ fil:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ fil:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/fr.yml b/modules/backlogs/config/locales/crowdin/fr.yml
index c0fe74318a4..ee04b56c367 100644
--- a/modules/backlogs/config/locales/crowdin/fr.yml
+++ b/modules/backlogs/config/locales/crowdin/fr.yml
@@ -41,8 +41,8 @@ fr:
sprint:
duration: Durée du sprint
user_preference:
- backlogs_task_color: Task color
- backlogs_versions_default_fold_state: Show sprints folded
+ backlogs_task_color: Couleur de la tâche
+ backlogs_versions_default_fold_state: Afficher les sprints repliés
work_package:
backlogs_work_package_type: Type de backlog
position: Position
@@ -69,13 +69,13 @@ fr:
task_version_must_be_the_same_as_story_version: doit être identique à la version de l'histoire parente.
sprint:
not_shared_with_project: n'est pas partagé avec le projet dans lequel se trouve le lot de travaux.
- not_eligible_for_moving: is not an active sprint in the project which holds the sprint the work package is moved out of.
+ not_eligible_for_moving: n'est pas un sprint actif dans le projet qui contient le sprint duquel le lot de travail est déplacé.
agile/sprint:
attributes:
base:
unfinished_work_packages:
- one: Il y a %{count} work package qui n'a pas été achevé dans ce sprint.
- other: There are %{count} work packages that were not completed in this sprint.
+ one: Il y a %{count} lot de travaux qui n'a pas été achevé dans ce sprint.
+ other: Il y a %{count} lots de travaux qui n'ont pas été achevés dans ce sprint.
format: "%{message}"
status:
not_active: n'est pas actif et ne peut donc pas être fermé.
@@ -87,7 +87,7 @@ fr:
task_type: Type de tâche
backlogs:
any: tout
- caption_sprints_default_fold_state: Sprints will not be expanded by default when viewing the 'Backlog and sprints' page. Each one has to be manually expanded.
+ caption_sprints_default_fold_state: Les sprints ne sont pas développés par défaut lorsque vous consultez la page « Backlog et sprints ». Chacun d'entre eux doit être développé manuellement.
column_width: Largeur de colonne
definition_of_done: Définition de Fait
definition_of_done_caption: Les work packages ayant ces statuts sont traités comme terminés dans les vues du carnet de commandes et dans les rapports.
@@ -96,8 +96,8 @@ fr:
sharing: Partage
impediment: Obstacle
label_versions_default_fold_state: Afficher les versions de manière repliée
- label_burndown_chart: Burndown chart
- label_sprint_board: Sprint board
+ label_burndown_chart: Graphique burndown
+ label_sprint_board: Tableau de sprint
work_package_is_closed: Le lot de travaux est fait lorsque
label_is_done_status: Le statut %{status_name} signifie fait
points_label:
@@ -108,7 +108,7 @@ fr:
rebuild: Reconstruire
rebuild_positions: Reconstruire les positions
remaining_hours: Travail restant
- show_burndown_chart: Burndown chart
+ show_burndown_chart: Graphique burndown
story: Histoire
story_points:
one: "%{count} story point"
@@ -143,8 +143,8 @@ fr:
other: Afficher %{count} articles supplémentaires
inbox_item_component:
label_drag_work_package: Déplacer %{name}
+ label_actions: Actions du lot de travaux
inbox_menu_component:
- label_actions: Work package actions
action_menu:
copy_url_to_clipboard: Copier l'URL dans le presse-papier
copy_work_package_id: Copier l'ID du lot de travail
@@ -155,19 +155,19 @@ fr:
label_sprint: Sprint
backlog:
blankslate:
- title: No sprints present yet
- description_html: To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project.
- create_sprint_description_text: To start planning your sprint, create one here.
- share_sprint_description_html: To start planning your sprint, go to the %{settings_link} to receive sprints from a different project.
- no_actions_description_text: No sprints are available for this project yet.
- receive_shared_description_html: This project receives sprints from a different project. Manage this in the %{settings_link}.
- receive_shared_no_actions_description_text: This project receives shared sprints from a different project, but none are available right now.
- settings_link_text: project settings
+ title: Il n'y a pas encore de sprints
+ description_html: Pour commencer à planifier votre sprint, créez-en un ici ou rendez-vous sur %{settings_link} pour recevoir les sprints d'un autre projet.
+ create_sprint_description_text: Pour commencer à planifier votre sprint, créez-en un ici.
+ share_sprint_description_html: Pour commencer à planifier votre sprint, rendez-vous sur %{settings_link} pour recevoir les sprints d'un autre projet.
+ no_actions_description_text: Il n'y a pas encore de sprints disponibles pour ce projet.
+ receive_shared_description_html: Ce projet reçoit des sprints d'un autre projet. Gérez cela à l'adresse %{settings_link}.
+ receive_shared_no_actions_description_text: Ce projet reçoit des sprints partagés d'un autre projet, mais aucun n'est disponible pour le moment.
+ settings_link_text: paramètres du projet
sprint_header_component:
- label_start_sprint: Start
- label_complete_sprint: Complete
- start_sprint_disabled_reason_active_sprint: Another sprint is already active.
- start_sprint_disabled_reason_missing_dates: Start and finish dates are required in order to start the sprint.
+ label_start_sprint: Début
+ label_complete_sprint: Terminé
+ start_sprint_disabled_reason_active_sprint: Un autre sprint est déjà actif.
+ start_sprint_disabled_reason_missing_dates: Les dates de début et de fin sont nécessaires pour lancer le sprint.
label_story_count:
zero: Aucune story dans le sprint
one: "%{count} story dans le sprint"
@@ -190,7 +190,7 @@ fr:
move_to_bottom_of_backlog: Déplacez-les en bas du backlog
move_to_sprint: Déplacez-les vers un autre sprint
select_sprint_label: Sélectionnez le sprint
- button_complete_sprint: Complete sprint
+ button_complete_sprint: Terminer le sprint
sprint_menu_component:
label_actions: Actions du sprint
action_menu:
@@ -198,11 +198,11 @@ fr:
add_work_package: Ajouter un lot de travaux
story_component:
label_drag_story: Déplacer %{name}
- story_menu_component:
- label_actions: Actions de l'histoire
+ label_actions: Actions du récit
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copier l'URL dans le presse-papier
- copy_work_package_id: Copier le lot de travaux
+ copy_work_package_id: Copier l'ID du lot de travail
move_menu: Déplacer
backlogs_points_burn_direction: Les points évoluent vers le haut/bas
backlogs_product_backlog: Backlog de produit
@@ -228,16 +228,16 @@ fr:
label_backlogs: Backlogs
label_backlogs_unconfigured: Vous n'avez pas encore configuré Backlogs. Veuillez vous rendre dans %{administration} > %{plugins}, puis cliquer sur le lien %{configure} pour ce plugin. Une fois que vous avez défini les champs, revenez sur cette page pour commencer à utiliser l'outil.
label_blocks_ids: ID des lots de travaux bloqués
- label_burndown_chart: Burndown chart
+ label_burndown_chart: Graphique burndown
label_column_in_backlog: Colonne dans le backlog
label_used_as_backlog: Utilisé comme backlog
- label_sprint_board: Sprint board
+ label_sprint_board: Tableau de sprint
label_points_burn_down: Vers le bas
label_points_burn_up: Vers le haut
label_sprint_edit: Modifier le sprint
label_sprint_impediments: Obstacles de sprint
label_sprint_new: Nouveau sprint
- label_backlog_and_sprints: Backlog and sprints
+ label_backlog_and_sprints: Backlog et sprints
label_task_board: Tableau des tâches
notice_successful_start: Le sprint a commencé.
notice_successful_finish: Le sprint est terminé.
diff --git a/modules/backlogs/config/locales/crowdin/he.yml b/modules/backlogs/config/locales/crowdin/he.yml
index 1b0cca09ed3..c33d4bda277 100644
--- a/modules/backlogs/config/locales/crowdin/he.yml
+++ b/modules/backlogs/config/locales/crowdin/he.yml
@@ -151,8 +151,8 @@ he:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -206,8 +206,8 @@ he:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/hi.yml b/modules/backlogs/config/locales/crowdin/hi.yml
index 4ebd664d936..3809e2374ed 100644
--- a/modules/backlogs/config/locales/crowdin/hi.yml
+++ b/modules/backlogs/config/locales/crowdin/hi.yml
@@ -143,8 +143,8 @@ hi:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ hi:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/hr.yml b/modules/backlogs/config/locales/crowdin/hr.yml
index a52bd6ac293..731e42deb27 100644
--- a/modules/backlogs/config/locales/crowdin/hr.yml
+++ b/modules/backlogs/config/locales/crowdin/hr.yml
@@ -147,8 +147,8 @@ hr:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -202,8 +202,8 @@ hr:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/hu.yml b/modules/backlogs/config/locales/crowdin/hu.yml
index a932415e711..6e1ae3df74b 100644
--- a/modules/backlogs/config/locales/crowdin/hu.yml
+++ b/modules/backlogs/config/locales/crowdin/hu.yml
@@ -143,8 +143,8 @@ hu:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ hu:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/id.yml b/modules/backlogs/config/locales/crowdin/id.yml
index e32ca9cc479..44d1998cf71 100644
--- a/modules/backlogs/config/locales/crowdin/id.yml
+++ b/modules/backlogs/config/locales/crowdin/id.yml
@@ -139,8 +139,8 @@ id:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -194,8 +194,8 @@ id:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/it.yml b/modules/backlogs/config/locales/crowdin/it.yml
index 32d3484de70..d16dcea4c60 100644
--- a/modules/backlogs/config/locales/crowdin/it.yml
+++ b/modules/backlogs/config/locales/crowdin/it.yml
@@ -33,16 +33,16 @@ it:
name: Nome dello sprint
sharing: Condivisione
statuses:
- in_planning: In planning
- active: Active
- completed: Completed
+ in_planning: In pianificazione
+ active: Attivo
+ completed: Completato
project:
- sprint_sharing: Sprint sharing
+ sprint_sharing: Condivisione dello sprint
sprint:
duration: Durata dello sprint
user_preference:
- backlogs_task_color: Task color
- backlogs_versions_default_fold_state: Show sprints folded
+ backlogs_task_color: Colore attività
+ backlogs_versions_default_fold_state: Mostra gli sprint compressi
work_package:
backlogs_work_package_type: Tipo di backlog
position: Posizione
@@ -50,16 +50,16 @@ it:
story_points: Punti della storia
errors:
messages:
- must_be_in_planning: must be in planning to start.
+ must_be_in_planning: deve essere in pianificazione per iniziare.
only_one_active_sprint_allowed: è consentito un solo sprint attivo per progetto.
- dates_required: Start and finish dates are required in order to start the sprint.
+ dates_required: Per avviare lo sprint sono necessarie le date di inizio e fine.
models:
project:
- receiving_sprints: is receiving shared sprints. Own sprints cannot be created.
+ receiving_sprints: riceve sprint condivisi. Non è possibile creare sprint propri.
attributes:
sprint_sharing:
- share_all_projects_already_taken: cannot be set because project "%{name}" is already sharing with all projects.
- share_all_projects_already_taken_anonymous: cannot be set because another project is already sharing with all projects.
+ share_all_projects_already_taken: non può essere impostato perché il progetto "%{name}" è già condiviso con tutti i progetti.
+ share_all_projects_already_taken_anonymous: non può essere impostato perché un altro progetto è già condiviso con tutti i progetti.
work_package:
attributes:
blocks_ids:
@@ -68,17 +68,17 @@ it:
version_id:
task_version_must_be_the_same_as_story_version: deve essere uguale alla versione della storia del genitore.
sprint:
- not_shared_with_project: is not shared with the project the work package is in.
- not_eligible_for_moving: is not an active sprint in the project which holds the sprint the work package is moved out of.
+ not_shared_with_project: non è condiviso con il progetto in cui si trova la macro-attività.
+ not_eligible_for_moving: non è uno sprint attivo nel progetto che contiene lo sprint da cui la macro-attività viene spostata.
agile/sprint:
attributes:
base:
unfinished_work_packages:
- one: There is %{count} work package that was not completed in this sprint.
- other: There are %{count} work packages that were not completed in this sprint.
+ one: C'è %{count} macro-attività che non è stata completata in questo sprint.
+ other: Ci sono %{count} macro-attività che non sono state completate in questo sprint.
format: "%{message}"
status:
- not_active: is not active so it cannot be closed.
+ not_active: non è attivo, quindi non può essere chiuso.
sprint:
cannot_end_before_it_starts: Uno sprint non può terminare prima che venga avviato.
models:
@@ -87,17 +87,17 @@ it:
task_type: Tipo di attività
backlogs:
any: qualsiasi
- caption_sprints_default_fold_state: Sprints will not be expanded by default when viewing the 'Backlog and sprints' page. Each one has to be manually expanded.
+ caption_sprints_default_fold_state: Gli sprint non verranno espansi automaticamente nella pagina "Backlog e sprint". Ognuno dovrà essere espanso manualmente.
column_width: Larghezza della colonna
definition_of_done: Definizione di fatto
- definition_of_done_caption: Work packages with these statuses are treated as completed in backlog views and reporting.
- done_status: Done status
- sharing_description: This project can either share its own sprints, receive shared sprints or handle sprints independently (no sharing).
- sharing: Sharing
+ definition_of_done_caption: Le macro-attività con questi stati sono considerate completate nelle viste backlog e nei report.
+ done_status: Stato Fatto
+ sharing_description: Questo progetto può condividere i propri sprint, ricevere sprint condivisi oppure gestire gli sprint in modo indipendente (senza condivisione).
+ sharing: Condivisione
impediment: Impedimento
label_versions_default_fold_state: Espandi le versioni
- label_burndown_chart: Burndown chart
- label_sprint_board: Sprint board
+ label_burndown_chart: Grafico Burndown
+ label_sprint_board: Bacheca sprint
work_package_is_closed: Il pacchetto di lavoro è fatto, quando
label_is_done_status: Lo stato %{status_name} vuol dire completato
points_label:
@@ -108,7 +108,7 @@ it:
rebuild: Ricostruisci
rebuild_positions: Ricostruisce le posizioni
remaining_hours: Lavoro residuo
- show_burndown_chart: Burndown chart
+ show_burndown_chart: Grafico Burndown
story: Storia
story_points:
one: "%{count} punto story"
@@ -117,8 +117,8 @@ it:
task_color: Colore attività
unassigned: Non assegnato
administration_blankslate:
- title: Backlog admin settings are evolving
- text: We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available.
+ title: Le impostazioni amministrative del backlog sono in divenire
+ text: Stiamo attualmente riprogettando il modulo Backlog. Le impostazioni amministrative per sprint e backlog saranno presto disponibili qui. Le impostazioni a livello di progetto restano disponibili.
user_preference:
header_backlogs: Modulo backlog
button_update_backlogs: Aggiorna il modulo backlog
@@ -135,39 +135,39 @@ it:
one: "%{count} story nel backlog"
other: "%{count} story nel backlog"
inbox_component:
- blankslate_title: Backlog inbox is empty
- blankslate_description: All open work packages in this project will automatically appear here.
- label_drag_work_package: Move %{name}
+ blankslate_title: La casella del backlog è vuota
+ blankslate_description: Tutte le macro-attività aperte in questo progetto verranno visualizzate automaticamente qui.
+ label_drag_work_package: Sposta %{name}
show_more:
- one: Show 1 more item
- other: Show %{count} more items
+ one: Mostra 1 altro elemento
+ other: Mostra altri %{count} elementi
inbox_item_component:
- label_drag_work_package: Move %{name}
- inbox_menu_component:
+ label_drag_work_package: Sposta %{name}
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
- copy_url_to_clipboard: Copy URL to clipboard
- copy_work_package_id: Copy work package ID
- move_menu: Move
- label_move_to_sprint: Move to sprint
+ copy_url_to_clipboard: Copia URL negli appunti
+ copy_work_package_id: Copia ID macro-attività
+ move_menu: Sposta
+ label_move_to_sprint: Sposta nello sprint
move_to_sprint_dialog_component:
- title: Move to sprint
+ title: Sposta nello sprint
label_sprint: Sprint
backlog:
blankslate:
- title: No sprints present yet
- description_html: To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project.
- create_sprint_description_text: To start planning your sprint, create one here.
- share_sprint_description_html: To start planning your sprint, go to the %{settings_link} to receive sprints from a different project.
- no_actions_description_text: No sprints are available for this project yet.
- receive_shared_description_html: This project receives sprints from a different project. Manage this in the %{settings_link}.
- receive_shared_no_actions_description_text: This project receives shared sprints from a different project, but none are available right now.
- settings_link_text: project settings
+ title: Non ci sono ancora sprint
+ description_html: Per iniziare a pianificare il tuo sprint, creane uno qui oppure vai alle %{settings_link} per ricevere sprint da un altro progetto.
+ create_sprint_description_text: Per iniziare a pianificare il tuo sprint, creane uno qui.
+ share_sprint_description_html: Per iniziare a pianificare il tuo sprint, vai alle %{settings_link} per ricevere sprint da un altro progetto.
+ no_actions_description_text: Non ci sono ancora sprint disponibili per questo progetto.
+ receive_shared_description_html: Questo progetto riceve sprint da un altro progetto. Gestisci questa impostazione nelle %{settings_link}.
+ receive_shared_no_actions_description_text: Questo progetto riceve sprint condivisi da un altro progetto, ma al momento non sono disponibili.
+ settings_link_text: impostazioni del progetto
sprint_header_component:
- label_start_sprint: Start
- label_complete_sprint: Complete
- start_sprint_disabled_reason_active_sprint: Another sprint is already active.
- start_sprint_disabled_reason_missing_dates: Start and finish dates are required in order to start the sprint.
+ label_start_sprint: Inizio
+ label_complete_sprint: Completo
+ start_sprint_disabled_reason_active_sprint: Un altro sprint è già attivo.
+ start_sprint_disabled_reason_missing_dates: Per avviare lo sprint sono necessarie le date di inizio e fine.
label_story_count:
zero: Nessuna story nello sprint
one: "%{count} story nello sprint"
@@ -182,24 +182,24 @@ it:
wiki: Wiki
properties: Proprietà
finish_sprint_dialog_component:
- title: There are work in progress items
- body: "%{message} What would you like to do with these?"
- legend: Action for unfinished work packages
+ title: Ci sono elementi in corso
+ body: "%{message} Cosa desideri fare con questi?"
+ legend: Azione per le macro-attività non completate
actions:
- move_to_top_of_backlog: Move them to the top of the backlog
- move_to_bottom_of_backlog: Move them to the bottom of the backlog
- move_to_sprint: Move them to another sprint
- select_sprint_label: Select sprint
- button_complete_sprint: Complete sprint
+ move_to_top_of_backlog: Spostale in cima al backlog
+ move_to_bottom_of_backlog: Spostale in fondo al backlog
+ move_to_sprint: Spostale in un altro sprint
+ select_sprint_label: Seleziona sprint
+ button_complete_sprint: Completa lo sprint
sprint_menu_component:
label_actions: Azioni dello sprint
action_menu:
edit_sprint: Modifica sprint
- add_work_package: Add work package
+ add_work_package: Aggiungi macro-attività
story_component:
label_drag_story: Sposta %{name}
- story_menu_component:
- label_actions: Azioni della story
+ label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -224,27 +224,27 @@ it:
task_type:
cannot_be_story_type: non può essere anche un tipo di storia
label_backlog: Backlog
- label_inbox: Inbox
+ label_inbox: Posta in arrivo
label_backlogs: Backlog
label_backlogs_unconfigured: Non hai ancora configurato i Backlog. Vai su %{administration} > %{plugins}, quindi fai clic sul link %{configure} per il plugin. Dopo aver impostato i campi, torna su questa pagina per iniziare a utilizzare lo strumento.
label_blocks_ids: ID dei pacchetti di lavoro bloccati
- label_burndown_chart: Burndown chart
+ label_burndown_chart: Grafico Burndown
label_column_in_backlog: Colonna nel backlog
label_used_as_backlog: Usato come backlog
- label_sprint_board: Sprint board
+ label_sprint_board: Bacheca sprint
label_points_burn_down: Verso il basso
label_points_burn_up: Verso l'alto
label_sprint_edit: Modifica sprint
label_sprint_impediments: Impedimenti allo sprint
label_sprint_new: Nuovo sprint
- label_backlog_and_sprints: Backlog and sprints
+ label_backlog_and_sprints: Backlog e sprint
label_task_board: Pannello delle attività
- notice_successful_start: The sprint was started.
- notice_successful_finish: The sprint was completed.
- notice_unsuccessful_start: The sprint could not be started.
- notice_unsuccessful_start_with_reason: 'The sprint could not be started: %{reason}'
- notice_unsuccessful_finish: The sprint could not be completed.
- notice_unsuccessful_finish_with_reason: 'The sprint could not be completed: %{reason}'
+ notice_successful_start: Lo sprint è stato avviato.
+ notice_successful_finish: Lo sprint è stato completato.
+ notice_unsuccessful_start: Impossibile avviare lo sprint.
+ notice_unsuccessful_start_with_reason: 'Impossibile avviare lo sprint: %{reason}'
+ notice_unsuccessful_finish: Impossibile completare lo sprint.
+ notice_unsuccessful_finish_with_reason: 'Impossibile completare lo sprint: %{reason}'
permission_create_sprints: Crea gli sprint
permission_manage_sprint_items: Gestisci gli elementi dello sprint
permission_select_done_statuses: Seleziona gli stati terminati
@@ -257,22 +257,22 @@ it:
backlog_sharing:
options:
no_sharing:
- label: Don't share
- caption: Sprints created in this project will only be available and visible to this project. They will also not be visible to subprojects.
+ label: Non condividere
+ caption: Gli sprint creati in questo progetto saranno disponibili e visibili solo per questo progetto. Non saranno visibili neanche ai sottoprogetti.
receive_shared:
- label: Receive shared sprints
- caption: This project can only use sprints shared by other projects.
- warning: This project can only use sprints shared by other projects. Unused sprints created in this project in the past, will no longer be visible.
+ label: Ricevi sprint condivisi
+ caption: Questo progetto può utilizzare solo sprint condivisi da altri progetti.
+ warning: Questo progetto può utilizzare solo sprint condivisi da altri progetti. Gli sprint non utilizzati creati in passato in questo progetto non saranno più visibili.
share_all_projects:
- label: All projects
- caption: Sprints created in this project will be available to all projects in this instance. If you select this option, it will no longer be available to other projects.
- disabled_caption: Option not available since project "%{name}" is currently sharing with all projects and only one project can do this.
- disabled_caption_anonymous: Option not available since another project is currently sharing with all projects and only one project can do this.
+ label: Tutti i progetti
+ caption: Gli sprint creati in questo progetto saranno disponibili per tutti i progetti in questa istanza. Se selezioni questa opzione, non saranno più disponibili per altri progetti.
+ disabled_caption: Opzione non disponibile perché il progetto "%{name}" sta attualmente condividendo con tutti i progetti e solo un progetto può farlo.
+ disabled_caption_anonymous: Opzione non disponibile perché un altro progetto sta attualmente condividendo con tutti i progetti e solo un progetto può farlo.
share_subprojects:
- label: Subprojects
- caption: Sprints created in this project will be available to all subprojects of the current project.
- info: Sharing a sprint will share the name, status and the start and finish dates in all projects. These cannot be modified in projects that receive and use these sprints.
- sprint_sharing: Share sprints
+ label: Sottoprogetti
+ caption: Gli sprint creati in questo progetto saranno disponibili per tutti i sottoprogetti del progetto corrente.
+ info: La condivisione di uno sprint comporta la condivisione del nome, dello stato e delle date di inizio e fine in tutti i progetti. Questi non possono essere modificati nei progetti che ricevono e utilizzano tali sprint.
+ sprint_sharing: Condividi sprint
rb_burndown_charts:
show:
blankslate_title: Non sono disponibili dati di burndown
diff --git a/modules/backlogs/config/locales/crowdin/ja.yml b/modules/backlogs/config/locales/crowdin/ja.yml
index 1e3ca7145ff..b907b9a35a5 100644
--- a/modules/backlogs/config/locales/crowdin/ja.yml
+++ b/modules/backlogs/config/locales/crowdin/ja.yml
@@ -139,8 +139,8 @@ ja:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -194,8 +194,8 @@ ja:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/js-ar.yml b/modules/backlogs/config/locales/crowdin/js-ar.yml
index e4c29d15e1e..ae04e57434d 100644
--- a/modules/backlogs/config/locales/crowdin/js-ar.yml
+++ b/modules/backlogs/config/locales/crowdin/js-ar.yml
@@ -26,5 +26,5 @@ ar:
properties:
storyPoints: نقاط القصة
burndown:
- day: Day
- points: Points
+ day: يوم
+ points: نِقَاط
diff --git a/modules/backlogs/config/locales/crowdin/ka.yml b/modules/backlogs/config/locales/crowdin/ka.yml
index 16e5e807a2a..ec574953396 100644
--- a/modules/backlogs/config/locales/crowdin/ka.yml
+++ b/modules/backlogs/config/locales/crowdin/ka.yml
@@ -143,8 +143,8 @@ ka:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ ka:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/kk.yml b/modules/backlogs/config/locales/crowdin/kk.yml
index deebd7d3f1c..0b460e3018d 100644
--- a/modules/backlogs/config/locales/crowdin/kk.yml
+++ b/modules/backlogs/config/locales/crowdin/kk.yml
@@ -143,8 +143,8 @@ kk:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ kk:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/ko.yml b/modules/backlogs/config/locales/crowdin/ko.yml
index 35d3d43f5f3..58b4a1fc7df 100644
--- a/modules/backlogs/config/locales/crowdin/ko.yml
+++ b/modules/backlogs/config/locales/crowdin/ko.yml
@@ -41,8 +41,8 @@ ko:
sprint:
duration: 스프린트 기간
user_preference:
- backlogs_task_color: Task color
- backlogs_versions_default_fold_state: Show sprints folded
+ backlogs_task_color: 작업 색상
+ backlogs_versions_default_fold_state: 접힌 스프린트 표시
work_package:
backlogs_work_package_type: 백로그 유형
position: 위치
@@ -86,7 +86,7 @@ ko:
task_type: 작업 유형
backlogs:
any: 모두
- caption_sprints_default_fold_state: Sprints will not be expanded by default when viewing the 'Backlog and sprints' page. Each one has to be manually expanded.
+ caption_sprints_default_fold_state: "'백로그 및 스프린트' 페이지를 볼 때 스프린트는 기본적으로 확장되지 않습니다. 각각을 수동으로 확장해야 합니다."
column_width: 열 너비
definition_of_done: 완료 정의
definition_of_done_caption: 이러한 상태의 작업 패키지는 백로그 보기 및 보고에서 완료로 처리됩니다.
@@ -139,8 +139,8 @@ ko:
other: "%{count}개 항목 더 보기"
inbox_item_component:
label_drag_work_package: "%{name} 이동"
+ label_actions: Work package actions
inbox_menu_component:
- label_actions: 작업 패키지 액션
action_menu:
copy_url_to_clipboard: 클립보드에 URL 복사
copy_work_package_id: 작업 패키지 ID 복사
@@ -151,14 +151,14 @@ ko:
label_sprint: 스프린트
backlog:
blankslate:
- title: No sprints present yet
- description_html: To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project.
- create_sprint_description_text: To start planning your sprint, create one here.
- share_sprint_description_html: To start planning your sprint, go to the %{settings_link} to receive sprints from a different project.
- no_actions_description_text: No sprints are available for this project yet.
- receive_shared_description_html: This project receives sprints from a different project. Manage this in the %{settings_link}.
- receive_shared_no_actions_description_text: This project receives shared sprints from a different project, but none are available right now.
- settings_link_text: project settings
+ title: 아직 스프린트 없음
+ description_html: 스프린트 계획을 시작하려면 여기에서 스프린트를 만들거나 %{settings_link}(으)로 이동하여 다른 프로젝트의 스프린트를 받아보세요.
+ create_sprint_description_text: 스프린트 계획을 시작하려면 여기에서 스프린트를 생성하세요.
+ share_sprint_description_html: 스프린트 계획을 시작하려면 %{settings_link}(으)로 이동하여 다른 프로젝트의 스프린트를 받아보세요.
+ no_actions_description_text: 아직 이 프로젝트에 사용할 수 있는 스프린트가 없습니다.
+ receive_shared_description_html: 이 프로젝트는 다른 프로젝트에서 스프린트를 받습니다. %{settings_link}에서 관리하세요.
+ receive_shared_no_actions_description_text: 이 프로젝트는 다른 프로젝트에서 공유 스프린트를 받지만, 현재 사용할 수 있는 스프린트가 없습니다.
+ settings_link_text: 프로젝트 설정
sprint_header_component:
label_start_sprint: 시작
label_complete_sprint: 완료
@@ -194,12 +194,12 @@ ko:
add_work_package: 작업 패키지 추가
story_component:
label_drag_story: "%{name} 이동"
- story_menu_component:
- label_actions: 스토리 작업
+ label_actions: Story actions
+ story_menu_list_component:
action_menu:
- copy_url_to_clipboard: 클립보드에 URL 복사
- copy_work_package_id: 작업 패키지 ID 복사
- move_menu: 이동
+ copy_url_to_clipboard: Copy URL to clipboard
+ copy_work_package_id: Copy work package ID
+ move_menu: Move
backlogs_points_burn_direction: 포인트 번 업/다운
backlogs_product_backlog: 제품 백로그
backlogs_story: 스토리
@@ -233,7 +233,7 @@ ko:
label_sprint_edit: 스프린트 편집
label_sprint_impediments: 스프린트 제한
label_sprint_new: 새로운 스프린트
- label_backlog_and_sprints: Backlog and sprints
+ label_backlog_and_sprints: 백로그 및 스프린트
label_task_board: 작업 보드
notice_successful_start: 스프린트가 시작되었습니다.
notice_successful_finish: 스프린트가 완료되었습니다.
diff --git a/modules/backlogs/config/locales/crowdin/lt.yml b/modules/backlogs/config/locales/crowdin/lt.yml
index 0fc922beea1..6701c7548c5 100644
--- a/modules/backlogs/config/locales/crowdin/lt.yml
+++ b/modules/backlogs/config/locales/crowdin/lt.yml
@@ -151,8 +151,8 @@ lt:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -206,8 +206,8 @@ lt:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/lv.yml b/modules/backlogs/config/locales/crowdin/lv.yml
index 0a21aa0bec2..10d2d8b9031 100644
--- a/modules/backlogs/config/locales/crowdin/lv.yml
+++ b/modules/backlogs/config/locales/crowdin/lv.yml
@@ -147,8 +147,8 @@ lv:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -202,8 +202,8 @@ lv:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/mn.yml b/modules/backlogs/config/locales/crowdin/mn.yml
index 8e4e5308534..8bf5bcde5d4 100644
--- a/modules/backlogs/config/locales/crowdin/mn.yml
+++ b/modules/backlogs/config/locales/crowdin/mn.yml
@@ -143,8 +143,8 @@ mn:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ mn:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/ms.yml b/modules/backlogs/config/locales/crowdin/ms.yml
index b8a0ae67f77..3d237286b64 100644
--- a/modules/backlogs/config/locales/crowdin/ms.yml
+++ b/modules/backlogs/config/locales/crowdin/ms.yml
@@ -139,8 +139,8 @@ ms:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -194,8 +194,8 @@ ms:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/ne.yml b/modules/backlogs/config/locales/crowdin/ne.yml
index 9a1c05a49a2..db49945eac4 100644
--- a/modules/backlogs/config/locales/crowdin/ne.yml
+++ b/modules/backlogs/config/locales/crowdin/ne.yml
@@ -143,8 +143,8 @@ ne:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ ne:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/nl.yml b/modules/backlogs/config/locales/crowdin/nl.yml
index 3459ff04be1..314b3d915b7 100644
--- a/modules/backlogs/config/locales/crowdin/nl.yml
+++ b/modules/backlogs/config/locales/crowdin/nl.yml
@@ -143,8 +143,8 @@ nl:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ nl:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/no.yml b/modules/backlogs/config/locales/crowdin/no.yml
index d919cf82d59..ec0850d2da4 100644
--- a/modules/backlogs/config/locales/crowdin/no.yml
+++ b/modules/backlogs/config/locales/crowdin/no.yml
@@ -143,8 +143,8 @@
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/pl.yml b/modules/backlogs/config/locales/crowdin/pl.yml
index ad2fa4171ad..d8f7bc747f7 100644
--- a/modules/backlogs/config/locales/crowdin/pl.yml
+++ b/modules/backlogs/config/locales/crowdin/pl.yml
@@ -151,8 +151,8 @@ pl:
other: Pokaż jeszcze %{count} elementu
inbox_item_component:
label_drag_work_package: Przenieś %{name}
+ label_actions: Work package actions
inbox_menu_component:
- label_actions: Działania pakietu roboczego
action_menu:
copy_url_to_clipboard: Skopiuj adres URL do schowka
copy_work_package_id: Skopiuj identyfikator pakietu roboczego
@@ -206,12 +206,12 @@ pl:
add_work_package: Dodaj pakiet roboczy
story_component:
label_drag_story: Przenieś %{name}
- story_menu_component:
- label_actions: Działania historii
+ label_actions: Story actions
+ story_menu_list_component:
action_menu:
- copy_url_to_clipboard: Skopiuj adres URL do schowka
- copy_work_package_id: Skopiuj identyfikator pakietu roboczego
- move_menu: Przenieś
+ copy_url_to_clipboard: Copy URL to clipboard
+ copy_work_package_id: Copy work package ID
+ move_menu: Move
backlogs_points_burn_direction: Punkty burn up/down
backlogs_product_backlog: Backlog produktu
backlogs_story: Story
diff --git a/modules/backlogs/config/locales/crowdin/pt-BR.yml b/modules/backlogs/config/locales/crowdin/pt-BR.yml
index 03ab7a1f286..c9c46303b4b 100644
--- a/modules/backlogs/config/locales/crowdin/pt-BR.yml
+++ b/modules/backlogs/config/locales/crowdin/pt-BR.yml
@@ -41,8 +41,8 @@ pt-BR:
sprint:
duration: Duração da sprint
user_preference:
- backlogs_task_color: Task color
- backlogs_versions_default_fold_state: Show sprints folded
+ backlogs_task_color: Cor da tarefa
+ backlogs_versions_default_fold_state: Exibir sprints recolhidas
work_package:
backlogs_work_package_type: Tipo de backlog
position: Posição
@@ -50,7 +50,7 @@ pt-BR:
story_points: Pontos de história
errors:
messages:
- must_be_in_planning: deve estar em fase de planejamento para começar.
+ must_be_in_planning: deve estar em planejamento para iniciar.
only_one_active_sprint_allowed: apenas uma sprint ativa é permitida por projeto.
dates_required: As datas de início e término são obrigatórias para iniciar a sprint.
models:
@@ -87,11 +87,11 @@ pt-BR:
task_type: Tipo de tarefa
backlogs:
any: qualquer
- caption_sprints_default_fold_state: Sprints will not be expanded by default when viewing the 'Backlog and sprints' page. Each one has to be manually expanded.
+ caption_sprints_default_fold_state: As sprints não serão expandidas por padrão ao visualizar a página “Backlog e sprints”. Cada uma deve ser expandida manualmente.
column_width: Largura da coluna
definition_of_done: Definição de pronto
- definition_of_done_caption: Os pacotes de trabalho com esses status são considerados concluídos nas visualizações da carteira de projetos e nos relatórios.
- done_status: Status "Concluído"
+ definition_of_done_caption: Pacotes de trabalho com estes status são tratados como concluídos nas visualizações de backlog e nos relatórios.
+ done_status: Status de concluído
sharing_description: Este projeto pode compartilhar suas próprias sprints, receber sprints compartilhadas ou gerenciar sprints de forma independente (sem compartilhamento).
sharing: Compartilhamento
impediment: Impedimento
@@ -143,11 +143,11 @@ pt-BR:
other: Mostrar mais %{count} itens
inbox_item_component:
label_drag_work_package: Mover %{name}
- inbox_menu_component:
label_actions: Ações do pacote de trabalho
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copiar URL para a área de transferência
- copy_work_package_id: Copiar ID do pacotes de trabalho
+ copy_work_package_id: Copiar ID do pacote de trabalho
move_menu: Mover
label_move_to_sprint: Mover para sprint
move_to_sprint_dialog_component:
@@ -155,14 +155,14 @@ pt-BR:
label_sprint: Sprint
backlog:
blankslate:
- title: No sprints present yet
- description_html: To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project.
- create_sprint_description_text: To start planning your sprint, create one here.
- share_sprint_description_html: To start planning your sprint, go to the %{settings_link} to receive sprints from a different project.
- no_actions_description_text: No sprints are available for this project yet.
- receive_shared_description_html: This project receives sprints from a different project. Manage this in the %{settings_link}.
- receive_shared_no_actions_description_text: This project receives shared sprints from a different project, but none are available right now.
- settings_link_text: project settings
+ title: Nenhuma sprint criada até o momento
+ description_html: Para começar a planejar sua sprint, crie uma aqui ou acesse %{settings_link} para receber sprints de outro projeto.
+ create_sprint_description_text: Para começar a planejar sua sprint, crie uma aqui.
+ share_sprint_description_html: Para começar a planejar sua sprint, acesse %{settings_link} para receber sprints de outro projeto.
+ no_actions_description_text: Ainda não há sprints disponíveis para este projeto.
+ receive_shared_description_html: Este projeto recebe sprints de outro projeto. Gerencie isso em %{settings_link}.
+ receive_shared_no_actions_description_text: Este projeto recebe sprints compartilhadas de outro projeto, mas não há nenhum disponível no momento.
+ settings_link_text: configurações do projeto
sprint_header_component:
label_start_sprint: Iniciar
label_complete_sprint: Concluir
@@ -198,11 +198,11 @@ pt-BR:
add_work_package: Adicionar pacote de trabalho
story_component:
label_drag_story: Mover %{name}
- story_menu_component:
label_actions: Ações da história
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copiar URL para a área de transferência
- copy_work_package_id: Copiar ID do pacotes de trabalho
+ copy_work_package_id: Copiar o ID do pacote de trabalho
move_menu: Mover
backlogs_points_burn_direction: Pontos burn up/down
backlogs_product_backlog: Backlog do produto
@@ -237,7 +237,7 @@ pt-BR:
label_sprint_edit: Editar sprint
label_sprint_impediments: Impedimentos da Sprint
label_sprint_new: Nova sprint
- label_backlog_and_sprints: Backlog and sprints
+ label_backlog_and_sprints: Backlog e sprints
label_task_board: Quadro de tarefas
notice_successful_start: A sprint foi iniciada.
notice_successful_finish: A sprint foi concluída.
diff --git a/modules/backlogs/config/locales/crowdin/pt-PT.yml b/modules/backlogs/config/locales/crowdin/pt-PT.yml
index a25ae98d29d..fcb998e69ff 100644
--- a/modules/backlogs/config/locales/crowdin/pt-PT.yml
+++ b/modules/backlogs/config/locales/crowdin/pt-PT.yml
@@ -143,8 +143,8 @@ pt-PT:
other: Mostrar mais %{count} elementos
inbox_item_component:
label_drag_work_package: Mover %{name}
+ label_actions: Work package actions
inbox_menu_component:
- label_actions: Ações do pacote de trabalho
action_menu:
copy_url_to_clipboard: Copiar URL para a área de transferência
copy_work_package_id: Copiar ID do pacote de trabalho
@@ -198,12 +198,12 @@ pt-PT:
add_work_package: Adicionar pacote de trabalho
story_component:
label_drag_story: Mover %{name}
- story_menu_component:
- label_actions: Ações de história
+ label_actions: Story actions
+ story_menu_list_component:
action_menu:
- copy_url_to_clipboard: Copiar URL para a área de transferência
- copy_work_package_id: Copiar ID do pacote de trabalho
- move_menu: Mover
+ copy_url_to_clipboard: Copy URL to clipboard
+ copy_work_package_id: Copy work package ID
+ move_menu: Move
backlogs_points_burn_direction: Pontos queimam para cima/para baixo
backlogs_product_backlog: Backlog do produto
backlogs_story: História
diff --git a/modules/backlogs/config/locales/crowdin/ro.yml b/modules/backlogs/config/locales/crowdin/ro.yml
index 011b4635f1a..1816fe125ba 100644
--- a/modules/backlogs/config/locales/crowdin/ro.yml
+++ b/modules/backlogs/config/locales/crowdin/ro.yml
@@ -147,8 +147,8 @@ ro:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -202,8 +202,8 @@ ro:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/ru.yml b/modules/backlogs/config/locales/crowdin/ru.yml
index d477b8068bf..793675c7b66 100644
--- a/modules/backlogs/config/locales/crowdin/ru.yml
+++ b/modules/backlogs/config/locales/crowdin/ru.yml
@@ -151,8 +151,8 @@ ru:
other: Показать еще %{count} элементов
inbox_item_component:
label_drag_work_package: Переместить %{name}
+ label_actions: Work package actions
inbox_menu_component:
- label_actions: Действия пакета работ
action_menu:
copy_url_to_clipboard: Скопировать URL в буфер обмена
copy_work_package_id: Скопировать ID пакета работ
@@ -206,12 +206,12 @@ ru:
add_work_package: Добавить пакет работ
story_component:
label_drag_story: Переместить %{name}
- story_menu_component:
- label_actions: Действия истории
+ label_actions: Story actions
+ story_menu_list_component:
action_menu:
- copy_url_to_clipboard: Скопировать URL в буфер обмена
- copy_work_package_id: Скопировать ID пакета работ
- move_menu: Переместить
+ copy_url_to_clipboard: Copy URL to clipboard
+ copy_work_package_id: Copy work package ID
+ move_menu: Move
backlogs_points_burn_direction: Точки выгорания вверх/вниз
backlogs_product_backlog: Требования к продукту, с приоритетами
backlogs_story: История
diff --git a/modules/backlogs/config/locales/crowdin/rw.yml b/modules/backlogs/config/locales/crowdin/rw.yml
index ecdaaf0e50d..a25cc5fa94d 100644
--- a/modules/backlogs/config/locales/crowdin/rw.yml
+++ b/modules/backlogs/config/locales/crowdin/rw.yml
@@ -143,8 +143,8 @@ rw:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ rw:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/si.yml b/modules/backlogs/config/locales/crowdin/si.yml
index 8a0cd69340f..04115ceecea 100644
--- a/modules/backlogs/config/locales/crowdin/si.yml
+++ b/modules/backlogs/config/locales/crowdin/si.yml
@@ -143,8 +143,8 @@ si:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ si:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/sk.yml b/modules/backlogs/config/locales/crowdin/sk.yml
index 91f76ed292d..5b128ba2ced 100644
--- a/modules/backlogs/config/locales/crowdin/sk.yml
+++ b/modules/backlogs/config/locales/crowdin/sk.yml
@@ -151,8 +151,8 @@ sk:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -206,8 +206,8 @@ sk:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/sl.yml b/modules/backlogs/config/locales/crowdin/sl.yml
index 6959410a182..d69dac2e072 100644
--- a/modules/backlogs/config/locales/crowdin/sl.yml
+++ b/modules/backlogs/config/locales/crowdin/sl.yml
@@ -151,8 +151,8 @@ sl:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -206,8 +206,8 @@ sl:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/sr.yml b/modules/backlogs/config/locales/crowdin/sr.yml
index fdbefae2fbe..98217f497e2 100644
--- a/modules/backlogs/config/locales/crowdin/sr.yml
+++ b/modules/backlogs/config/locales/crowdin/sr.yml
@@ -147,8 +147,8 @@ sr:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -202,8 +202,8 @@ sr:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/sv.yml b/modules/backlogs/config/locales/crowdin/sv.yml
index 7ef32c48662..d59385b0453 100644
--- a/modules/backlogs/config/locales/crowdin/sv.yml
+++ b/modules/backlogs/config/locales/crowdin/sv.yml
@@ -143,8 +143,8 @@ sv:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ sv:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/th.yml b/modules/backlogs/config/locales/crowdin/th.yml
index 61976084a6a..d914e0e1e9c 100644
--- a/modules/backlogs/config/locales/crowdin/th.yml
+++ b/modules/backlogs/config/locales/crowdin/th.yml
@@ -139,8 +139,8 @@ th:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -194,8 +194,8 @@ th:
add_work_package: Add work package
story_component:
label_drag_story: ย้าย %{name}
- story_menu_component:
- label_actions: การจัดการสตอรี่
+ label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/tr.yml b/modules/backlogs/config/locales/crowdin/tr.yml
index a877081a031..ce48167d0eb 100644
--- a/modules/backlogs/config/locales/crowdin/tr.yml
+++ b/modules/backlogs/config/locales/crowdin/tr.yml
@@ -143,8 +143,8 @@ tr:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ tr:
add_work_package: Add work package
story_component:
label_drag_story: Taşı %{name}
- story_menu_component:
- label_actions: Hikaye eylemleri
+ label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/uk.yml b/modules/backlogs/config/locales/crowdin/uk.yml
index d533f9631a8..fa143ab4348 100644
--- a/modules/backlogs/config/locales/crowdin/uk.yml
+++ b/modules/backlogs/config/locales/crowdin/uk.yml
@@ -33,16 +33,16 @@ uk:
name: Ім’я спринту
sharing: Надання доступу
statuses:
- in_planning: Планування
- active: Активні
- completed: Завершено
+ in_planning: На етапі планування
+ active: Активний
+ completed: Завершений
project:
sprint_sharing: Спільний доступ до спринту
sprint:
duration: Тривалість спринту
user_preference:
- backlogs_task_color: Task color
- backlogs_versions_default_fold_state: Show sprints folded
+ backlogs_task_color: Колір завдання
+ backlogs_versions_default_fold_state: Показувати спринти згорнутими
work_package:
backlogs_work_package_type: Тип Backlog-у
position: Позиція
@@ -50,12 +50,12 @@ uk:
story_points: Сторі-поінти
errors:
messages:
- must_be_in_planning: має бути на етапі планування, перш ніж можна буде почати.
+ must_be_in_planning: має бути на етапі планування, перш ніж його можна буде почати.
only_one_active_sprint_allowed: дозволяється лише один активний спринт для кожного проєкту.
dates_required: Щоб запустити спринт, необхідно вказати дату початку й завершення.
models:
project:
- receiving_sprints: отримує спільні спринти. Власні спринти створювати не можна.
+ receiving_sprints: використовує спринти, до яких надано доступ. Власні спринти створювати не можна.
attributes:
sprint_sharing:
share_all_projects_already_taken: не можна налаштувати, оскільки проєкт «%{name}» уже надає спільний доступ усім проєктам.
@@ -68,7 +68,7 @@ uk:
version_id:
task_version_must_be_the_same_as_story_version: має збігатись із версією батьківської історії.
sprint:
- not_shared_with_project: не може спільно використовуватися з проєктом, у якому міститься пакет робіт.
+ not_shared_with_project: не надається проєкту, у якому міститься пакет робіт.
not_eligible_for_moving: не є активним спринтом у проєкті, який включає спринт, з якого переміщується пакет робіт.
agile/sprint:
attributes:
@@ -89,12 +89,12 @@ uk:
task_type: Тип завдання
backlogs:
any: будь-який
- caption_sprints_default_fold_state: Sprints will not be expanded by default when viewing the 'Backlog and sprints' page. Each one has to be manually expanded.
+ caption_sprints_default_fold_state: Спринти не розгортатимуться за замовчуванням при перегляді сторінки «Беклог і спринти». Кожен спринт потрібно буде розгортати вручну.
column_width: Ширина стовпця
definition_of_done: Визначення завершено
definition_of_done_caption: Пакети робіт із цими статусами вважаються завершеними в переглядах беклогу й звітності.
done_status: Статус «Виконано»
- sharing_description: Цей проєкт може надавати доступ до власних спринтів, отримувати доступ до спринтів, якими з ним поділилися, або працювати зі спринтами самостійно (без спільного доступу).
+ sharing_description: Цей проєкт може надавати доступ до власних спринтів, використовувати спринти, до яких надано доступ, або працювати зі спринтами самостійно (без спільного доступу).
sharing: Надання доступу
impediment: Перешкода
label_versions_default_fold_state: Показати складені версії
@@ -123,7 +123,7 @@ uk:
task_color: Колір завдання
unassigned: Не призначено
administration_blankslate:
- title: Налаштування адміністратора в модулі беклогів змінюються
+ title: Ми змінюємо налаштування адміністратора в модулі беклогів
text: Зараз ми переробляємо модуль невиконаних завдань (беклогів). Налаштування адміністратора для спринтів і беклогів з’являться тут найближчим часом. Налаштування на рівні проєктів залишаються доступними.
user_preference:
header_backlogs: Модуль невиконаних завдань
@@ -141,18 +141,18 @@ uk:
one: У беклозі %{count} історія
other: 'У беклозі стільки історій: %{count}'
inbox_component:
- blankslate_title: Backlog inbox is empty
+ blankslate_title: Немає вхідних завдань беклогу
blankslate_description: Тут автоматично з’являтимуться всі відкриті пакети робіт цього проєкту.
label_drag_work_package: Перемістити історію «%{name}»
show_more:
- one: Показати ще 1 об’єкт
- few: Показати ще %{count} об’єкти
- many: Показати ще %{count} об’єктів
- other: Показати ще %{count} об’єкта
+ one: Показати ще 1 елемент
+ few: Показати ще %{count} елементи
+ many: Показати ще %{count} елементів
+ other: Показати ще %{count} елемента
inbox_item_component:
label_drag_work_package: Перемістити історію «%{name}»
+ label_actions: Work package actions
inbox_menu_component:
- label_actions: Дії пакета робіт
action_menu:
copy_url_to_clipboard: Скопіювати URL-адресу в буфер обміну
copy_work_package_id: Копіювати ідентифікатор пакета робіт
@@ -163,18 +163,18 @@ uk:
label_sprint: Спринт
backlog:
blankslate:
- title: No sprints present yet
- description_html: To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project.
- create_sprint_description_text: To start planning your sprint, create one here.
- share_sprint_description_html: To start planning your sprint, go to the %{settings_link} to receive sprints from a different project.
- no_actions_description_text: No sprints are available for this project yet.
- receive_shared_description_html: This project receives sprints from a different project. Manage this in the %{settings_link}.
- receive_shared_no_actions_description_text: This project receives shared sprints from a different project, but none are available right now.
- settings_link_text: project settings
+ title: Спринтів ще немає
+ description_html: Щоб почати планувати спринт, створіть його тут або перейдіть на сторінку %{settings_link}, щоб отримати спринти з інших проєктів.
+ create_sprint_description_text: Щоб почати планувати спринт, створіть його тут.
+ share_sprint_description_html: Щоб почати планувати спринт, перейдіть на сторінку %{settings_link}, щоб отримати спринти з інших проєктів.
+ no_actions_description_text: Ще немає спринтів, доступних для цього проєкту.
+ receive_shared_description_html: Цей проєкт може використовувати спринти з іншого проєкту. Щоб змінити параметри, перейдіть на сторінку %{settings_link}.
+ receive_shared_no_actions_description_text: Цей проєкт може використовувати спринти з іншого проєкту, до яких надано доступ. Однак зараз доступних спринтів немає.
+ settings_link_text: налаштування проєкту
sprint_header_component:
label_start_sprint: Початок
label_complete_sprint: Завершити
- start_sprint_disabled_reason_active_sprint: Інший спринт уже активний.
+ start_sprint_disabled_reason_active_sprint: Інший спринт уже розпочато.
start_sprint_disabled_reason_missing_dates: Щоб запустити спринт, необхідно вказати дату початку й завершення.
label_story_count:
zero: У спринті немає історій
@@ -190,7 +190,7 @@ uk:
wiki: Wiki
properties: Властивості
finish_sprint_dialog_component:
- title: Є об’єкти, роботу над якими ще не завершено
+ title: Є елементи, роботу над якими ще не завершено
body: "%{message} Що б ви хотіли з ними зробити?"
legend: Дія для незавершених пакетів робіт
actions:
@@ -206,12 +206,12 @@ uk:
add_work_package: Додати пакет робіт
story_component:
label_drag_story: Перемістити історію «%{name}»
- story_menu_component:
- label_actions: Дії історії
+ label_actions: Story actions
+ story_menu_list_component:
action_menu:
- copy_url_to_clipboard: Скопіювати URL-адресу в буфер обміну
- copy_work_package_id: Копіювати ідентифікатор пакета робіт
- move_menu: Перемістити
+ copy_url_to_clipboard: Copy URL to clipboard
+ copy_work_package_id: Copy work package ID
+ move_menu: Move
backlogs_points_burn_direction: Бали спалюються вгору/вниз
backlogs_product_backlog: Backlog продукту
backlogs_story: Історія
@@ -239,20 +239,20 @@ uk:
label_burndown_chart: Діаграма згорання завдань
label_column_in_backlog: Стовпець у backlog-у
label_used_as_backlog: Використовується як беклог
- label_sprint_board: Sprint board
+ label_sprint_board: Дошка спринту
label_points_burn_down: Вниз
label_points_burn_up: Вгору
label_sprint_edit: Редагувати спринт
label_sprint_impediments: Перешкоди спринту
label_sprint_new: Новий спринт
- label_backlog_and_sprints: Backlog and sprints
+ label_backlog_and_sprints: Беклог і спринти
label_task_board: Дошка завдань
- notice_successful_start: The sprint was started.
- notice_successful_finish: The sprint was completed.
- notice_unsuccessful_start: The sprint could not be started.
- notice_unsuccessful_start_with_reason: 'The sprint could not be started: %{reason}'
- notice_unsuccessful_finish: The sprint could not be completed.
- notice_unsuccessful_finish_with_reason: 'The sprint could not be completed: %{reason}'
+ notice_successful_start: Спринт розпочато.
+ notice_successful_finish: Спринт завершено.
+ notice_unsuccessful_start: Спринт не вдалося розпочати.
+ notice_unsuccessful_start_with_reason: 'Спринт не вдалося розпочати: %{reason}'
+ notice_unsuccessful_finish: Спринт не вдалося завершити.
+ notice_unsuccessful_finish_with_reason: 'Спринт не вдалося завершити: %{reason}'
permission_create_sprints: Створення спринтів
permission_manage_sprint_items: Керування елементами спринтів
permission_select_done_statuses: Виберіть завершені статуси
@@ -265,22 +265,22 @@ uk:
backlog_sharing:
options:
no_sharing:
- label: Don't share
- caption: Sprints created in this project will only be available and visible to this project. They will also not be visible to subprojects.
+ label: Не надавати доступ
+ caption: Спринти, створені в цьому проєкті, будуть доступні й видимі лише для цього проєкту. Вони також не будуть видимі для підпроєктів.
receive_shared:
- label: Receive shared sprints
- caption: This project can only use sprints shared by other projects.
- warning: This project can only use sprints shared by other projects. Unused sprints created in this project in the past, will no longer be visible.
+ label: Отримувати доступ до спринтів
+ caption: Цей проєкт може використовувати лише спринти, до яких надали доступ інші проєкти.
+ warning: Цей проєкт може використовувати лише спринти, до яких надали доступ інші проєкти. Невикористані спринти, створені в цьому проєкті в минулому, більше не будуть видимими.
share_all_projects:
label: Усі проєкти
- caption: Sprints created in this project will be available to all projects in this instance. If you select this option, it will no longer be available to other projects.
- disabled_caption: Option not available since project "%{name}" is currently sharing with all projects and only one project can do this.
- disabled_caption_anonymous: Option not available since another project is currently sharing with all projects and only one project can do this.
+ caption: Спринти, створені в цьому проєкті, будуть доступні для всіх проєктів, наявних у цьому екземплярі. Якщо ви виберете цю опцію, вона більше не буде доступна для інших проєктів.
+ disabled_caption: Опція недоступна, оскільки проєкт «%{name}» зараз надає спільний доступ усім проєктам і це може робити лише один проєкт.
+ disabled_caption_anonymous: Опція недоступна, оскільки інший проєкт зараз надає спільний доступ усім проєктам і це може робити лише один проєкт.
share_subprojects:
label: Підпроєкти
- caption: Sprints created in this project will be available to all subprojects of the current project.
- info: Sharing a sprint will share the name, status and the start and finish dates in all projects. These cannot be modified in projects that receive and use these sprints.
- sprint_sharing: Share sprints
+ caption: Спринти, створені в цьому проєкті, будуть доступні для всіх його підпроєктів.
+ info: Надавши спільний доступ до спринту, ви дозволяєте переглядати його назву, статус, а також дати початку й завершення в усіх проєктах. Ці дані не можна змінити в проєктах, які отримують доступ до таких спринтів і використовують їх.
+ sprint_sharing: Надання доступу до спринтів
rb_burndown_charts:
show:
blankslate_title: Немає даних про згорання завдань
diff --git a/modules/backlogs/config/locales/crowdin/uz.yml b/modules/backlogs/config/locales/crowdin/uz.yml
index 70fd1a888a3..74f062f5178 100644
--- a/modules/backlogs/config/locales/crowdin/uz.yml
+++ b/modules/backlogs/config/locales/crowdin/uz.yml
@@ -143,8 +143,8 @@ uz:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -198,8 +198,8 @@ uz:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/vi.yml b/modules/backlogs/config/locales/crowdin/vi.yml
index 4a054f51711..eecf8abc344 100644
--- a/modules/backlogs/config/locales/crowdin/vi.yml
+++ b/modules/backlogs/config/locales/crowdin/vi.yml
@@ -141,8 +141,8 @@ vi:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -196,8 +196,8 @@ vi:
add_work_package: Add work package
story_component:
label_drag_story: Move %{name}
- story_menu_component:
label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/crowdin/zh-CN.yml b/modules/backlogs/config/locales/crowdin/zh-CN.yml
index 17e7259a75b..7e3058dbcfa 100644
--- a/modules/backlogs/config/locales/crowdin/zh-CN.yml
+++ b/modules/backlogs/config/locales/crowdin/zh-CN.yml
@@ -33,33 +33,33 @@ zh-CN:
name: 冲刺名称
sharing: 共享
statuses:
- in_planning: In planning
- active: Active
- completed: Completed
+ in_planning: 规划中
+ active: 活跃
+ completed: 已完成
project:
- sprint_sharing: Sprint sharing
+ sprint_sharing: 冲刺共享
sprint:
duration: 冲刺持续时间
user_preference:
- backlogs_task_color: Task color
- backlogs_versions_default_fold_state: Show sprints folded
+ backlogs_task_color: 任务颜色
+ backlogs_versions_default_fold_state: 以折叠形式显示冲刺
work_package:
backlogs_work_package_type: 待办清单类型
position: 位置
- sprint: Sprint
+ sprint: 冲刺
story_points: 故事点
errors:
messages:
- must_be_in_planning: must be in planning to start.
+ must_be_in_planning: 必须处于规划中状态才能开始。
only_one_active_sprint_allowed: 每个项目只允许有一个有效冲刺。
- dates_required: Start and finish dates are required in order to start the sprint.
+ dates_required: 必须设置开始和结束日期才能开始冲刺。
models:
project:
- receiving_sprints: is receiving shared sprints. Own sprints cannot be created.
+ receiving_sprints: 正在接收共享冲刺。无法创建自己的冲刺。
attributes:
sprint_sharing:
- share_all_projects_already_taken: cannot be set because project "%{name}" is already sharing with all projects.
- share_all_projects_already_taken_anonymous: cannot be set because another project is already sharing with all projects.
+ share_all_projects_already_taken: 无法设置,因为项目“%{name}”已经与所有项目共享。
+ share_all_projects_already_taken_anonymous: 无法设置,因为另一项目已经与所有项目共享。
work_package:
attributes:
blocks_ids:
@@ -68,16 +68,16 @@ zh-CN:
version_id:
task_version_must_be_the_same_as_story_version: 必须与父级故事的版本相同。
sprint:
- not_shared_with_project: is not shared with the project the work package is in.
- not_eligible_for_moving: is not an active sprint in the project which holds the sprint the work package is moved out of.
+ not_shared_with_project: 未与工作包所在的项目共享。
+ not_eligible_for_moving: 该工作包被移出的冲刺所属的项目中,没有处于活跃状态的冲刺。
agile/sprint:
attributes:
base:
unfinished_work_packages:
- other: There are %{count} work packages that were not completed in this sprint.
+ other: 此冲刺中,有 %{count} 个未完成的工作包。
format: "%{message}"
status:
- not_active: is not active so it cannot be closed.
+ not_active: 未处于活跃状态,因此无法关闭。
sprint:
cannot_end_before_it_starts: 比赛不可以在开始前结束。
models:
@@ -86,17 +86,17 @@ zh-CN:
task_type: 任务类型
backlogs:
any: 任一
- caption_sprints_default_fold_state: Sprints will not be expanded by default when viewing the 'Backlog and sprints' page. Each one has to be manually expanded.
+ caption_sprints_default_fold_state: 查看“待办清单和冲刺”页面时,默认情况下不会展开冲刺。每个冲刺都必须手动展开。
column_width: 列宽
definition_of_done: 完成的定义
- definition_of_done_caption: Work packages with these statuses are treated as completed in backlog views and reporting.
- done_status: Done status
- sharing_description: This project can either share its own sprints, receive shared sprints or handle sprints independently (no sharing).
- sharing: Sharing
+ definition_of_done_caption: 具有这些状态的工作包在待办清单视图和报告中会被视为已完成。
+ done_status: 已完成状态
+ sharing_description: 词项目可以共享自己的冲刺、接收共享的冲刺或独立处理冲刺(不共享)。
+ sharing: 共享中
impediment: 障碍
label_versions_default_fold_state: 显示已折叠的版本
- label_burndown_chart: Burndown chart
- label_sprint_board: Sprint board
+ label_burndown_chart: 燃尽图
+ label_sprint_board: 冲刺面板
work_package_is_closed: 工作包已完成,当
label_is_done_status: 状态 %{status_name} 表示已完成
points_label:
@@ -106,7 +106,7 @@ zh-CN:
rebuild: 重建
rebuild_positions: 重建顺序
remaining_hours: 剩余工时
- show_burndown_chart: Burndown chart
+ show_burndown_chart: 燃尽图
story: 故事
story_points:
other: "%{count} 个故事点"
@@ -114,8 +114,8 @@ zh-CN:
task_color: 任务颜色
unassigned: 未指定
administration_blankslate:
- title: Backlog admin settings are evolving
- text: We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available.
+ title: 待办清单管理设置正在升级
+ text: 我们目前正在重新设计待办清单模块。冲刺和代办清单的管理设置不久后将显示在此处。项目级设置仍然可用。
user_preference:
header_backlogs: 积压工作模块
button_update_backlogs: 更新积压工作模块
@@ -132,38 +132,42 @@ zh-CN:
one: 积压工作中有 %{count} 个故事
other: 积压工作中有 %{count} 个故事
inbox_component:
- blankslate_title: Backlog inbox is empty
- blankslate_description: All open work packages in this project will automatically appear here.
- label_drag_work_package: Move %{name}
+ blankslate_title: 待办清单收件箱为空
+ blankslate_description: 此项目中所有开放的工作包都会自动出现在此处。
+ label_drag_work_package: 移动 %{name}
show_more:
- other: Show %{count} more items
+ other: |-
+ One
+ 显示另外 1 个项目
+ Other
+ 显示另外 %{count} 个项目
inbox_item_component:
- label_drag_work_package: Move %{name}
+ label_drag_work_package: 移动 %{name}
+ label_actions: 工作包操作
inbox_menu_component:
- label_actions: Work package actions
action_menu:
- copy_url_to_clipboard: Copy URL to clipboard
- copy_work_package_id: Copy work package ID
- move_menu: Move
- label_move_to_sprint: Move to sprint
+ copy_url_to_clipboard: 将 URL 复制到剪贴板
+ copy_work_package_id: 复制工作包 ID
+ move_menu: 移动
+ label_move_to_sprint: 移动到冲刺
move_to_sprint_dialog_component:
- title: Move to sprint
- label_sprint: Sprint
+ title: 移动到冲刺
+ label_sprint: 冲刺
backlog:
blankslate:
- title: No sprints present yet
- description_html: To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project.
- create_sprint_description_text: To start planning your sprint, create one here.
- share_sprint_description_html: To start planning your sprint, go to the %{settings_link} to receive sprints from a different project.
- no_actions_description_text: No sprints are available for this project yet.
- receive_shared_description_html: This project receives sprints from a different project. Manage this in the %{settings_link}.
- receive_shared_no_actions_description_text: This project receives shared sprints from a different project, but none are available right now.
- settings_link_text: project settings
+ title: 还不存在冲刺
+ description_html: 要开始计划冲刺,请在此处创建一个冲刺,或转到 %{settings_link} 从其他项目接收冲刺。
+ create_sprint_description_text: 要开始计划冲刺,请在此处创建一个冲刺。
+ share_sprint_description_html: 要开始计划冲刺,请转到 %{settings_link} 从其他项目接收冲刺。
+ no_actions_description_text: 此项目还没有可用的冲刺。
+ receive_shared_description_html: 此项目从其他项目接收冲刺。请在 %{settings_link} 中管理此设置。
+ receive_shared_no_actions_description_text: 此项目从其他项目接收共享冲刺,但目前没有可用冲刺。
+ settings_link_text: 项目设置
sprint_header_component:
- label_start_sprint: Start
- label_complete_sprint: Complete
- start_sprint_disabled_reason_active_sprint: Another sprint is already active.
- start_sprint_disabled_reason_missing_dates: Start and finish dates are required in order to start the sprint.
+ label_start_sprint: 开始
+ label_complete_sprint: 完成
+ start_sprint_disabled_reason_active_sprint: 另一个冲刺已处于活跃状态。
+ start_sprint_disabled_reason_missing_dates: 必须设置开始和结束日期才能开始冲刺。
label_story_count:
zero: 冲刺中没有故事
one: 冲刺中有 %{count} 个故事
@@ -178,28 +182,28 @@ zh-CN:
wiki: 维基
properties: 属性
finish_sprint_dialog_component:
- title: There are work in progress items
- body: "%{message} What would you like to do with these?"
- legend: Action for unfinished work packages
+ title: 有工作正在进行中的项目
+ body: "%{message} 您想用它们做什么?"
+ legend: 为未完成的工作包执行的操作
actions:
- move_to_top_of_backlog: Move them to the top of the backlog
- move_to_bottom_of_backlog: Move them to the bottom of the backlog
- move_to_sprint: Move them to another sprint
- select_sprint_label: Select sprint
- button_complete_sprint: Complete sprint
+ move_to_top_of_backlog: 将它们移动到待办清单顶部。
+ move_to_bottom_of_backlog: 将它们移动到待办清单底部。
+ move_to_sprint: 将它们移动到另一冲刺
+ select_sprint_label: 选择冲刺
+ button_complete_sprint: 完成冲刺
sprint_menu_component:
label_actions: 冲刺操作
action_menu:
edit_sprint: 编辑冲刺
- add_work_package: Add work package
+ add_work_package: 添加工作包
story_component:
label_drag_story: 移动 %{name}
- story_menu_component:
label_actions: 故事操作
+ story_menu_list_component:
action_menu:
- copy_url_to_clipboard: Copy URL to clipboard
- copy_work_package_id: Copy work package ID
- move_menu: Move
+ copy_url_to_clipboard: 将 URL 复制到剪贴板
+ copy_work_package_id: 复制工作包 ID
+ move_menu: 移动
backlogs_points_burn_direction: 点数燃尽曲线
backlogs_product_backlog: 产品待办清单
backlogs_story: 故事
@@ -219,28 +223,28 @@ zh-CN:
attributes:
task_type:
cannot_be_story_type: 不能同时为故事类型
- label_backlog: Backlog
- label_inbox: Inbox
+ label_backlog: 待办清单
+ label_inbox: 收件箱
label_backlogs: 待办清单
label_backlogs_unconfigured: 您尚未配置待办清单。请转到“%{administration} > %{plugins}”,然后单击此插件的 %{configure} 链接。设置字段后,返回到此页面开始使用工具。
label_blocks_ids: 被阻止的工作包 ID
- label_burndown_chart: Burndown chart
+ label_burndown_chart: 燃尽图
label_column_in_backlog: 待办清单中的列
label_used_as_backlog: 用作积压工作
- label_sprint_board: Sprint board
+ label_sprint_board: 冲刺面板
label_points_burn_down: 减少
label_points_burn_up: 增加
label_sprint_edit: 编辑冲刺
label_sprint_impediments: 冲刺 (sprint) 障碍
label_sprint_new: 新冲刺
- label_backlog_and_sprints: Backlog and sprints
+ label_backlog_and_sprints: 待办清单和冲刺
label_task_board: 任务板
- notice_successful_start: The sprint was started.
- notice_successful_finish: The sprint was completed.
- notice_unsuccessful_start: The sprint could not be started.
- notice_unsuccessful_start_with_reason: 'The sprint could not be started: %{reason}'
- notice_unsuccessful_finish: The sprint could not be completed.
- notice_unsuccessful_finish_with_reason: 'The sprint could not be completed: %{reason}'
+ notice_successful_start: 冲刺已开始。
+ notice_successful_finish: 冲刺已完成。
+ notice_unsuccessful_start: 无法开始冲刺。
+ notice_unsuccessful_start_with_reason: 无法开始冲刺:%{reason}
+ notice_unsuccessful_finish: 无法完成冲刺。
+ notice_unsuccessful_finish_with_reason: 无法完成冲刺:%{reason}
permission_create_sprints: 创建冲刺
permission_manage_sprint_items: 管理冲刺条目
permission_select_done_statuses: 选择完成状态
@@ -253,22 +257,22 @@ zh-CN:
backlog_sharing:
options:
no_sharing:
- label: Don't share
- caption: Sprints created in this project will only be available and visible to this project. They will also not be visible to subprojects.
+ label: 不共享
+ caption: 在此项目中创建的冲刺将仅在此项目中可用和可见。这些冲刺对子项目也不可见。
receive_shared:
- label: Receive shared sprints
- caption: This project can only use sprints shared by other projects.
- warning: This project can only use sprints shared by other projects. Unused sprints created in this project in the past, will no longer be visible.
+ label: 接收共享冲刺
+ caption: 此项目只能使用其他项目共享的冲刺。
+ warning: 此项目只能使用其他项目共享的冲刺。之前在此项目中创建的未使用的冲刺将不再可见。
share_all_projects:
- label: All projects
- caption: Sprints created in this project will be available to all projects in this instance. If you select this option, it will no longer be available to other projects.
- disabled_caption: Option not available since project "%{name}" is currently sharing with all projects and only one project can do this.
+ label: 所有项目
+ caption: 在此项目中创建的冲刺将可用于此实例中的所有项目。如果选择此选项,这些冲刺将不再可用于其他项目。
+ disabled_caption: 选项不可用,因为项目“%{name}”目前正在与所有项目共享,仅允许一个项目进行此操作。
disabled_caption_anonymous: Option not available since another project is currently sharing with all projects and only one project can do this.
share_subprojects:
- label: Subprojects
- caption: Sprints created in this project will be available to all subprojects of the current project.
- info: Sharing a sprint will share the name, status and the start and finish dates in all projects. These cannot be modified in projects that receive and use these sprints.
- sprint_sharing: Share sprints
+ label: 子项目
+ caption: 在此项目中创建的冲刺将对当前项目的所有子项目可用。
+ info: 共享冲刺将在所有项目中共享名称、状态,以及开始和结束日期。不能在接收和使用这些冲刺的项目中修改这些内容。
+ sprint_sharing: 共享冲刺
rb_burndown_charts:
show:
blankslate_title: 没有可用的燃尽数据
diff --git a/modules/backlogs/config/locales/crowdin/zh-TW.yml b/modules/backlogs/config/locales/crowdin/zh-TW.yml
index ae924be818a..0aa97351333 100644
--- a/modules/backlogs/config/locales/crowdin/zh-TW.yml
+++ b/modules/backlogs/config/locales/crowdin/zh-TW.yml
@@ -139,8 +139,8 @@ zh-TW:
other: Show %{count} more items
inbox_item_component:
label_drag_work_package: Move %{name}
- inbox_menu_component:
label_actions: Work package actions
+ inbox_menu_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
@@ -194,8 +194,8 @@ zh-TW:
add_work_package: Add work package
story_component:
label_drag_story: 移動 %{name}
- story_menu_component:
- label_actions: 故事相關操作
+ label_actions: Story actions
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: Copy URL to clipboard
copy_work_package_id: Copy work package ID
diff --git a/modules/backlogs/config/locales/en.yml b/modules/backlogs/config/locales/en.yml
index bc08a813d37..999c419c142 100644
--- a/modules/backlogs/config/locales/en.yml
+++ b/modules/backlogs/config/locales/en.yml
@@ -162,9 +162,9 @@ en:
inbox_item_component:
label_drag_work_package: "Move %{name}"
+ label_actions: "Work package actions"
inbox_menu_component:
- label_actions: "Work package actions"
action_menu:
copy_url_to_clipboard: "Copy URL to clipboard"
copy_work_package_id: "Copy work package ID"
@@ -225,9 +225,9 @@ en:
story_component:
label_drag_story: "Move %{name}"
-
- story_menu_component:
label_actions: "Story actions"
+
+ story_menu_list_component:
action_menu:
copy_url_to_clipboard: "Copy URL to clipboard"
copy_work_package_id: "Copy work package ID"
diff --git a/modules/backlogs/config/routes.rb b/modules/backlogs/config/routes.rb
index 7e89f414066..f11657e7291 100644
--- a/modules/backlogs/config/routes.rb
+++ b/modules/backlogs/config/routes.rb
@@ -48,6 +48,7 @@ Rails.application.routes.draw do
resources :stories, controller: :rb_stories, only: [] do
member do
+ get :menu
put :move
end
end
@@ -55,6 +56,7 @@ Rails.application.routes.draw do
resources :inbox, only: [] do
member do
+ get :menu
put :move
post :reorder
get :move_to_sprint_dialog
@@ -99,6 +101,7 @@ Rails.application.routes.draw do
resources :stories, controller: :rb_stories, only: [] do
member do
+ get :menu
put :move_legacy
post :reorder
end
diff --git a/modules/backlogs/lib/open_project/backlogs/engine.rb b/modules/backlogs/lib/open_project/backlogs/engine.rb
index efb7dd705e8..004587ec6c8 100644
--- a/modules/backlogs/lib/open_project/backlogs/engine.rb
+++ b/modules/backlogs/lib/open_project/backlogs/engine.rb
@@ -71,7 +71,8 @@ module OpenProject::Backlogs
{ rb_master_backlogs: %i[index backlog details],
rb_sprints: %i[index show show_name],
rb_wikis: :show,
- rb_stories: %i[index show],
+ rb_stories: %i[index show menu],
+ inbox: :menu,
rb_queries: :show,
rb_burndown_charts: :show,
rb_taskboards: :show,
diff --git a/modules/backlogs/spec/components/backlogs/inbox_component_spec.rb b/modules/backlogs/spec/components/backlogs/inbox_component_spec.rb
index 57318834034..6454b8aa8e1 100644
--- a/modules/backlogs/spec/components/backlogs/inbox_component_spec.rb
+++ b/modules/backlogs/spec/components/backlogs/inbox_component_spec.rb
@@ -41,8 +41,15 @@ RSpec.describe Backlogs::InboxComponent, type: :component do
let(:work_packages) { WorkPackage.none }
let(:show_all) { false }
- def render_component(**)
- render_inline(described_class.new(work_packages:, project:, current_user: user, **))
+ def render_component(**extra)
+ render_inline(
+ described_class.new(
+ work_packages:,
+ project:,
+ current_user: user,
+ **extra
+ )
+ )
end
def create_inbox_work_package(subject: "WP", position: nil)
diff --git a/modules/backlogs/spec/components/backlogs/inbox_item_component_spec.rb b/modules/backlogs/spec/components/backlogs/inbox_item_component_spec.rb
index 19b0f1a84b1..d6f038344c2 100644
--- a/modules/backlogs/spec/components/backlogs/inbox_item_component_spec.rb
+++ b/modules/backlogs/spec/components/backlogs/inbox_item_component_spec.rb
@@ -52,7 +52,13 @@ RSpec.describe Backlogs::InboxItemComponent, type: :component do
let(:work_packages) { WorkPackage.where(id: work_package.id).order(Arel.sql(Story::ORDER)) }
before do
- render_inline(Backlogs::InboxComponent.new(work_packages:, project:, current_user: user))
+ render_inline(
+ Backlogs::InboxComponent.new(
+ work_packages:,
+ project:,
+ current_user: user
+ )
+ )
end
it "rendering renders the Inbox Component", :aggregate_failures do
@@ -62,8 +68,10 @@ RSpec.describe Backlogs::InboxItemComponent, type: :component do
expect(page).to have_octicon(:grabber)
# renders WorkPackages::InfoLineComponent with type and ID
expect(page).to have_text("##{work_package.id}")
- # renders an InboxMenuComponent action menu
+ # deferred action menu (kebab + include-fragment src)
expect(page).to have_css("action-menu")
+ expect(page).to have_css(%(include-fragment[src*="menu"]))
+ expect(page).to have_element(:button, id: /\Awork_package_#{work_package.id}_menu-button\z/)
end
describe "row data attributes" do
diff --git a/modules/backlogs/spec/components/backlogs/inbox_menu_component_spec.rb b/modules/backlogs/spec/components/backlogs/inbox_menu_component_spec.rb
index f9e469729a9..4a50d13c1bf 100644
--- a/modules/backlogs/spec/components/backlogs/inbox_menu_component_spec.rb
+++ b/modules/backlogs/spec/components/backlogs/inbox_menu_component_spec.rb
@@ -56,16 +56,23 @@ RSpec.describe Backlogs::InboxMenuComponent, type: :component do
roles: [create(:project_role, permissions:)])
end
- def render_component(position: 2, max_position: 3)
+ def render_component(position: 2, max_position: 3, open_sprints_exist: true)
work_package.update!(position:)
- render_inline(described_class.new(work_package:, project:, max_position:, current_user: user))
+ render_inline(
+ described_class.new(
+ work_package:,
+ project:,
+ max_position:,
+ open_sprints_exist:,
+ current_user: user
+ )
+ )
end
describe "standard items" do
- it "renders stable ids for the action menu and primary actions" do
+ it "renders stable ids for the list and primary actions" do
render_component
- expect(page).to have_element(:button, id: /\Awork_package_#{work_package.id}_menu-button\z/)
expect(page).to have_element(:ul, id: /\Awork_package_#{work_package.id}_menu-list\z/)
expect(page).to have_element(:a, id: /\Awork_package_#{work_package.id}_menu_open_details\z/)
expect(page).to have_element(:a, id: /\Awork_package_#{work_package.id}_menu_open_fullscreen\z/)
@@ -164,14 +171,32 @@ RSpec.describe Backlogs::InboxMenuComponent, type: :component do
expect(page).to have_no_text(I18n.t(:label_sort_lowest))
end
- it "hides the Move submenu when there is only one item" do
- render_component(position: 1, max_position: 1)
+ it "hides the Move submenu when there is only one item and no open sprints" do
+ render_component(position: 1, max_position: 1, open_sprints_exist: false)
expect(page).to have_no_selector(
:menuitem,
text: I18n.t("backlogs.inbox_menu_component.action_menu.move_menu")
)
end
+
+ context "when open_sprints_exist is true" do
+ it "shows Move to sprint in the Move submenu" do
+ render_component(open_sprints_exist: true)
+
+ expect(page).to have_link(I18n.t("backlogs.inbox_menu_component.label_move_to_sprint"))
+ end
+ end
+
+ context "when open_sprints_exist is false" do
+ it "hides Move to sprint but keeps reorder actions in the Move submenu" do
+ render_component(open_sprints_exist: false)
+
+ expect(page).to have_no_link(I18n.t("backlogs.inbox_menu_component.label_move_to_sprint"))
+ expect(page).to have_text(I18n.t(:label_sort_higher))
+ expect(page).to have_text(I18n.t(:label_sort_lower))
+ end
+ end
end
context "without :manage_sprint_items permission" do
diff --git a/modules/backlogs/spec/components/backlogs/story_component_spec.rb b/modules/backlogs/spec/components/backlogs/story_component_spec.rb
index 15ebdefa699..8871a242cc4 100644
--- a/modules/backlogs/spec/components/backlogs/story_component_spec.rb
+++ b/modules/backlogs/spec/components/backlogs/story_component_spec.rb
@@ -52,7 +52,6 @@ RSpec.describe Backlogs::StoryComponent, type: :component do
position: 1,
version: sprint)
end
- let(:max_position) { 3 }
let(:permissions) { %i[manage_sprint_items] }
before do
@@ -66,7 +65,7 @@ RSpec.describe Backlogs::StoryComponent, type: :component do
end
def render_component
- render_inline(described_class.new(story:, sprint:, project:, max_position:, current_user: user))
+ render_inline(described_class.new(story:, sprint:, project:, current_user: user))
end
it "renders WorkPackages::InfoLineComponent" do
@@ -89,10 +88,12 @@ RSpec.describe Backlogs::StoryComponent, type: :component do
expect(page).to have_text("5 points", normalize_ws: true)
end
- it "renders StoryMenuComponent" do
+ it "renders deferred action menu with include-fragment src" do
render_component
expect(page).to have_css("action-menu")
+ expect(page).to have_css(%(include-fragment[src*="menu"]))
+ expect(page).to have_element(:button, id: /\Astory_#{story.id}_menu-button\z/)
end
describe "drag handle behaviour" do
diff --git a/modules/backlogs/spec/components/backlogs/story_menu_component_spec.rb b/modules/backlogs/spec/components/backlogs/story_menu_list_component_spec.rb
similarity index 92%
rename from modules/backlogs/spec/components/backlogs/story_menu_component_spec.rb
rename to modules/backlogs/spec/components/backlogs/story_menu_list_component_spec.rb
index 72430ef9b39..7d0d9e6d826 100644
--- a/modules/backlogs/spec/components/backlogs/story_menu_component_spec.rb
+++ b/modules/backlogs/spec/components/backlogs/story_menu_list_component_spec.rb
@@ -30,7 +30,7 @@
require "rails_helper"
-RSpec.describe Backlogs::StoryMenuComponent, type: :component do
+RSpec.describe Backlogs::StoryMenuListComponent, type: :component do
shared_let(:type_feature) { create(:type_feature) }
shared_let(:type_task) { create(:type_task) }
shared_let(:default_status) { create(:default_status) }
@@ -66,10 +66,9 @@ RSpec.describe Backlogs::StoryMenuComponent, type: :component do
end
describe "standard items" do
- it "renders stable ids for the action menu and primary actions" do
+ it "renders stable ids for the list and primary actions" do
render_component
- expect(page).to have_element(:button, id: /\Astory_#{story.id}_menu-button\z/)
expect(page).to have_element(:ul, id: /\Astory_#{story.id}_menu-list\z/)
expect(page).to have_element(:a, id: /\Astory_#{story.id}_menu_open_details\z/)
expect(page).to have_element(:a, id: /\Astory_#{story.id}_menu_open_fullscreen\z/)
@@ -107,7 +106,7 @@ RSpec.describe Backlogs::StoryMenuComponent, type: :component do
:"clipboard-copy",
id: "story_#{story.id}_menu_copy_url_to_clipboard",
value: /\/work_packages\/#{story.id}\z/,
- text: I18n.t("backlogs.story_menu_component.action_menu.copy_url_to_clipboard")
+ text: "Copy URL to clipboard"
)
end
@@ -119,7 +118,7 @@ RSpec.describe Backlogs::StoryMenuComponent, type: :component do
:"clipboard-copy",
id: "story_#{story.id}_menu_copy_work_package_id",
value: story.id.to_s,
- text: I18n.t("backlogs.story_menu_component.action_menu.copy_work_package_id")
+ text: "Copy work package ID"
)
end
@@ -132,7 +131,7 @@ RSpec.describe Backlogs::StoryMenuComponent, type: :component do
it "shows the Move submenu with incoming-arrow icon" do
render_component
- expect(page).to have_selector(:menuitem, text: I18n.t("backlogs.story_menu_component.action_menu.move_menu"))
+ expect(page).to have_selector(:menuitem, text: "Move")
expect(page).to have_octicon(:"op-arrow-in")
end
end
@@ -226,7 +225,7 @@ RSpec.describe Backlogs::StoryMenuComponent, type: :component do
expect(page).to have_no_selector(
:menuitem,
- text: I18n.t("backlogs.story_menu_component.action_menu.move_menu")
+ text: "Move"
)
end
end
diff --git a/modules/backlogs/spec/controllers/inbox_controller_spec.rb b/modules/backlogs/spec/controllers/inbox_controller_spec.rb
index 08503a48060..29c7f8cec2e 100644
--- a/modules/backlogs/spec/controllers/inbox_controller_spec.rb
+++ b/modules/backlogs/spec/controllers/inbox_controller_spec.rb
@@ -142,7 +142,9 @@ RSpec.describe InboxController, with_flag: { scrum_projects_active: true } do
target: "backlogs-inbox-component-#{project.id}"
expect(response).to have_turbo_stream action: "replace",
target: "backlogs-sprint-component-#{agile_sprint.id}"
- expect(response).to have_turbo_stream action: "flash", target: "op-primer-flash-component"
+
+ # Flash message is omitted here on purpose (#73600)
+ expect(response).not_to have_turbo_stream action: "flash", target: "op-primer-flash-component"
end
end
@@ -203,6 +205,38 @@ RSpec.describe InboxController, with_flag: { scrum_projects_active: true } do
it_behaves_like "checks permissions for private projects"
end
+ describe "GET #menu" do
+ subject do
+ get :menu, params: { project_id: project.id, id: work_package.id }, format: :html
+ end
+
+ it "returns deferred action menu list HTML", :aggregate_failures do
+ subject
+ expect(response).to have_http_status :ok
+ expect(response.body).to include(I18n.t(:"js.button_open_details"))
+ end
+
+ context "when the work package belongs to another project" do
+ let(:other_project) { create(:project) }
+ let(:work_package) { create(:work_package, project: other_project) }
+
+ it "responds with 404" do
+ expect(response).to have_http_status :not_found
+ end
+ end
+
+ context "with a user lacking project permission" do
+ let(:user) { create(:user) }
+
+ it "responds with 404" do
+ subject
+ expect(response).to have_http_status :not_found
+ end
+ end
+
+ it_behaves_like "checks permissions for private projects"
+ end
+
describe "GET #move_to_sprint_dialog" do
let!(:sprint) { create(:agile_sprint, name: "Sprint 1", project:) }
diff --git a/modules/backlogs/spec/controllers/rb_stories_controller_spec.rb b/modules/backlogs/spec/controllers/rb_stories_controller_spec.rb
index be2f00c5b75..215608223ed 100644
--- a/modules/backlogs/spec/controllers/rb_stories_controller_spec.rb
+++ b/modules/backlogs/spec/controllers/rb_stories_controller_spec.rb
@@ -51,6 +51,57 @@ RSpec.describe RbStoriesController do
.and_return({ "story_types" => [type_feature.id], "task_type" => type_task.id })
end
+ describe "load_story" do
+ subject do
+ get :menu,
+ params: { project_id: project.id, sprint_id: requested_sprint.id, id: load_story_id },
+ format: :html
+ end
+
+ context "when scrum_projects flag is inactive", with_flag: { scrum_projects: false } do
+ let(:load_story_id) { story.id }
+ let(:requested_sprint) { version_sprint }
+
+ context "when the story is in the requested sprint" do
+ it "assigns the visible story", :aggregate_failures do
+ subject
+ expect(response).to be_successful
+ expect(response).to have_http_status :ok
+ expect(assigns(:story)).to eq(story)
+ end
+ end
+
+ context "when the story is not in the requested sprint" do
+ let(:requested_sprint) { create(:sprint, name: "Sprint load_story other", project:) }
+
+ it { is_expected.to have_http_status :not_found }
+ end
+ end
+
+ context "when scrum_projects flag is active", with_flag: { scrum_projects: true } do
+ let(:agile_sprint) { create(:agile_sprint, name: "Agile Sprint load_story", project:) }
+ let(:work_package_in_sprint) { create(:work_package, status:, sprint: agile_sprint, project:) }
+ let(:load_story_id) { work_package_in_sprint.id }
+
+ context "when the work package is in the requested sprint" do
+ let(:requested_sprint) { agile_sprint }
+
+ it "assigns the visible work package", :aggregate_failures do
+ subject
+ expect(response).to be_successful
+ expect(response).to have_http_status :ok
+ expect(assigns(:story)).to eq(work_package_in_sprint)
+ end
+ end
+
+ context "when the work package is not in the requested sprint" do
+ let(:requested_sprint) { create(:agile_sprint, name: "Other Sprint load_story", project:) }
+
+ it { is_expected.to have_http_status :not_found }
+ end
+ end
+ end
+
describe "PUT #move_legacy" do
context "with a user lacking project permission" do
let(:user) { create(:user) }
@@ -334,4 +385,25 @@ RSpec.describe RbStoriesController do
end
end
end
+
+ describe "GET #menu" do
+ subject do
+ get :menu, params: { project_id: project.id, sprint_id: version_sprint.id, id: story.id }, format: :html
+ end
+
+ it "returns deferred action menu list HTML", :aggregate_failures do
+ subject
+ expect(response).to have_http_status :ok
+ expect(response.body).to include(I18n.t(:"js.button_open_details"))
+ end
+
+ context "with a user lacking project permission" do
+ let(:user) { create(:user) }
+
+ it "responds with 404" do
+ subject
+ expect(response).to have_http_status :not_found
+ end
+ end
+ end
end
diff --git a/modules/backlogs/spec/features/backlogs/create_spec.rb b/modules/backlogs/spec/features/backlogs/create_spec.rb
index d4a5b263468..1958971dc0d 100644
--- a/modules/backlogs/spec/features/backlogs/create_spec.rb
+++ b/modules/backlogs/spec/features/backlogs/create_spec.rb
@@ -87,7 +87,7 @@ RSpec.describe "Create", :js do
click_on "Create"
end
- expect_and_dismiss_flash(message: "Successful creation.")
+ expect_and_dismiss_flash(exact_message: "Successful creation.")
planning_page.expect_sprint_names_in_order(initial_sprint.name, "Created sprint")
sprint = project.reload.sprints.last
diff --git a/modules/backlogs/spec/features/backlogs/create_story_spec.rb b/modules/backlogs/spec/features/backlogs/create_story_spec.rb
index c792dff6adf..896cbd758a6 100644
--- a/modules/backlogs/spec/features/backlogs/create_story_spec.rb
+++ b/modules/backlogs/spec/features/backlogs/create_story_spec.rb
@@ -118,7 +118,7 @@ RSpec.describe "Backlogs", :js do
click_on "Create"
end
- expect_and_dismiss_flash type: :success, message: "New work package created"
+ expect_and_dismiss_flash type: :success, exact_message: "Successful creation."
# velocity should be summed up immediately
# TODO: removed in OP #57688, to be reimplemented
diff --git a/modules/backlogs/spec/features/backlogs/edit_spec.rb b/modules/backlogs/spec/features/backlogs/edit_spec.rb
index d5b7cc14a59..38963c51ba2 100644
--- a/modules/backlogs/spec/features/backlogs/edit_spec.rb
+++ b/modules/backlogs/spec/features/backlogs/edit_spec.rb
@@ -100,7 +100,7 @@ RSpec.describe "Edit", :js do
wait_for_reload
- expect_and_dismiss_flash type: :success, message: "New work package created and added as a child"
+ expect_and_dismiss_flash type: :success, exact_message: "Successful creation."
created_wp = first_sprint.reload.work_packages.last
expect(created_wp.subject).to eq("Story created in sprint")
planning_page.expect_story_in_sprint(created_wp, first_sprint)
diff --git a/modules/backlogs/spec/features/inbox_column_spec.rb b/modules/backlogs/spec/features/inbox_column_spec.rb
index 26a9d6d2cd7..6a6762cef16 100644
--- a/modules/backlogs/spec/features/inbox_column_spec.rb
+++ b/modules/backlogs/spec/features/inbox_column_spec.rb
@@ -276,7 +276,6 @@ RSpec.describe "Inbox column in sprint planning view", :js, with_flag: { scrum_p
end
planning_page.expect_no_inbox_item(inbox_wp1)
- expect_and_dismiss_flash(message: "Successful move from Inbox to Sprint 1.")
planning_page.expect_story_in_sprint(inbox_wp1, sprint)
planning_page.expect_work_packages_in_sprint_in_order(sprint, work_packages: [sprint_wp, inbox_wp1])
end
@@ -286,15 +285,12 @@ RSpec.describe "Inbox column in sprint planning view", :js, with_flag: { scrum_p
it "moves multiple items into the sprint one by one" do
planning_page.drag_inbox_item_to_sprint(inbox_wp1, sprint)
planning_page.expect_no_inbox_item(inbox_wp1)
- expect_and_dismiss_flash(message: "Successful move from Inbox to Sprint 1.")
planning_page.drag_inbox_item_to_sprint(inbox_wp2, sprint)
planning_page.expect_no_inbox_item(inbox_wp2)
- expect_and_dismiss_flash(message: "Successful move from Inbox to Sprint 1.")
planning_page.drag_inbox_item_to_sprint(inbox_wp3, sprint)
planning_page.expect_no_inbox_item(inbox_wp3)
- expect_and_dismiss_flash(message: "Successful move from Inbox to Sprint 1.")
planning_page.expect_inbox_blankslate
planning_page.expect_story_in_sprint(inbox_wp1, sprint)
@@ -319,7 +315,6 @@ RSpec.describe "Inbox column in sprint planning view", :js, with_flag: { scrum_p
it "moves a backlog item to the sprint without an error (Regression#73416)" do
planning_page.drag_inbox_item_to_sprint(inbox_wp1, sprint)
planning_page.expect_no_inbox_item(inbox_wp1)
- expect_and_dismiss_flash(message: "Successful move from Inbox to Sprint 1.")
end
end
end
diff --git a/modules/backlogs/spec/features/work_packages/create_work_package_spec.rb b/modules/backlogs/spec/features/work_packages/create_work_package_spec.rb
index c79e4ff322b..e8641776ca0 100644
--- a/modules/backlogs/spec/features/work_packages/create_work_package_spec.rb
+++ b/modules/backlogs/spec/features/work_packages/create_work_package_spec.rb
@@ -100,7 +100,7 @@ RSpec.describe "Create work package in sprint", :js, with_flag: { scrum_projects
click_on "Create"
end
- expect_and_dismiss_flash type: :success, message: "New work package created"
+ expect_and_dismiss_flash type: :success, exact_message: "Successful creation."
created_work_package = WorkPackage.last
@@ -144,7 +144,7 @@ RSpec.describe "Create work package in sprint", :js, with_flag: { scrum_projects
click_on "Create"
end
- expect_and_dismiss_flash type: :success, message: "New work package created"
+ expect_and_dismiss_flash type: :success, exact_message: "Successful creation."
created_work_package = WorkPackage.last
@@ -166,7 +166,7 @@ RSpec.describe "Create work package in sprint", :js, with_flag: { scrum_projects
click_on "Create"
end
- expect_and_dismiss_flash type: :success, message: "New work package created"
+ expect_and_dismiss_flash type: :success, exact_message: "Successful creation."
created_work_package = WorkPackage.last
diff --git a/modules/backlogs/spec/helpers/rb_common_helper_spec.rb b/modules/backlogs/spec/helpers/rb_common_helper_spec.rb
index 7e9b2ffe23b..6db734c227c 100644
--- a/modules/backlogs/spec/helpers/rb_common_helper_spec.rb
+++ b/modules/backlogs/spec/helpers/rb_common_helper_spec.rb
@@ -72,4 +72,42 @@ RSpec.describe RbCommonHelper do
end
end
end
+
+ describe "#show_all_backlog" do
+ before do
+ allow(helper).to receive(:params).and_return(params)
+ end
+
+ context "when the all param is absent" do
+ let(:params) { {} }
+
+ it "is false" do
+ expect(helper.show_all_backlog).to be false
+ end
+ end
+
+ context "when the all param is a Rails boolean truthy string" do
+ let(:params) { { all: "1" } }
+
+ it "is true" do
+ expect(helper.show_all_backlog).to be true
+ end
+ end
+
+ context "when the all param is the string false" do
+ let(:params) { { all: "false" } }
+
+ it "is false" do
+ expect(helper.show_all_backlog).to be false
+ end
+ end
+
+ context "when the all param is the string zero" do
+ let(:params) { { all: "0" } }
+
+ it "is false" do
+ expect(helper.show_all_backlog).to be false
+ end
+ end
+ end
end
diff --git a/modules/backlogs/spec/lib/open_project/backlogs/permissions_spec.rb b/modules/backlogs/spec/lib/open_project/backlogs/permissions_spec.rb
index 4e4a5724a2d..7aaa9c0605f 100644
--- a/modules/backlogs/spec/lib/open_project/backlogs/permissions_spec.rb
+++ b/modules/backlogs/spec/lib/open_project/backlogs/permissions_spec.rb
@@ -37,6 +37,10 @@ RSpec.describe OpenProject::AccessControl, "Backlogs module permissions" do # ru
it "depends on view_work_packages and show_board_views" do
expect(subject.dependencies).to contain_exactly(:view_work_packages, :show_board_views)
end
+
+ it "includes deferred backlog story and inbox menu fragments" do
+ expect(subject.controller_actions).to include("rb_stories/menu", "inbox/menu")
+ end
end
describe "create_sprints" do
diff --git a/modules/backlogs/spec/requests/rb_master_backlogs_spec.rb b/modules/backlogs/spec/requests/rb_master_backlogs_spec.rb
index f63b2fd387c..9562eb91885 100644
--- a/modules/backlogs/spec/requests/rb_master_backlogs_spec.rb
+++ b/modules/backlogs/spec/requests/rb_master_backlogs_spec.rb
@@ -96,12 +96,19 @@ RSpec.describe "RbMasterBacklogs", :skip_csrf, type: :rails_request do
expect(response).to have_http_status(:ok)
expect(response).to render_template(:backlog)
-
expect(response).to have_turbo_frame "backlogs_container",
- src: "/projects/#{project.identifier}/backlogs/backlog"
+ src: "/projects/#{project.identifier}/backlogs/backlog?all=false"
expect(response).to have_turbo_frame "content-bodyRight"
end
+ it "passes all=true on the backlog turbo frame when requested" do
+ get "/projects/#{project.identifier}/backlogs/backlog", params: { all: "1" }
+
+ expect(response).to have_http_status(:ok)
+ expect(response).to have_turbo_frame "backlogs_container",
+ src: "/projects/#{project.identifier}/backlogs/backlog?all=true"
+ end
+
context "with a Turbo Frame request" do
it "renders the sprint planning list partial" do
get "/projects/#{project.identifier}/backlogs/backlog", headers: { "Turbo-Frame" => "backlogs_container" }
diff --git a/modules/backlogs/spec/routing/inbox_routing_spec.rb b/modules/backlogs/spec/routing/inbox_routing_spec.rb
index 21a81f2ddb3..cfa1e7288da 100644
--- a/modules/backlogs/spec/routing/inbox_routing_spec.rb
+++ b/modules/backlogs/spec/routing/inbox_routing_spec.rb
@@ -49,5 +49,14 @@ RSpec.describe InboxController, with_flag: { scrum_projects_active: true } do
id: "85"
)
}
+
+ it {
+ expect(get("/projects/project_42/inbox/85/menu")).to route_to(
+ controller: "inbox",
+ action: "menu",
+ project_id: "project_42",
+ id: "85"
+ )
+ }
end
end
diff --git a/modules/backlogs/spec/routing/rb_stories_routing_spec.rb b/modules/backlogs/spec/routing/rb_stories_routing_spec.rb
index 910795cf440..4bf6b239918 100644
--- a/modules/backlogs/spec/routing/rb_stories_routing_spec.rb
+++ b/modules/backlogs/spec/routing/rb_stories_routing_spec.rb
@@ -67,5 +67,15 @@ RSpec.describe RbStoriesController do
id: "85"
)
}
+
+ it {
+ expect(get("/projects/project_42/sprints/21/stories/85/menu")).to route_to(
+ controller: "rb_stories",
+ action: "menu",
+ project_id: "project_42",
+ sprint_id: "21",
+ id: "85"
+ )
+ }
end
end
diff --git a/modules/bim/config/locales/crowdin/ar.seeders.yml b/modules/bim/config/locales/crowdin/ar.seeders.yml
index 2ae45077aae..3a6c51bdfce 100644
--- a/modules/bim/config/locales/crowdin/ar.seeders.yml
+++ b/modules/bim/config/locales/crowdin/ar.seeders.yml
@@ -13,7 +13,7 @@ ar:
item_2:
name: مرتفعة
item_3:
- name: Critical
+ name: حَرِج
statuses:
item_0:
name: جديد
@@ -42,7 +42,7 @@ ar:
item_4:
name: Remark
item_5:
- name: Request
+ name: طلب
item_6:
name: Clash
global_queries:
@@ -69,7 +69,7 @@ ar:
item_6:
name: Planners
item_7:
- name: Structural Engineers
+ name: المهندسون الهيكليون
welcome:
title: Welcome to OpenProject BIM edition!
text: |
@@ -92,10 +92,10 @@ ar:
description: This is a short summary of the goals of this demo construction project.
news:
item_0:
- title: Welcome to your demo project
+ title: مرحباً بك في مشروعك التجريبي
summary: |
- We are glad you joined.
- In this module you can communicate project news to your team members.
+ يسعدنا انضمامك إلينا.
+ في هذه الوحدة يمكنك توصيل أخبار المشروع إلى أعضاء فريقك.
description: The actual news
categories:
item_0: Category 1 (to be changed in Project settings)
@@ -105,17 +105,17 @@ ar:
item_1:
name: الأحداث الرئيسية
item_2:
- name: Tasks
+ name: المهام
item_3:
name: مخطط الفريق
boards:
bcf:
- name: Simple drag'n drop workflow
+ name: عملية السحب والإفلات بسيطة
project-overview:
widgets:
item_0:
options:
- name: Welcome
+ name: أهلا
item_1:
options:
name: الشروع في البدء
@@ -154,7 +154,7 @@ ar:
description: This is a short summary of the goals of this demo planning and constructing project.
news:
item_0:
- title: Welcome to your demo project
+ title: مرحباً بك في مشروعك التجريبي
summary: |
We are glad you joined.
In this module you can communicate project news to your team members.
@@ -167,14 +167,14 @@ ar:
item_1:
name: الأحداث الرئيسية
item_2:
- name: Tasks
+ name: المهامّ
item_3:
name: مخطط الفريق
project-overview:
widgets:
item_0:
options:
- name: Welcome
+ name: أهلا
item_1:
options:
name: الشروع في البدء
@@ -321,7 +321,7 @@ ar:
* Get the team together
* ...
item_1:
- subject: Foundation
+ subject: الأساس
description: |-
## Goal
@@ -408,27 +408,27 @@ ar:
description: This is a short summary of the goals of this demo BIM project.
news:
item_0:
- title: Welcome to your demo project
+ title: مرحباً بك في مشروعك التجريبي
summary: |
- We are glad you joined.
- In this module you can communicate project news to your team members.
+ يسعدنا انضمامك إلينا.
+ في هذه الوحدة يمكنك توصيل أخبار المشروع إلى أعضاء فريقك.
description: The actual news
categories:
item_0: Category 1 (to be changed in Project settings)
queries:
item_0:
- name: Project plan
+ name: خُطَّة المشروع
item_1:
name: الأحداث الرئيسية
item_2:
- name: Tasks
+ name: المهام
item_3:
name: مخطط الفريق
project-overview:
widgets:
item_0:
options:
- name: Welcome
+ name: أهلا
item_1:
options:
name: الشروع في البدء
@@ -665,7 +665,7 @@ ar:
* The model can be used for the operating system of the building
* ...
item_14:
- subject: Asset Management
+ subject: إدارة الأصول
description: Enjoy your building :)
demo-bcf-management-project:
name: "(Demo) BCF management"
@@ -686,7 +686,7 @@ ar:
item_1:
name: Clashes
item_2:
- name: Requests
+ name: الطلبات
item_3:
name: Remarks
item_4:
@@ -694,7 +694,7 @@ ar:
item_5:
name: الأحداث الرئيسية
item_6:
- name: Tasks
+ name: المهام
item_7:
name: مخطط الفريق
boards:
@@ -704,7 +704,7 @@ ar:
widgets:
item_0:
options:
- name: Welcome
+ name: أهلا
item_1:
options:
name: الشروع في البدء
diff --git a/modules/bim/lib/api/bim/utilities/path_helper.rb b/modules/bim/lib/api/bim/utilities/path_helper.rb
index 4bf70f85552..0344899dd24 100644
--- a/modules/bim/lib/api/bim/utilities/path_helper.rb
+++ b/modules/bim/lib/api/bim/utilities/path_helper.rb
@@ -51,20 +51,27 @@ module API
end
def project(identifier)
- "#{root}projects/#{identifier}"
+ path_segments("projects", identifier)
end
def topics(project_identifier)
- "#{project(project_identifier)}/topics"
+ path_segments("projects", project_identifier, "topics")
end
def topic(project_identifier, uuid)
- "#{topics(project_identifier)}/#{uuid}"
+ path_segments("projects", project_identifier, "topics", uuid)
end
def viewpoint(project_identifier, topic_uuid, viewpoint_topic)
- "#{topic(project_identifier, topic_uuid)}/viewpoints/#{viewpoint_topic}"
+ path_segments("projects", project_identifier, "topics", topic_uuid, "viewpoints", viewpoint_topic)
end
+
+ def path_segments(*segments)
+ subpath = segments.map { |segment| ::ERB::Util.url_encode(segment.to_s) }.join("/")
+ "#{root}#{subpath}"
+ end
+
+ private_class_method :path_segments
end
def bcf_v2_1_paths
diff --git a/modules/bim/spec/lib/api/bim/utilities/path_helper_spec.rb b/modules/bim/spec/lib/api/bim/utilities/path_helper_spec.rb
new file mode 100644
index 00000000000..75fb6885f16
--- /dev/null
+++ b/modules/bim/spec/lib/api/bim/utilities/path_helper_spec.rb
@@ -0,0 +1,52 @@
+# frozen_string_literal: true
+
+#-- copyright
+# OpenProject is an open source project management software.
+# Copyright (C) the OpenProject GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License version 3.
+#
+# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
+# Copyright (C) 2006-2013 Jean-Philippe Lang
+# Copyright (C) 2010-2013 the ChiliProject Team
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# See COPYRIGHT and LICENSE files for more details.
+#++
+require "spec_helper"
+
+RSpec.describe API::Bim::Utilities::PathHelper::BCF2_1Path do # rubocop:disable RSpec/SpecFilePathFormat
+ before do
+ allow(described_class)
+ .to receive(:root_path)
+ .and_return("/openproject/")
+ end
+
+ describe ".project" do
+ it "escapes slash characters in project identifiers" do
+ expect(described_class.project("project/with/path"))
+ .to eq("/openproject/api/bcf/2.1/projects/project%2Fwith%2Fpath")
+ end
+ end
+
+ describe ".topic" do
+ it "escapes topic UUIDs so they stay a single path segment" do
+ expect(described_class.topic("my/project", "topic/with/path"))
+ .to eq("/openproject/api/bcf/2.1/projects/my%2Fproject/topics/topic%2Fwith%2Fpath")
+ end
+ end
+end
diff --git a/modules/documents/config/locales/crowdin/es.yml b/modules/documents/config/locales/crowdin/es.yml
index 19934b903ef..10606cc5f4b 100644
--- a/modules/documents/config/locales/crowdin/es.yml
+++ b/modules/documents/config/locales/crowdin/es.yml
@@ -70,8 +70,8 @@ es:
show_edit_view:
connection_error_notice:
description_server_unavailable: |-
- Unable to open document because the real-time text collaboration server is unreachable.
- Please contact the administrator if the problem persists.
+ No se puede abrir el documento porque no se puede acceder al servidor de colaboración de texto en tiempo real.
+ Ponte en contacto con el administrador si el problema persiste.
action: Intentar otra vez
tabs: Pestañas del documento
index_page:
@@ -85,8 +85,8 @@ es:
collaboration_settings: Colaboración en tiempo real
last_updated_at: Última vez guardado a las %{time}.
info_line:
- currently_offline: You are currently offline.
- connection_restored: You are now back online.
+ currently_offline: Estás desconectado.
+ connection_restored: Ya estás de nuevo en línea.
active_editors: Activar editores
active_editors_count:
one: 1 editor activo
diff --git a/modules/documents/config/locales/crowdin/it.yml b/modules/documents/config/locales/crowdin/it.yml
index 6553223dd38..697a2f72f48 100644
--- a/modules/documents/config/locales/crowdin/it.yml
+++ b/modules/documents/config/locales/crowdin/it.yml
@@ -72,8 +72,8 @@ it:
show_edit_view:
connection_error_notice:
description_server_unavailable: |-
- Unable to open document because the real-time text collaboration server is unreachable.
- Please contact the administrator if the problem persists.
+ Impossibile aprire il documento perché il server della collaborazione in tempo reale sul testo non è raggiungibile.
+ Se il problema persiste, contatta l'amministratore.
action: Riprova
tabs: Schede dei documenti
index_page:
@@ -87,8 +87,8 @@ it:
collaboration_settings: Collaborazione in tempo reale
last_updated_at: Ultimo salvataggio %{time}.
info_line:
- currently_offline: You are currently offline.
- connection_restored: You are now back online.
+ currently_offline: Sei attualmente offline.
+ connection_restored: Ora sei di nuovo online.
active_editors: Editor attivi
active_editors_count:
one: 1 editor attivo
diff --git a/modules/documents/config/locales/crowdin/uk.yml b/modules/documents/config/locales/crowdin/uk.yml
index e6111af7882..9ab125121f3 100644
--- a/modules/documents/config/locales/crowdin/uk.yml
+++ b/modules/documents/config/locales/crowdin/uk.yml
@@ -87,8 +87,8 @@ uk:
collaboration_settings: Спільне редагування в реальному часі
last_updated_at: Востаннє збережено о %{time}.
info_line:
- currently_offline: You are currently offline.
- connection_restored: You are now back online.
+ currently_offline: Ви зараз не в мережі.
+ connection_restored: Ви знову в мережі.
active_editors: Активні редактори
active_editors_count:
one: 1 активний редактор
diff --git a/modules/documents/config/locales/crowdin/zh-CN.yml b/modules/documents/config/locales/crowdin/zh-CN.yml
index 3054b7377fd..b2cc5b345c9 100644
--- a/modules/documents/config/locales/crowdin/zh-CN.yml
+++ b/modules/documents/config/locales/crowdin/zh-CN.yml
@@ -72,8 +72,8 @@ zh-CN:
show_edit_view:
connection_error_notice:
description_server_unavailable: |-
- Unable to open document because the real-time text collaboration server is unreachable.
- Please contact the administrator if the problem persists.
+ 无法打开文档,因为无法访问实时文本协作服务器。
+ 如果问题一直存在,请联系管理员。
action: 重试
tabs: "“文档”选项卡"
index_page:
@@ -87,8 +87,8 @@ zh-CN:
collaboration_settings: 实时协作
last_updated_at: 最后保存时间:%{time}。
info_line:
- currently_offline: You are currently offline.
- connection_restored: You are now back online.
+ currently_offline: 您目前处于离线状态。
+ connection_restored: 您已恢复在线状态。
active_editors: 有效编辑器
active_editors_count:
other: "%{count} 位活跃编辑者"
diff --git a/modules/github_integration/config/locales/crowdin/es.yml b/modules/github_integration/config/locales/crowdin/es.yml
index 92e5b4fec31..407b9303dd5 100644
--- a/modules/github_integration/config/locales/crowdin/es.yml
+++ b/modules/github_integration/config/locales/crowdin/es.yml
@@ -43,8 +43,8 @@ es:
label_github_integration: Integración con GitHub
notice_deploy_target_created: Objetivo de despliegue creado
notice_deploy_target_destroyed: Objetivo de despliegue eliminado
- label_github_comment_user: GitHub actor
- label_github_webhook_secret: Webhook secret
+ label_github_comment_user: Usuario de GitHub
+ label_github_webhook_secret: Secreto de webhook
text_github_comment_user_info: 'The OpenProject user whose API key must be used to authenticate incoming webhook requests. When set, requests authenticated with any other user''s credentials are rejected. This user also posts automated deploy-status comments on work packages. Defaults to the system user when not set.
'
diff --git a/modules/github_integration/config/locales/crowdin/fr.yml b/modules/github_integration/config/locales/crowdin/fr.yml
index e23a5bd60bc..9f773d1106e 100644
--- a/modules/github_integration/config/locales/crowdin/fr.yml
+++ b/modules/github_integration/config/locales/crowdin/fr.yml
@@ -43,15 +43,15 @@ fr:
label_github_integration: Intégration GitHub
notice_deploy_target_created: Objectif de déploiement créé
notice_deploy_target_destroyed: Objectif de déploiement supprimé
- label_github_comment_user: GitHub actor
- label_github_webhook_secret: Webhook secret
- text_github_comment_user_info: 'The OpenProject user whose API key must be used to authenticate incoming webhook requests. When set, requests authenticated with any other user''s credentials are rejected. This user also posts automated deploy-status comments on work packages. Defaults to the system user when not set.
+ label_github_comment_user: Acteur GitHub
+ label_github_webhook_secret: Secret du webhook
+ text_github_comment_user_info: 'L''utilisateur d''OpenProject dont la clé d''API doit être utilisée pour authentifier les demandes de webhook entrantes. Lorsqu''il est défini, les demandes authentifiées avec les informations d''identification de tout autre utilisateur sont rejetées. Cet utilisateur publie également des commentaires automatisés sur l''état de déploiement des lors de travaux. Par défaut, il s''agit de l''utilisateur du système s''il n''est pas défini.
'
- text_github_webhook_secret_missing_warning: 'No webhook secret is configured. Any request to the GitHub webhook endpoint will be accepted without verification, which may allow unauthorized actors to forge events. It is strongly recommended to set a secret.
+ text_github_webhook_secret_missing_warning: 'Aucun secret de webhook n''est configuré. Toute demande adressée au point de terminaison du webhook de GitHub sera acceptée sans vérification, ce qui peut permettre à des personnes non autorisées de falsifier des événements. Il est fortement recommandé de définir un secret.
'
- text_github_webhook_secret_info: 'A secret token shared with GitHub when configuring the webhook. When set, OpenProject verifies the X-Hub-Signature-256 header on every incoming request, rejecting payloads that do not match. Leave blank to skip verification (not recommended).
+ text_github_webhook_secret_info: 'Un jeton secret partagé avec GitHub lors de la configuration du webhook. Lorsqu''il est défini, OpenProject vérifie l''en-tête X-Hub-Signature-256 sur chaque requête entrante et rejette les charges utiles qui ne correspondent pas. Laissez l''espace vide pour ignorer la vérification (non recommandé).
'
plugin_openproject_github_integration:
diff --git a/modules/github_integration/config/locales/crowdin/it.yml b/modules/github_integration/config/locales/crowdin/it.yml
index 3c624b3762a..68584ba3e1f 100644
--- a/modules/github_integration/config/locales/crowdin/it.yml
+++ b/modules/github_integration/config/locales/crowdin/it.yml
@@ -43,15 +43,15 @@ it:
label_github_integration: Integrazione GitHub
notice_deploy_target_created: Destinazione di installazione creata
notice_deploy_target_destroyed: Destinazione di installazione rilevata
- label_github_comment_user: GitHub actor
+ label_github_comment_user: Attore GitHub
label_github_webhook_secret: Webhook secret
- text_github_comment_user_info: 'The OpenProject user whose API key must be used to authenticate incoming webhook requests. When set, requests authenticated with any other user''s credentials are rejected. This user also posts automated deploy-status comments on work packages. Defaults to the system user when not set.
+ text_github_comment_user_info: 'L''utente OpenProject la cui chiave API deve essere utilizzata per autenticare le richieste webhook in ingresso. Se impostato, le richieste autenticate con le credenziali di qualsiasi altro utente verranno rifiutate. Questo utente pubblica anche commenti automatici sullo stato di distribuzione nelle macro-attività. Se non impostato, viene utilizzato l''utente di sistema.
'
- text_github_webhook_secret_missing_warning: 'No webhook secret is configured. Any request to the GitHub webhook endpoint will be accepted without verification, which may allow unauthorized actors to forge events. It is strongly recommended to set a secret.
+ text_github_webhook_secret_missing_warning: 'Nessun webhook secret è configurato. Qualsiasi richiesta all''endpoint webhook di GitHub verrà accettata senza verifica, il che potrebbe consentire ad attori non autorizzati di falsificare eventi. Si consiglia vivamente di impostare un secret.
'
- text_github_webhook_secret_info: 'A secret token shared with GitHub when configuring the webhook. When set, OpenProject verifies the X-Hub-Signature-256 header on every incoming request, rejecting payloads that do not match. Leave blank to skip verification (not recommended).
+ text_github_webhook_secret_info: 'Un token segreto condiviso con GitHub durante la configurazione del webhook. Se impostato, OpenProject verifica l''header X-Hub-Signature-256 su ogni richiesta in ingresso, rifiutando i payload che non corrispondono. Lascia vuoto per saltare la verifica (non consigliato).
'
plugin_openproject_github_integration:
diff --git a/modules/github_integration/config/locales/crowdin/ko.yml b/modules/github_integration/config/locales/crowdin/ko.yml
index e29176e1f1e..2b567570f8f 100644
--- a/modules/github_integration/config/locales/crowdin/ko.yml
+++ b/modules/github_integration/config/locales/crowdin/ko.yml
@@ -43,15 +43,15 @@ ko:
label_github_integration: GitHub 통합
notice_deploy_target_created: 배포 대상 생성됨
notice_deploy_target_destroyed: 배포 대상 삭제됨
- label_github_comment_user: GitHub actor
- label_github_webhook_secret: Webhook secret
- text_github_comment_user_info: 'The OpenProject user whose API key must be used to authenticate incoming webhook requests. When set, requests authenticated with any other user''s credentials are rejected. This user also posts automated deploy-status comments on work packages. Defaults to the system user when not set.
+ label_github_comment_user: GitHub 수행자
+ label_github_webhook_secret: Webhook 비밀번호
+ text_github_comment_user_info: '들어오는 webhook 요청을 인증하는 데 API 키를 사용해야 하는 OpenProject 사용자입니다. 설정하면, 다른 사용자의 자격 증명으로 인증된 요청은 거부됩니다. 이 사용자는 작업 패키지에 자동화된 배포 상태 코멘트를 게시하기도 합니다. 설정하지 않으면, 시스템 사용자로 기본 설정됩니다.
'
- text_github_webhook_secret_missing_warning: 'No webhook secret is configured. Any request to the GitHub webhook endpoint will be accepted without verification, which may allow unauthorized actors to forge events. It is strongly recommended to set a secret.
+ text_github_webhook_secret_missing_warning: 'Webhook 비밀번호가 구성되지 않았습니다. GitHub webhook 엔드포인트에 대한 모든 요청이 확인 없이 수락되므로 권한이 없는 수행자가 이벤트를 위조할 수 있습니다. 비밀번호를 설정하는 것이 좋습니다.
'
- text_github_webhook_secret_info: 'A secret token shared with GitHub when configuring the webhook. When set, OpenProject verifies the X-Hub-Signature-256 header on every incoming request, rejecting payloads that do not match. Leave blank to skip verification (not recommended).
+ text_github_webhook_secret_info: 'Webhook을 구성할 때 GitHub와 공유되는 비밀 토큰입니다. 설정하면, OpenProject는 들어오는 모든 요청에서 X-Hub-Signature-256 헤더를 확인하여 일치하지 않는 페이로드를 거부합니다. 확인을 건너뛰려면 비워 두세요(권장하지 않음).
'
plugin_openproject_github_integration:
diff --git a/modules/github_integration/config/locales/crowdin/uk.yml b/modules/github_integration/config/locales/crowdin/uk.yml
index 1d656a088e5..0568ce3d7ce 100644
--- a/modules/github_integration/config/locales/crowdin/uk.yml
+++ b/modules/github_integration/config/locales/crowdin/uk.yml
@@ -43,15 +43,15 @@ uk:
label_github_integration: Інтеграція GitHub
notice_deploy_target_created: Створено ціль розгортання
notice_deploy_target_destroyed: Ціль розгортання видалено
- label_github_comment_user: GitHub actor
- label_github_webhook_secret: Webhook secret
- text_github_comment_user_info: 'The OpenProject user whose API key must be used to authenticate incoming webhook requests. When set, requests authenticated with any other user''s credentials are rejected. This user also posts automated deploy-status comments on work packages. Defaults to the system user when not set.
+ label_github_comment_user: Суб’єкт GitHub
+ label_github_webhook_secret: Секрет вебхука
+ text_github_comment_user_info: 'Це користувач OpenProject, чий API-ключ має використовуватися для автентифікації вхідних запитів вебхука. Якщо налаштовано, запити, автентифіковані за допомогою облікових даних будь-якого іншого користувача, буде відхилено. Цей користувач також автоматично додає коментарі щодо статусу розгортання до пакетів робіт. За замовчуванням це системний користувач, якщо не вказати іншого.
'
- text_github_webhook_secret_missing_warning: 'No webhook secret is configured. Any request to the GitHub webhook endpoint will be accepted without verification, which may allow unauthorized actors to forge events. It is strongly recommended to set a secret.
+ text_github_webhook_secret_missing_warning: 'Секрет вебхука не налаштовано. Усі запити до кінцевої точки вебхука GitHub прийматимуться без перевірки, через що у неавторизованих суб’єктів може бути змога підробляти події. Наполегливо рекомендуємо налаштувати секрет.
'
- text_github_webhook_secret_info: 'A secret token shared with GitHub when configuring the webhook. When set, OpenProject verifies the X-Hub-Signature-256 header on every incoming request, rejecting payloads that do not match. Leave blank to skip verification (not recommended).
+ text_github_webhook_secret_info: 'Це секретний маркер, який передається GitHub при налаштуванні вебхука. Якщо налаштовано, OpenProject перевіряє заголовок X-Hub-Signature-256 для кожного вхідного запиту й відхиляє корисне навантаження, яке не відповідає вимогам. Залиште поле порожнім, щоб пропускати перевірку (не рекомендуємо).
'
plugin_openproject_github_integration:
diff --git a/modules/github_integration/config/locales/crowdin/zh-CN.yml b/modules/github_integration/config/locales/crowdin/zh-CN.yml
index fc749cd0511..9868acfa388 100644
--- a/modules/github_integration/config/locales/crowdin/zh-CN.yml
+++ b/modules/github_integration/config/locales/crowdin/zh-CN.yml
@@ -43,15 +43,15 @@ zh-CN:
label_github_integration: GitHub 集成
notice_deploy_target_created: 部署目标已创建
notice_deploy_target_destroyed: 部署目标已删除
- label_github_comment_user: GitHub actor
- label_github_webhook_secret: Webhook secret
- text_github_comment_user_info: 'The OpenProject user whose API key must be used to authenticate incoming webhook requests. When set, requests authenticated with any other user''s credentials are rejected. This user also posts automated deploy-status comments on work packages. Defaults to the system user when not set.
+ label_github_comment_user: GitHub 执行者
+ label_github_webhook_secret: Webhook 密钥
+ text_github_comment_user_info: '必须使用其 API 密钥对传入的 Webhook 请求进行身份验证的 OpenProject 用户。如果设置了此用户,则会拒绝使用其他任何用户凭据进行身份验证的请求。该用户还会对工作包发布自动部署状态评论。如果未设置此用户,则默认使用系统用户。
'
- text_github_webhook_secret_missing_warning: 'No webhook secret is configured. Any request to the GitHub webhook endpoint will be accepted without verification, which may allow unauthorized actors to forge events. It is strongly recommended to set a secret.
+ text_github_webhook_secret_missing_warning: '未配置 webhook 密钥。任何向 GitHub webhook 端点发出的请求都会被接受,无需验证,这可能导致未经授权的执行者伪造事件。强烈建议设置密钥 。
'
- text_github_webhook_secret_info: 'A secret token shared with GitHub when configuring the webhook. When set, OpenProject verifies the X-Hub-Signature-256 header on every incoming request, rejecting payloads that do not match. Leave blank to skip verification (not recommended).
+ text_github_webhook_secret_info: '配置 webhook 时与 GitHub 共享的密钥令牌。设置后,OpenProject 会验证每个传入请求的 X-Hub-Signature-256 标头,拒绝不匹配的有效载荷。留空表示跳过验证(不推荐)。
'
plugin_openproject_github_integration:
diff --git a/modules/gitlab_integration/config/locales/crowdin/es.yml b/modules/gitlab_integration/config/locales/crowdin/es.yml
index d15ef37e583..6c635e8e631 100644
--- a/modules/gitlab_integration/config/locales/crowdin/es.yml
+++ b/modules/gitlab_integration/config/locales/crowdin/es.yml
@@ -49,9 +49,9 @@ es:
attributes:
labels:
invalid_schema: 'debe ser una matriz de hashes con las claves: color, título'
- label_gitlab_integration: GitLab Integration
- label_gitlab_actor: GitLab actor
- label_gitlab_webhook_secret: Webhook secret
+ label_gitlab_integration: Integración con GitLab
+ label_gitlab_actor: Usuario de GitLab
+ label_gitlab_webhook_secret: Secreto de webhook
text_gitlab_actor_info: 'The OpenProject user whose API key must be used to authenticate incoming webhook requests. When set, requests authenticated with any other user''s credentials are rejected. This user also posts automated comments on work packages. Defaults to the system user when not set.
'
diff --git a/modules/gitlab_integration/config/locales/crowdin/fr.yml b/modules/gitlab_integration/config/locales/crowdin/fr.yml
index ffca9ec7d74..e685028eb6c 100644
--- a/modules/gitlab_integration/config/locales/crowdin/fr.yml
+++ b/modules/gitlab_integration/config/locales/crowdin/fr.yml
@@ -49,16 +49,16 @@ fr:
attributes:
labels:
invalid_schema: 'doit être un tableau de hachages avec les clés : color, title'
- label_gitlab_integration: GitLab Integration
- label_gitlab_actor: GitLab actor
- label_gitlab_webhook_secret: Webhook secret
- text_gitlab_actor_info: 'The OpenProject user whose API key must be used to authenticate incoming webhook requests. When set, requests authenticated with any other user''s credentials are rejected. This user also posts automated comments on work packages. Defaults to the system user when not set.
+ label_gitlab_integration: Intégration de GitLab
+ label_gitlab_actor: Acteur GitLab
+ label_gitlab_webhook_secret: Secret du webhook
+ text_gitlab_actor_info: 'L''utilisateur d''OpenProject dont la clé d''API doit être utilisée pour authentifier les demandes de webhook entrantes. Lorsqu''il est défini, les demandes authentifiées avec les informations d''identification de tout autre utilisateur sont rejetées. Cet utilisateur publie également des commentaires automatisés sur les lots de travaux. Par défaut, il s''agit de l''utilisateur du système s''il n''est pas défini.
'
- text_gitlab_webhook_secret_info: 'A secret token shared with GitLab when configuring the webhook. When set, OpenProject verifies the X-Gitlab-Token header on every incoming request, rejecting payloads that do not match. Leave blank to skip verification (not recommended).
+ text_gitlab_webhook_secret_info: 'Un jeton secret partagé avec GitLab lors de la configuration du webhook. Lorsqu''il est défini, OpenProject vérifie l''en-tête X-Gitlab-Token sur chaque requête entrante et rejette les charges utiles qui ne correspondent pas. Laissez l''espace vide pour ignorer la vérification (non recommandé).
'
- text_gitlab_webhook_secret_missing_warning: 'No webhook secret is configured. Any request to the GitLab webhook endpoint will be accepted without verification, which may allow unauthorized actors to forge events. It is strongly recommended to set a secret.
+ text_gitlab_webhook_secret_missing_warning: 'Aucun secret de webhook n''est configuré. Toute demande adressée au point de terminaison du webhook de GitLab sera acceptée sans vérification, ce qui peut permettre à des personnes non autorisées de falsifier des événements. Il est fortement recommandé de définir un secret.
'
project_module_gitlab: GitLab
diff --git a/modules/gitlab_integration/config/locales/crowdin/it.yml b/modules/gitlab_integration/config/locales/crowdin/it.yml
index b1cf3c3d331..250da997037 100644
--- a/modules/gitlab_integration/config/locales/crowdin/it.yml
+++ b/modules/gitlab_integration/config/locales/crowdin/it.yml
@@ -49,16 +49,16 @@ it:
attributes:
labels:
invalid_schema: 'deve essere un array di hash con le chiavi: colore, titolo'
- label_gitlab_integration: GitLab Integration
- label_gitlab_actor: GitLab actor
+ label_gitlab_integration: Integrazione GitLab
+ label_gitlab_actor: Attore GitLab
label_gitlab_webhook_secret: Webhook secret
- text_gitlab_actor_info: 'The OpenProject user whose API key must be used to authenticate incoming webhook requests. When set, requests authenticated with any other user''s credentials are rejected. This user also posts automated comments on work packages. Defaults to the system user when not set.
+ text_gitlab_actor_info: 'L''utente OpenProject la cui chiave API deve essere utilizzata per autenticare le richieste webhook in ingresso. Se impostato, le richieste autenticate con le credenziali di qualsiasi altro utente verranno rifiutate. Questo utente pubblica anche commenti automatici sulle macro-attività. Se non impostato, viene utilizzato l''utente di sistema.
'
- text_gitlab_webhook_secret_info: 'A secret token shared with GitLab when configuring the webhook. When set, OpenProject verifies the X-Gitlab-Token header on every incoming request, rejecting payloads that do not match. Leave blank to skip verification (not recommended).
+ text_gitlab_webhook_secret_info: 'Un token segreto condiviso con GitLab durante la configurazione del webhook. Se impostato, OpenProject verifica l''header X-Gitlab-Token su ogni richiesta in ingresso, rifiutando i payload che non corrispondono. Lascia vuoto per saltare la verifica (non consigliato).
'
- text_gitlab_webhook_secret_missing_warning: 'No webhook secret is configured. Any request to the GitLab webhook endpoint will be accepted without verification, which may allow unauthorized actors to forge events. It is strongly recommended to set a secret.
+ text_gitlab_webhook_secret_missing_warning: 'Nessun webhook secret è configurato. Qualsiasi richiesta all''endpoint webhook di GitLab verrà accettata senza verifica, il che potrebbe consentire ad attori non autorizzati di falsificare eventi. Si consiglia vivamente di impostare un secret.
'
project_module_gitlab: GitLab
diff --git a/modules/gitlab_integration/config/locales/crowdin/ko.yml b/modules/gitlab_integration/config/locales/crowdin/ko.yml
index 868c914be89..178096d80b4 100644
--- a/modules/gitlab_integration/config/locales/crowdin/ko.yml
+++ b/modules/gitlab_integration/config/locales/crowdin/ko.yml
@@ -49,16 +49,16 @@ ko:
attributes:
labels:
invalid_schema: '키가 있는 해시 배열이어야 합니다: color, title'
- label_gitlab_integration: GitLab Integration
- label_gitlab_actor: GitLab actor
- label_gitlab_webhook_secret: Webhook secret
- text_gitlab_actor_info: 'The OpenProject user whose API key must be used to authenticate incoming webhook requests. When set, requests authenticated with any other user''s credentials are rejected. This user also posts automated comments on work packages. Defaults to the system user when not set.
+ label_gitlab_integration: GitLab 통합
+ label_gitlab_actor: GitLab 수행자
+ label_gitlab_webhook_secret: Webhook 비밀번호
+ text_gitlab_actor_info: '들어오는 webhook 요청을 인증하는 데 API 키를 사용해야 하는 OpenProject 사용자입니다. 설정하면, 다른 사용자의 자격 증명으로 인증된 요청은 거부됩니다. 이 사용자는 작업 패키지에 자동화된 코멘트를 게시하기도 합니다. 설정하지 않으면, 시스템 사용자로 기본 설정됩니다.
'
- text_gitlab_webhook_secret_info: 'A secret token shared with GitLab when configuring the webhook. When set, OpenProject verifies the X-Gitlab-Token header on every incoming request, rejecting payloads that do not match. Leave blank to skip verification (not recommended).
+ text_gitlab_webhook_secret_info: 'Webhook을 구성할 때 GitLab과 공유되는 비밀 토큰입니다. 설정하면, OpenProject는 들어오는 모든 요청에서 X-Gitlab-Token 헤더를 확인하여 일치하지 않는 페이로드를 거부합니다. 확인을 건너뛰려면 비워 두세요(권장하지 않음).
'
- text_gitlab_webhook_secret_missing_warning: 'No webhook secret is configured. Any request to the GitLab webhook endpoint will be accepted without verification, which may allow unauthorized actors to forge events. It is strongly recommended to set a secret.
+ text_gitlab_webhook_secret_missing_warning: 'Webhook 비밀번호가 구성되지 않았습니다. GitLab webhook 엔드포인트에 대한 모든 요청이 확인 없이 수락되므로 권한이 없는 수행자가 이벤트를 위조할 수 있습니다. 비밀번호를 설정하는 것이 좋습니다.
'
project_module_gitlab: GitLab
diff --git a/modules/gitlab_integration/config/locales/crowdin/pt-BR.yml b/modules/gitlab_integration/config/locales/crowdin/pt-BR.yml
index 6446149baa4..f49631ff513 100644
--- a/modules/gitlab_integration/config/locales/crowdin/pt-BR.yml
+++ b/modules/gitlab_integration/config/locales/crowdin/pt-BR.yml
@@ -23,7 +23,7 @@
---
pt-BR:
attributes:
- commit: Commit
+ commit: Confirmar
gitlab: Identificador do GitLab
gitlab_avatar_url: URL da imagem de perfil
gitlab_email: E-mail do GitLab
@@ -49,16 +49,16 @@ pt-BR:
attributes:
labels:
invalid_schema: 'deve ser um array de hashes com as chaves: cor, título'
- label_gitlab_integration: GitLab Integration
- label_gitlab_actor: GitLab actor
- label_gitlab_webhook_secret: Webhook secret
- text_gitlab_actor_info: 'The OpenProject user whose API key must be used to authenticate incoming webhook requests. When set, requests authenticated with any other user''s credentials are rejected. This user also posts automated comments on work packages. Defaults to the system user when not set.
+ label_gitlab_integration: Integração do GitLab
+ label_gitlab_actor: Ator do GitLab
+ label_gitlab_webhook_secret: Segredo do webhook
+ text_gitlab_actor_info: 'O usuário do OpenProject cuja chave de API deve ser usada para autenticar requisições de webhook recebidas. Quando definido, requisições autenticadas com credenciais de qualquer outro usuário são rejeitadas. Este usuário também publica comentários automatizados em pacotes de trabalho. O padrão é o usuário do sistema quando não for definido.
'
- text_gitlab_webhook_secret_info: 'A secret token shared with GitLab when configuring the webhook. When set, OpenProject verifies the X-Gitlab-Token header on every incoming request, rejecting payloads that do not match. Leave blank to skip verification (not recommended).
+ text_gitlab_webhook_secret_info: 'Um token secreto compartilhado com o GitLab ao configurar o webhook. Quando definido, o OpenProject verifica o cabeçalho X-Gitlab-Token em cada requisição recebida, rejeitando payloads que não correspondam. Deixe em branco para pular a verificação (não recomendado).
'
- text_gitlab_webhook_secret_missing_warning: 'No webhook secret is configured. Any request to the GitLab webhook endpoint will be accepted without verification, which may allow unauthorized actors to forge events. It is strongly recommended to set a secret.
+ text_gitlab_webhook_secret_missing_warning: 'Nenhum segredo de webhook está configurado. Qualquer requisição ao endpoint de webhook do GitLab será aceita sem verificação, o que pode permitir que agentes não autorizados falsifiquem eventos. É altamente recomendado definir um segredo.
'
project_module_gitlab: GitLab
diff --git a/modules/gitlab_integration/config/locales/crowdin/uk.yml b/modules/gitlab_integration/config/locales/crowdin/uk.yml
index f654e310a39..78a3b1cd553 100644
--- a/modules/gitlab_integration/config/locales/crowdin/uk.yml
+++ b/modules/gitlab_integration/config/locales/crowdin/uk.yml
@@ -49,16 +49,16 @@ uk:
attributes:
labels:
invalid_schema: 'має бути масивом гешів із ключами: color, title'
- label_gitlab_integration: GitLab Integration
- label_gitlab_actor: GitLab actor
- label_gitlab_webhook_secret: Webhook secret
- text_gitlab_actor_info: 'The OpenProject user whose API key must be used to authenticate incoming webhook requests. When set, requests authenticated with any other user''s credentials are rejected. This user also posts automated comments on work packages. Defaults to the system user when not set.
+ label_gitlab_integration: Інтеграція з GitLab
+ label_gitlab_actor: Суб’єкт GitLab
+ label_gitlab_webhook_secret: Секрет вебхука
+ text_gitlab_actor_info: 'Це користувач OpenProject, чий API-ключ має використовуватися для автентифікації вхідних запитів вебхука. Якщо налаштовано, запити, автентифіковані за допомогою облікових даних будь-якого іншого користувача, буде відхилено. Цей користувач також автоматично додає коментарі до пакетів робіт. За замовчуванням це системний користувач, якщо не вказати іншого.
'
- text_gitlab_webhook_secret_info: 'A secret token shared with GitLab when configuring the webhook. When set, OpenProject verifies the X-Gitlab-Token header on every incoming request, rejecting payloads that do not match. Leave blank to skip verification (not recommended).
+ text_gitlab_webhook_secret_info: 'Це секретний маркер, який передається GitLab при налаштуванні вебхука. Якщо налаштовано, OpenProject перевіряє заголовок X-Gitlab-Token для кожного вхідного запиту й відхиляє корисне навантаження, яке не відповідає вимогам. Залиште поле порожнім, щоб пропускати перевірку (не рекомендуємо).
'
- text_gitlab_webhook_secret_missing_warning: 'No webhook secret is configured. Any request to the GitLab webhook endpoint will be accepted without verification, which may allow unauthorized actors to forge events. It is strongly recommended to set a secret.
+ text_gitlab_webhook_secret_missing_warning: 'Секрет вебхука не налаштовано. Усі запити до кінцевої точки вебхука GitLab прийматимуться без перевірки, через що у неавторизованих суб’єктів може бути змога підробляти події. Наполегливо рекомендуємо налаштувати секрет.
'
project_module_gitlab: GitLab
diff --git a/modules/gitlab_integration/config/locales/crowdin/zh-CN.yml b/modules/gitlab_integration/config/locales/crowdin/zh-CN.yml
index 8de0547dcb9..cfd0d17bd72 100644
--- a/modules/gitlab_integration/config/locales/crowdin/zh-CN.yml
+++ b/modules/gitlab_integration/config/locales/crowdin/zh-CN.yml
@@ -49,16 +49,16 @@ zh-CN:
attributes:
labels:
invalid_schema: 必须是键为“颜色,标题”的哈希数组
- label_gitlab_integration: GitLab Integration
- label_gitlab_actor: GitLab actor
- label_gitlab_webhook_secret: Webhook secret
- text_gitlab_actor_info: 'The OpenProject user whose API key must be used to authenticate incoming webhook requests. When set, requests authenticated with any other user''s credentials are rejected. This user also posts automated comments on work packages. Defaults to the system user when not set.
+ label_gitlab_integration: GitLab 集成
+ label_gitlab_actor: GitLab 执行者
+ label_gitlab_webhook_secret: Webhook 密钥
+ text_gitlab_actor_info: '必须使用其 API 密钥对传入的 Webhook 请求进行身份验证的 OpenProject 用户。如果设置了此用户,则会拒绝使用其他任何用户凭据进行身份验证的请求。该用户还会对工作包发布自动评论。如果未设置此用户,则默认使用系统用户。
'
- text_gitlab_webhook_secret_info: 'A secret token shared with GitLab when configuring the webhook. When set, OpenProject verifies the X-Gitlab-Token header on every incoming request, rejecting payloads that do not match. Leave blank to skip verification (not recommended).
+ text_gitlab_webhook_secret_info: '配置 webhook 时与 GitLab 共享的密钥令牌。设置后,OpenProject 会验证每个传入请求的 X-Gitlab-Token 标头,拒绝不匹配的有效载荷。留空表示跳过验证(不推荐)。
'
- text_gitlab_webhook_secret_missing_warning: 'No webhook secret is configured. Any request to the GitLab webhook endpoint will be accepted without verification, which may allow unauthorized actors to forge events. It is strongly recommended to set a secret.
+ text_gitlab_webhook_secret_missing_warning: '未配置 webhook 密钥。任何向 GitLab webhook 端点发出的请求都会被接受,无需验证,这可能导致未经授权的执行者伪造事件。强烈建议设置密钥 。
'
project_module_gitlab: GitLab
diff --git a/modules/grids/config/locales/crowdin/js-pl.yml b/modules/grids/config/locales/crowdin/js-pl.yml
index 2f7dd13170e..99daad242b8 100644
--- a/modules/grids/config/locales/crowdin/js-pl.yml
+++ b/modules/grids/config/locales/crowdin/js-pl.yml
@@ -30,7 +30,7 @@ pl:
finished: Zakończone
discontinued: Przerwane
subprojects:
- title: Podppzycje
+ title: Podpozycje
project_favorites:
title: Ulubione projekty
no_results: Obecnie nie masz żadnych ulubionych projektów. Kliknij ikonę gwiazdki na pulpicie nawigacyjnym projektu, aby dodać go do ulubionych.
diff --git a/modules/grids/config/locales/crowdin/pl.yml b/modules/grids/config/locales/crowdin/pl.yml
index ea9c0b2e5f7..c17022c17e6 100644
--- a/modules/grids/config/locales/crowdin/pl.yml
+++ b/modules/grids/config/locales/crowdin/pl.yml
@@ -6,9 +6,9 @@ pl:
empty: Ten widżet jest obecnie pusty.
not_available: Ten widżet jest niedostępny.
subitems:
- title: Podppzycje
+ title: Podpozycje
no_results: Nie ma żadnych widocznych elementów podrzędnych.
- view_all_subitems: Wyświetl wszystkie podppzycje
+ view_all_subitems: Wyświetl wszystkie podpozycje
button_text: Podelement
members:
title: Członkowie
diff --git a/modules/job_status/config/locales/crowdin/es.yml b/modules/job_status/config/locales/crowdin/es.yml
index cc04d479a1d..b90aa8181f8 100644
--- a/modules/job_status/config/locales/crowdin/es.yml
+++ b/modules/job_status/config/locales/crowdin/es.yml
@@ -6,7 +6,7 @@ es:
description: Listado y estado de los trabajos en segundo plano.
job_status_dialog:
download_starts: La descarga debería iniciarse automáticamente.
- click_to_download: Or, [click here](download_url) to download.
+ click_to_download: O bien, [haz clic aquí](download_url) para descargarlo.
title: Estado de trabajo en segundo plano.
redirect: Se le está redirigiendo.
redirect_link: Haga clic aquí para continuar.
diff --git a/modules/job_status/config/locales/crowdin/it.yml b/modules/job_status/config/locales/crowdin/it.yml
index c6fdedc4937..175d3febe7b 100644
--- a/modules/job_status/config/locales/crowdin/it.yml
+++ b/modules/job_status/config/locales/crowdin/it.yml
@@ -6,7 +6,7 @@ it:
description: Elenco e stato dei job in background.
job_status_dialog:
download_starts: Il download dovrebbe iniziare automaticamente.
- click_to_download: Or, [click here](download_url) to download.
+ click_to_download: Oppure, [clicca qui](download_url) per scaricare.
title: Stato del lavoro in background
redirect: È in corso il reindirizzamento.
redirect_link: Clicca qui per continuare.
diff --git a/modules/job_status/config/locales/crowdin/ko.yml b/modules/job_status/config/locales/crowdin/ko.yml
index 29d589848d7..fdb152d18d3 100644
--- a/modules/job_status/config/locales/crowdin/ko.yml
+++ b/modules/job_status/config/locales/crowdin/ko.yml
@@ -6,7 +6,7 @@ ko:
description: 백그라운드 작업 목록 및 상태.
job_status_dialog:
download_starts: 자동으로 다운로드가 시작됩니다.
- click_to_download: Or, [click here](download_url) to download.
+ click_to_download: 또는 [여기를 클릭](download_url)하여 다운로드하세요.
title: 백그라운드 작업 상태
redirect: 리디렉션 중입니다.
redirect_link: 계속하려면 여기를 클릭하세요.
diff --git a/modules/job_status/config/locales/crowdin/pt-BR.yml b/modules/job_status/config/locales/crowdin/pt-BR.yml
index d1c9c061ccb..028fd843a4c 100644
--- a/modules/job_status/config/locales/crowdin/pt-BR.yml
+++ b/modules/job_status/config/locales/crowdin/pt-BR.yml
@@ -6,7 +6,7 @@ pt-BR:
description: Listagem e situação dos trabalhos em segundo plano.
job_status_dialog:
download_starts: O download deverá começar automaticamente.
- click_to_download: Or, [click here](download_url) to download.
+ click_to_download: Ou [clique aqui](download_url) para baixar.
title: Status do trabalho em segundo plano
redirect: Você está sendo redirecionado.
redirect_link: Clique aqui para continuar.
diff --git a/modules/job_status/config/locales/crowdin/uk.yml b/modules/job_status/config/locales/crowdin/uk.yml
index 547eef0ffa0..cdce93a0dd3 100644
--- a/modules/job_status/config/locales/crowdin/uk.yml
+++ b/modules/job_status/config/locales/crowdin/uk.yml
@@ -6,7 +6,7 @@ uk:
description: Список і статус фонових завдань.
job_status_dialog:
download_starts: Завантаження має початись автоматично.
- click_to_download: Or, [click here](download_url) to download.
+ click_to_download: Або [натисніть тут](download_url), щоб завантажити.
title: Статус фонового завдання
redirect: Вас буде переспрямовано.
redirect_link: Натисніть тут, щоб продовжити.
diff --git a/modules/job_status/config/locales/crowdin/zh-CN.yml b/modules/job_status/config/locales/crowdin/zh-CN.yml
index 3a02aa4d8d7..6990e7d0d0f 100644
--- a/modules/job_status/config/locales/crowdin/zh-CN.yml
+++ b/modules/job_status/config/locales/crowdin/zh-CN.yml
@@ -6,7 +6,7 @@ zh-CN:
description: 后台作业的列表和状态。
job_status_dialog:
download_starts: 下载会自动开始。
- click_to_download: Or, [click here](download_url) to download.
+ click_to_download: 或[点击此处](download_url)进行下载。
title: 后台作业状态
redirect: 正在将您重定向。
redirect_link: 请点击此处继续。
diff --git a/modules/ldap_groups/app/components/ldap_groups/synchronized_filters/destroy_dialog_component.html.erb b/modules/ldap_groups/app/components/ldap_groups/synchronized_filters/destroy_dialog_component.html.erb
new file mode 100644
index 00000000000..14fbefd25ac
--- /dev/null
+++ b/modules/ldap_groups/app/components/ldap_groups/synchronized_filters/destroy_dialog_component.html.erb
@@ -0,0 +1,64 @@
+<%#-- copyright
+OpenProject is an open source project management software.
+Copyright (C) the OpenProject GmbH
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License version 3.
+
+OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
+Copyright (C) 2006-2013 Jean-Philippe Lang
+Copyright (C) 2010-2013 the ChiliProject Team
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+See COPYRIGHT and LICENSE files for more details.
+
+++#%>
+
+<%=
+ render(
+ Primer::OpenProject::DangerDialog.new(
+ title: I18n.t("ldap_groups.synchronized_filters.destroy.title", name: @filter.name),
+ form_arguments:,
+ size: :large
+ )
+ ) do |dialog|
+ dialog.with_confirmation_message do |message|
+ message.with_heading(tag: :h2) { I18n.t("ldap_groups.synchronized_filters.destroy.heading", name: @filter.name) }
+ message.with_description_content(
+ I18n.t(
+ "ldap_groups.synchronized_filters.destroy.confirmation",
+ name: @filter.name,
+ groups_count: @filter.groups.count
+ )
+ )
+ end
+ if @filter.groups.any?
+ dialog.with_additional_details do
+ concat content_tag(:p, I18n.t("ldap_groups.synchronized_filters.destroy.removed_groups"))
+ concat(
+ content_tag(:ul) do
+ safe_join(
+ @filter.groups.map do |synced_group|
+ content_tag(:li, link_to(synced_group.group.name, edit_group_path(synced_group.group), target: "_blank", rel: "noopener"))
+ end
+ )
+ end
+ )
+ end
+ end
+ dialog.with_confirmation_check_box_content(I18n.t(:text_permanent_delete_confirmation_checkbox_label))
+ end
+%>
diff --git a/modules/ldap_groups/app/components/ldap_groups/synchronized_filters/destroy_dialog_component.rb b/modules/ldap_groups/app/components/ldap_groups/synchronized_filters/destroy_dialog_component.rb
new file mode 100644
index 00000000000..07e961f5727
--- /dev/null
+++ b/modules/ldap_groups/app/components/ldap_groups/synchronized_filters/destroy_dialog_component.rb
@@ -0,0 +1,49 @@
+# frozen_string_literal: true
+
+#-- copyright
+# OpenProject is an open source project management software.
+# Copyright (C) the OpenProject GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License version 3.
+#
+# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
+# Copyright (C) 2006-2013 Jean-Philippe Lang
+# Copyright (C) 2010-2013 the ChiliProject Team
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# See COPYRIGHT and LICENSE files for more details.
+#++
+
+module LdapGroups
+ module SynchronizedFilters
+ class DestroyDialogComponent < ApplicationComponent
+ include OpTurbo::Streamable
+
+ def initialize(filter:)
+ super
+ @filter = filter
+ end
+
+ def form_arguments
+ {
+ action: ldap_groups_synchronized_filter_path(@filter),
+ method: :delete
+ }
+ end
+ end
+ end
+end
diff --git a/modules/ldap_groups/app/components/ldap_groups/synchronized_filters/row_component.rb b/modules/ldap_groups/app/components/ldap_groups/synchronized_filters/row_component.rb
index b6890df1ba1..2c6a0ed10b9 100644
--- a/modules/ldap_groups/app/components/ldap_groups/synchronized_filters/row_component.rb
+++ b/modules/ldap_groups/app/components/ldap_groups/synchronized_filters/row_component.rb
@@ -75,7 +75,8 @@ module LdapGroups
link_to I18n.t(:button_delete),
{ controller: table.target_controller, ldap_filter_id: model.id, action: :destroy_info },
class: "icon icon-delete",
- title: t(:button_delete)
+ title: t(:button_delete),
+ data: { turbo_stream: true }
end
end
end
diff --git a/modules/ldap_groups/app/components/ldap_groups/synchronized_groups/destroy_dialog_component.html.erb b/modules/ldap_groups/app/components/ldap_groups/synchronized_groups/destroy_dialog_component.html.erb
new file mode 100644
index 00000000000..1f3f0c1f945
--- /dev/null
+++ b/modules/ldap_groups/app/components/ldap_groups/synchronized_groups/destroy_dialog_component.html.erb
@@ -0,0 +1,53 @@
+<%#-- copyright
+OpenProject is an open source project management software.
+Copyright (C) the OpenProject GmbH
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License version 3.
+
+OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
+Copyright (C) 2006-2013 Jean-Philippe Lang
+Copyright (C) 2010-2013 the ChiliProject Team
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+See COPYRIGHT and LICENSE files for more details.
+
+++#%>
+
+<%=
+ render(
+ Primer::OpenProject::DangerDialog.new(
+ title: I18n.t("ldap_groups.synchronized_groups.destroy.title", name: @group.dn),
+ form_arguments:,
+ size: :large
+ )
+ ) do |dialog|
+ dialog.with_confirmation_message do |message|
+ message.with_heading(tag: :h2) { I18n.t("ldap_groups.synchronized_groups.destroy.heading", name: @group.dn) }
+ message.with_description_content(
+ I18n.t(
+ "ldap_groups.synchronized_groups.destroy.confirmation",
+ name: @group.dn,
+ users_count: @group.users.count
+ )
+ )
+ end
+ dialog.with_additional_details do
+ I18n.t("ldap_groups.synchronized_groups.destroy.info")
+ end
+ dialog.with_confirmation_check_box_content(I18n.t(:text_permanent_delete_confirmation_checkbox_label))
+ end
+%>
diff --git a/modules/ldap_groups/app/components/ldap_groups/synchronized_groups/destroy_dialog_component.rb b/modules/ldap_groups/app/components/ldap_groups/synchronized_groups/destroy_dialog_component.rb
new file mode 100644
index 00000000000..fb451b2906f
--- /dev/null
+++ b/modules/ldap_groups/app/components/ldap_groups/synchronized_groups/destroy_dialog_component.rb
@@ -0,0 +1,49 @@
+# frozen_string_literal: true
+
+#-- copyright
+# OpenProject is an open source project management software.
+# Copyright (C) the OpenProject GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License version 3.
+#
+# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
+# Copyright (C) 2006-2013 Jean-Philippe Lang
+# Copyright (C) 2010-2013 the ChiliProject Team
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# See COPYRIGHT and LICENSE files for more details.
+#++
+
+module LdapGroups
+ module SynchronizedGroups
+ class DestroyDialogComponent < ApplicationComponent
+ include OpTurbo::Streamable
+
+ def initialize(group:)
+ super
+ @group = group
+ end
+
+ def form_arguments
+ {
+ action: ldap_groups_synchronized_group_path(@group),
+ method: :delete
+ }
+ end
+ end
+ end
+end
diff --git a/modules/ldap_groups/app/components/ldap_groups/synchronized_groups/row_component.rb b/modules/ldap_groups/app/components/ldap_groups/synchronized_groups/row_component.rb
index 372b3ad912f..6fde8228579 100644
--- a/modules/ldap_groups/app/components/ldap_groups/synchronized_groups/row_component.rb
+++ b/modules/ldap_groups/app/components/ldap_groups/synchronized_groups/row_component.rb
@@ -65,7 +65,8 @@ module LdapGroups
link_to I18n.t(:button_delete),
{ controller: table.target_controller, ldap_group_id: model.id, action: :destroy_info },
class: "icon icon-delete",
- title: t(:button_delete)
+ title: t(:button_delete),
+ data: { turbo_stream: true }
end
end
end
diff --git a/modules/ldap_groups/app/controllers/ldap_groups/synchronized_filters_controller.rb b/modules/ldap_groups/app/controllers/ldap_groups/synchronized_filters_controller.rb
index f9cc03e0e25..b386f89992e 100644
--- a/modules/ldap_groups/app/controllers/ldap_groups/synchronized_filters_controller.rb
+++ b/modules/ldap_groups/app/controllers/ldap_groups/synchronized_filters_controller.rb
@@ -1,5 +1,7 @@
module LdapGroups
class SynchronizedFiltersController < ::ApplicationController
+ include OpTurbo::ComponentStream
+
before_action :require_admin
guard_enterprise_feature(:ldap_groups, except: %i[show destroy]) do
@@ -19,7 +21,9 @@ module LdapGroups
def end; end
- def destroy_info; end
+ def destroy_info
+ respond_with_dialog LdapGroups::SynchronizedFilters::DestroyDialogComponent.new(filter: @filter)
+ end
def create
@filter = SynchronizedFilter.new permitted_params
diff --git a/modules/ldap_groups/app/controllers/ldap_groups/synchronized_groups_controller.rb b/modules/ldap_groups/app/controllers/ldap_groups/synchronized_groups_controller.rb
index 092f8e80c1a..6457c65a3eb 100644
--- a/modules/ldap_groups/app/controllers/ldap_groups/synchronized_groups_controller.rb
+++ b/modules/ldap_groups/app/controllers/ldap_groups/synchronized_groups_controller.rb
@@ -29,6 +29,8 @@
#++
module LdapGroups
class SynchronizedGroupsController < ::ApplicationController
+ include OpTurbo::ComponentStream
+
before_action :require_admin
guard_enterprise_feature(:ldap_groups, except: %i[index show destroy]) do
@@ -79,7 +81,7 @@ module LdapGroups
end
def destroy_info
- render
+ respond_with_dialog LdapGroups::SynchronizedGroups::DestroyDialogComponent.new(group: @group)
end
def destroy
diff --git a/modules/ldap_groups/app/views/ldap_groups/synchronized_filters/destroy_info.html.erb b/modules/ldap_groups/app/views/ldap_groups/synchronized_filters/destroy_info.html.erb
deleted file mode 100644
index 1dfc6e42304..00000000000
--- a/modules/ldap_groups/app/views/ldap_groups/synchronized_filters/destroy_info.html.erb
+++ /dev/null
@@ -1,72 +0,0 @@
-<% html_title(t(:label_administration), t("ldap_groups.synchronized_filters.destroy.title")) -%>
-
-<%= styled_form_tag(
- { action: :destroy, ldap_group_id: @filter.id },
- class: "danger-zone",
- method: :delete
- ) do %>
-
-<% end %>
diff --git a/modules/ldap_groups/app/views/ldap_groups/synchronized_groups/destroy_info.html.erb b/modules/ldap_groups/app/views/ldap_groups/synchronized_groups/destroy_info.html.erb
deleted file mode 100644
index e928e49f766..00000000000
--- a/modules/ldap_groups/app/views/ldap_groups/synchronized_groups/destroy_info.html.erb
+++ /dev/null
@@ -1,38 +0,0 @@
-<% html_title(t(:label_administration), t("ldap_groups.synchronized_groups.destroy.title")) -%>
-
-<%= styled_form_tag(
- { action: :destroy, ldap_group_id: @group.id },
- class: "danger-zone",
- method: :delete
- ) do %>
-
-<% end %>
diff --git a/modules/ldap_groups/config/locales/crowdin/af.yml b/modules/ldap_groups/config/locales/crowdin/af.yml
index 3f456025828..c44214c1db0 100644
--- a/modules/ldap_groups/config/locales/crowdin/af.yml
+++ b/modules/ldap_groups/config/locales/crowdin/af.yml
@@ -46,6 +46,7 @@ af:
zero: No groups were found by the filter
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ af:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/ar.yml b/modules/ldap_groups/config/locales/crowdin/ar.yml
index d47af2986e6..491e467c13a 100644
--- a/modules/ldap_groups/config/locales/crowdin/ar.yml
+++ b/modules/ldap_groups/config/locales/crowdin/ar.yml
@@ -46,6 +46,7 @@ ar:
zero: No groups were found by the filter
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ ar:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/az.yml b/modules/ldap_groups/config/locales/crowdin/az.yml
index 0e1d8e7d7da..c226dbd2209 100644
--- a/modules/ldap_groups/config/locales/crowdin/az.yml
+++ b/modules/ldap_groups/config/locales/crowdin/az.yml
@@ -46,6 +46,7 @@ az:
zero: No groups were found by the filter
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ az:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/be.yml b/modules/ldap_groups/config/locales/crowdin/be.yml
index 57baf1e53a5..006713bfd43 100644
--- a/modules/ldap_groups/config/locales/crowdin/be.yml
+++ b/modules/ldap_groups/config/locales/crowdin/be.yml
@@ -46,6 +46,7 @@ be:
zero: No groups were found by the filter
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ be:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/bg.yml b/modules/ldap_groups/config/locales/crowdin/bg.yml
index fce460176b3..a8529af0b71 100644
--- a/modules/ldap_groups/config/locales/crowdin/bg.yml
+++ b/modules/ldap_groups/config/locales/crowdin/bg.yml
@@ -46,6 +46,7 @@ bg:
zero: Филтърът не откри групи
destroy:
title: Премахване на синхронизирания филтър %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: Ако продължите, синхронизираният филтър %{name} и всички групи %{groups_count} , създадени чрез него, ще бъдат премахнати.
removed_groups: 'Предупреждение: Това ще премахне следните групи от OpenProject, и ще ги премахне от всички проекти!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ bg:
add_new: Добавяне на синхронизирана LDAP група
destroy:
title: Премахване на синхронизирана група %{name}
+ heading: Remove synchronized group %{name}?
confirmation: Ако продължите, синхронизираната група %{name} и всички %{users_count} потребители синхронизирани чрез нея, ще бъдат премахнати.
- info: 'Забележка: Група OpenProject и членовете, добавени извън LDAP синхронизацията, няма да бъдат премахнати.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/ca.yml b/modules/ldap_groups/config/locales/crowdin/ca.yml
index a694fb45615..0ceda291ad7 100644
--- a/modules/ldap_groups/config/locales/crowdin/ca.yml
+++ b/modules/ldap_groups/config/locales/crowdin/ca.yml
@@ -48,6 +48,7 @@ ca:
zero: No s'ha trobat cap grup a través del filtre
destroy:
title: Elimina el filtre de sincronització %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: Si continues, el filtre de sincronització %{name} i tots els grups %{groups_count} creats seran eliminats.
removed_groups: 'Alerta: Aquest eliminarà els següents grups d''OpenProject i l''eliminarà de tots els projectes!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -61,9 +62,9 @@ ca:
add_new: Afegeix grup de sincronització LDAP
destroy:
title: Elimina el grup de sincronització %{name}
+ heading: Remove synchronized group %{name}?
confirmation: Si continues, el grup de sincronització %{name} i tots els %{users_count} usuaris sincronitzats seran eliminats.
- info: 'Nota: El grup d''OpenProject i els membres afegits fora d''aquesta sincronització de LDAP no seran eliminats.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
help_text_html: |
Aquest mòdul et permet configurar sincronitzacions entre grups de LDAP i OpenProject.
Depénent dels grups de LDAP s'ha d'utilitzar els atributs
groupOfNames / memberOf configurats per poder treballar amb OpenProject.
diff --git a/modules/ldap_groups/config/locales/crowdin/ckb-IR.yml b/modules/ldap_groups/config/locales/crowdin/ckb-IR.yml
index f7d8ebfa410..e3eb72b948b 100644
--- a/modules/ldap_groups/config/locales/crowdin/ckb-IR.yml
+++ b/modules/ldap_groups/config/locales/crowdin/ckb-IR.yml
@@ -46,6 +46,7 @@ ckb-IR:
zero: No groups were found by the filter
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ ckb-IR:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/cs.yml b/modules/ldap_groups/config/locales/crowdin/cs.yml
index 93ac443e28c..176664848a8 100644
--- a/modules/ldap_groups/config/locales/crowdin/cs.yml
+++ b/modules/ldap_groups/config/locales/crowdin/cs.yml
@@ -46,6 +46,7 @@ cs:
zero: Ve filtru nebyly nalezeny žádné skupiny
destroy:
title: Odstranit synchronizovaný filtr %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: Pokud budete pokračovat, synchronizovaný filtr %{name} a všechny skupiny %{groups_count} vytvořené prostřednictvím tohoto filtru budou odstraněny.
removed_groups: 'Varování: Toto odstraní následující skupiny z OpenProject a odstraní je ze všech projektů!'
verification_html: Zadejte název filtru %{name} pro potvrzení odstranění.
@@ -59,9 +60,9 @@ cs:
add_new: Přidat synchronizovanou LDAP skupinu
destroy:
title: Odstranit synchronizovanou skupinu %{name}
+ heading: Remove synchronized group %{name}?
confirmation: Pokud budete pokračovat, synchronizovaná skupina %{name} a všichni uživatelé %{users_count} synchronizovaní přes ni budou odstraněni.
- info: 'Poznámka: Samotná OpenProject skupina a členové přidaní mimo tuto LDAP synchronizaci nebudou odstraněni.'
- verification_html: Zadejte název skupiny %{name} pro potvrzení odstranění.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
help_text_html: |
Tento modul umožňuje nastavit synchronizaci mezi LDAP a OpenProject skupinami.
Závisí na LDAP skupinách musí použít atribut
groupOfNames / memberOf nastavený pro práci s OpenProject.
diff --git a/modules/ldap_groups/config/locales/crowdin/da.yml b/modules/ldap_groups/config/locales/crowdin/da.yml
index 8344764f578..fd3a362142b 100644
--- a/modules/ldap_groups/config/locales/crowdin/da.yml
+++ b/modules/ldap_groups/config/locales/crowdin/da.yml
@@ -46,6 +46,7 @@ da:
zero: Ingen grupper blev fundet af filteret
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ da:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/de.yml b/modules/ldap_groups/config/locales/crowdin/de.yml
index f529e109d36..2cddebcd80d 100644
--- a/modules/ldap_groups/config/locales/crowdin/de.yml
+++ b/modules/ldap_groups/config/locales/crowdin/de.yml
@@ -46,6 +46,7 @@ de:
zero: Es wurden keine Gruppen durch den Filter gefunden
destroy:
title: Synchronisierten LDAP-Filter %{name} entfernen
+ heading: Remove synchronized filter %{name}?
confirmation: Wenn Sie fortfahren, wird der Filter %{name} und alle %{groups_count} Gruppen, die durch ihn synchronisiert wurden, entfernt.
removed_groups: 'Warnung: Die folgenden Gruppen werden aus OpenProject entfernt und aus allen Projekten entfernt!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ de:
add_new: Synchronisierte LDAP-Gruppe hinzufügen
destroy:
title: Synchronisierte Gruppe %{name} entfernen
+ heading: Remove synchronized group %{name}?
confirmation: Wenn Sie fortfahren, werden die synchronisierte Gruppe %{name} und alle %{users_count} Benutzer, die durch sie synchronisiert wurden, entfernt.
- info: 'Hinweis: Die OpenProject Gruppe selbst und die Mitglieder, die außerhalb dieser LDAP-Synchronisation hinzugefügt wurden, werden nicht entfernt.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
help_text_html: |
Mit diesem Modul können Sie eine Synchronisation zwischen LDAP und OpenProject Gruppen einrichten.
Es ist abhängig von LDAP-Gruppen müssen das
groupOfNames / member Of Attribut verwenden, das für die Arbeit mit OpenProject eingestellt ist.
diff --git a/modules/ldap_groups/config/locales/crowdin/el.yml b/modules/ldap_groups/config/locales/crowdin/el.yml
index 36de9f18903..1c4168871e6 100644
--- a/modules/ldap_groups/config/locales/crowdin/el.yml
+++ b/modules/ldap_groups/config/locales/crowdin/el.yml
@@ -46,6 +46,7 @@ el:
zero: Δεν βρέθηκαν ομάδες από το φίλτρο
destroy:
title: Αφαίρεση του συγχρονισμένου φίλτρου %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: Αν συνεχίσετε, το συγχρονισμένο φίλτρο %{name} και όλες οι ομάδες %{groups_count} που δημιουργήθηκαν μέσω αυτού θα αφαιρεθούν.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ el:
add_new: Προσθήκη συγχρονισμένης LDAP ομάδας
destroy:
title: Αφαίρεση της συγχρονισμένης ομάδας %{name}
+ heading: Remove synchronized group %{name}?
confirmation: Αν συνεχίσετε, η συγχρονισμένη ομάδα %{name} και οι %{users_count} χρήστες που έχουν συγχρονιστεί μέσω αυτής θα αφαιρεθούν.
- info: 'Σημείωση: Η ομάδας OpenProject και τα μέλη που προστέθηκαν εκτός του συγχρονισμού LDAP δεν θα αφαιρεθούν.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
help_text_html: |
Αυτή η ενότητα σάς επιτρέπει να ρυθμίσετε συγχρονισμό μεταξύ ομάδων LDAP και OpenProject.
Εξαρτάται από τις ομάδες LDAP που πρέπει να χρησιμοποιήσουν το σύνολο χαρακτηριστικών
groupOfNames / memberOf που θα λειτουργούν με το OpenProject.
diff --git a/modules/ldap_groups/config/locales/crowdin/eo.yml b/modules/ldap_groups/config/locales/crowdin/eo.yml
index 3d13671a63e..3773027e6d6 100644
--- a/modules/ldap_groups/config/locales/crowdin/eo.yml
+++ b/modules/ldap_groups/config/locales/crowdin/eo.yml
@@ -46,6 +46,7 @@ eo:
zero: No groups were found by the filter
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ eo:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/es.yml b/modules/ldap_groups/config/locales/crowdin/es.yml
index 8d89cda0ce2..6df3d3a2cf8 100644
--- a/modules/ldap_groups/config/locales/crowdin/es.yml
+++ b/modules/ldap_groups/config/locales/crowdin/es.yml
@@ -46,9 +46,10 @@ es:
zero: No se encontraron grupos con el filtro
destroy:
title: Quitar filtro sincronizado %{name}
+ heading: "¿Deseas eliminar el filtro sincronizado %{name}?"
confirmation: Si continúa, el filtro sincronizado %{name} y los %{groups_count} grupos creados se eliminarán.
removed_groups: 'Advertencia: Se eliminarán los grupos siguientes de OpenProject y se quitarán de todos los proyectos.'
- verification_html: Enter the filter name %{name} to verify the deletion.
+ verification_html: Escribe el nombre del filtro %{name} para confirmar la eliminación.
form:
group_name_attribute_text: Especifique el atributo del grupo de LDAP usado para configurar el nombre del grupo de OpenProject.
filter_string_text: Especifique el filtro LDAP RFC4515 que muestra los grupos en su entorno de LDAP que se sincronizarán con OpenProject.
@@ -59,9 +60,9 @@ es:
add_new: Agregar grupo de LDAP sincronizado
destroy:
title: Quitar grupo sincronizado %{name}
+ heading: "¿Deseas eliminar el grupo sincronizado %{name}?"
confirmation: Si continúa, se eliminarán el grupo sincronizado %{name} y %{users_count} usuarios sincronizados mediante este.
- info: 'Nota: El grupo de OpenProject en sí y los miembros agregados fuera de esta sincronización de LDAP no se eliminarán.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: El propio grupo OpenProject y los miembros añadidos fuera de esta sincronización LDAP no se eliminarán.
help_text_html: |
Este módulo le permite configurar una sincronización entre los grupos LDAP y el proyecto abierto
Depende de que los grupos LDAP que necesiten usar el
groupOfNames / memberOf
diff --git a/modules/ldap_groups/config/locales/crowdin/et.yml b/modules/ldap_groups/config/locales/crowdin/et.yml
index a15dd881a81..666e1c5b966 100644
--- a/modules/ldap_groups/config/locales/crowdin/et.yml
+++ b/modules/ldap_groups/config/locales/crowdin/et.yml
@@ -46,6 +46,7 @@ et:
zero: No groups were found by the filter
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ et:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/eu.yml b/modules/ldap_groups/config/locales/crowdin/eu.yml
index 353b9c35524..939c46c5344 100644
--- a/modules/ldap_groups/config/locales/crowdin/eu.yml
+++ b/modules/ldap_groups/config/locales/crowdin/eu.yml
@@ -46,6 +46,7 @@ eu:
zero: No groups were found by the filter
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ eu:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/fa.yml b/modules/ldap_groups/config/locales/crowdin/fa.yml
index 1a4e284143d..6280b005f11 100644
--- a/modules/ldap_groups/config/locales/crowdin/fa.yml
+++ b/modules/ldap_groups/config/locales/crowdin/fa.yml
@@ -46,6 +46,7 @@ fa:
zero: هیچ گروهی با این فیلتر یافت نشد
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ fa:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/fi.yml b/modules/ldap_groups/config/locales/crowdin/fi.yml
index 58d994b8033..3d1553ec6b6 100644
--- a/modules/ldap_groups/config/locales/crowdin/fi.yml
+++ b/modules/ldap_groups/config/locales/crowdin/fi.yml
@@ -46,6 +46,7 @@ fi:
zero: No groups were found by the filter
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ fi:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/fil.yml b/modules/ldap_groups/config/locales/crowdin/fil.yml
index 55725ff72e2..58c20f17039 100644
--- a/modules/ldap_groups/config/locales/crowdin/fil.yml
+++ b/modules/ldap_groups/config/locales/crowdin/fil.yml
@@ -46,6 +46,7 @@ fil:
zero: No groups were found by the filter
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ fil:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/fr.yml b/modules/ldap_groups/config/locales/crowdin/fr.yml
index 192293948cf..78c0c2991e5 100644
--- a/modules/ldap_groups/config/locales/crowdin/fr.yml
+++ b/modules/ldap_groups/config/locales/crowdin/fr.yml
@@ -46,6 +46,7 @@ fr:
zero: Aucun groupe trouvé par le filtre
destroy:
title: Supprimer le filtre synchronisé %{name}
+ heading: Supprimer le filtre synchronisé %{name} ?
confirmation: Si vous continuez, le filtre synchronisé %{name} et tous les groupes %{groups_count} créés seront supprimés.
removed_groups: 'Attention : ceci supprimera les groupes suivants d''OpenProject et le supprimera de tous les projets !'
verification_html: Saisissez le nom du filtre %{name} pour valider la suppression.
@@ -59,9 +60,9 @@ fr:
add_new: Ajouter un groupe LDAP synchronisé
destroy:
title: Supprimer le groupe synchronisé %{name}
+ heading: Supprimer le groupe synchronisé %{name} ?
confirmation: Si vous continuez, le groupe synchronisé %{name} et tous les utilisateurs %{users_count} synchronisés par le biais de celui-ci seront supprimés.
- info: 'Remarque : Le groupe OpenProject lui-même et les membres ajoutés en dehors de cette synchronisation LDAP ne seront pas supprimés.'
- verification_html: Saisissez le nom du groupe %{name} pour valider la suppression.
+ info: Le groupe OpenProject lui-même et les membres ajoutés en dehors de cette synchronisation LDAP ne seront pas supprimés.
help_text_html: |
Ce module vous permet de configurer une synchronisation entre les groupes LDAP et OpenProject.
Les groupes LDAP doivent avoir l'attribut
groupOfNames / memberOf défini pour fonctionner avec OpenProject.
diff --git a/modules/ldap_groups/config/locales/crowdin/he.yml b/modules/ldap_groups/config/locales/crowdin/he.yml
index 0a75d33fc3c..88a86e2d8d4 100644
--- a/modules/ldap_groups/config/locales/crowdin/he.yml
+++ b/modules/ldap_groups/config/locales/crowdin/he.yml
@@ -46,6 +46,7 @@ he:
zero: No groups were found by the filter
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ he:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/hi.yml b/modules/ldap_groups/config/locales/crowdin/hi.yml
index 92b1393e787..a6fb705309b 100644
--- a/modules/ldap_groups/config/locales/crowdin/hi.yml
+++ b/modules/ldap_groups/config/locales/crowdin/hi.yml
@@ -46,6 +46,7 @@ hi:
zero: No groups were found by the filter
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ hi:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/hr.yml b/modules/ldap_groups/config/locales/crowdin/hr.yml
index b100ef38a75..6fc8914ed52 100644
--- a/modules/ldap_groups/config/locales/crowdin/hr.yml
+++ b/modules/ldap_groups/config/locales/crowdin/hr.yml
@@ -46,6 +46,7 @@ hr:
zero: No groups were found by the filter
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ hr:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/hu.yml b/modules/ldap_groups/config/locales/crowdin/hu.yml
index 1feb8657ea3..b46a1d4a1ed 100644
--- a/modules/ldap_groups/config/locales/crowdin/hu.yml
+++ b/modules/ldap_groups/config/locales/crowdin/hu.yml
@@ -52,6 +52,7 @@ hu:
zero: A szűrő nem talált csoportokat
destroy:
title: Szinkronizált szűrő eltávolítása %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: Az összes szinkronizált szűrő%{name} és az összes csoport %{groups_count} amit létrehozott törölve lesz, ha folytatja.
removed_groups: 'Figyelmeztetés: Ez eltávolítja a következő csoportokat az OpenProject -ből, és eltávolítja az összes projektből!
@@ -71,9 +72,9 @@ hu:
add_new: Szinkronizált LDAP csoport hozzáadása
destroy:
title: Szinkronizált csoport %{name} visszavonása
+ heading: Remove synchronized group %{name}?
confirmation: Az összes szinkronizált csoport%{name} és az összes %{users_count} amit létrehozott törölve lesz, ha folytatja.
- info: 'Megjegyzés: Maga az OpenProject csoport és az ezen az LDAP szinkronizáláson kívül hozzáadott tagok nem kerülnek eltávolításra.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
help_text_html: |
Ez a modul lehetővé teszi az LDAP és az OpenProject csoportok közötti szinkronizálást.
Attól függ, hogy az LDAP-csoportoknak az OpenProject használatához a
groupOfNames / memberOf attribútumot kell használniuk.
diff --git a/modules/ldap_groups/config/locales/crowdin/id.yml b/modules/ldap_groups/config/locales/crowdin/id.yml
index 1882442e533..e7675c7306b 100644
--- a/modules/ldap_groups/config/locales/crowdin/id.yml
+++ b/modules/ldap_groups/config/locales/crowdin/id.yml
@@ -46,6 +46,7 @@ id:
zero: Tidak ada grup yang ditemukan oleh filter
destroy:
title: Hapus filter tersinkronisasi %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: Jika Anda melanjutkan, filter tersinkronisasi %{name} dan semua grup %{groups_count} yang dibuat melaluinya akan dihapus.
removed_groups: 'Peringatan: Ini akan menghapus grup berikut dari OpenProject dan menghapusnya dari semua proyek!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ id:
add_new: Tambahkan grup LDAP tersinkronisasi
destroy:
title: Hapus grup tersinkronisasi %{name}
+ heading: Remove synchronized group %{name}?
confirmation: Jika Anda melanjutkan, grup yang disinkronkan %{name} dan semua %{users_count} pengguna yang disinkronkan melaluinya akan dihapus.
- info: 'Catatan: Grup OpenProject itu sendiri dan anggota yang ditambahkan di luar sinkronisasi LDAP ini tidak akan dihapus.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
help_text_html: '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.
'
diff --git a/modules/ldap_groups/config/locales/crowdin/it.yml b/modules/ldap_groups/config/locales/crowdin/it.yml
index 243edbb506e..33e71bebd7e 100644
--- a/modules/ldap_groups/config/locales/crowdin/it.yml
+++ b/modules/ldap_groups/config/locales/crowdin/it.yml
@@ -46,9 +46,10 @@ it:
zero: Nessun gruppo trovato dal filtro
destroy:
title: Rimuovi filtro sincronizzato %{name}
+ heading: Rimuovere il filtro sincronizzato %{name}?
confirmation: Se continui, il filtro sincronizzato %{name} e tutti i gruppi %{groups_count} creati attraverso di esso verranno rimossi.
removed_groups: 'Attenzione: Questo rimuoverà i seguenti gruppi da OpenProject e lo rimuoverà da tutti i progetti!'
- verification_html: Enter the filter name %{name} to verify the deletion.
+ verification_html: Inserisci il nome del filtro %{name} per verificare l'eliminazione.
form:
group_name_attribute_text: Inserisci l'attributo del gruppo LDAP usato per impostare il nome del gruppo OpenProject.
filter_string_text: Inserisci il filtro LDAP RFC4515 che restituisce i gruppi nel tuo LDAP per sincronizzare con OpenProject.
@@ -59,9 +60,9 @@ it:
add_new: Aggiungi gruppo LDAP sincronizzato
destroy:
title: Rimuovi gruppo sincronizzato %{name}
+ heading: Rimuovere il gruppo sincronizzato %{name}?
confirmation: Se continui, il gruppo sincronizzato %{name} e tutti i %{users_count} utenti sincronizzati con esso verranno rimossi.
- info: 'Nota: il gruppo OpenProject stesso e i membri aggiunti al di fuori di questa sincronizzazione LDAP non verranno rimossi.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: Il gruppo OpenProject stesso e i membri aggiunti al di fuori di questa sincronizzazione LDAP non verranno rimossi.
help_text_html: |
Questo modulo permette di impostare una sincronizzazione tra l'LDAP e i gruppi di OpenProject.
Dipende dall'impostazione dell'attributo
groupOfNames / memberOf nei gruppi LDAP la possibilità di funzionare correttamente con OpenProject.
diff --git a/modules/ldap_groups/config/locales/crowdin/ja.yml b/modules/ldap_groups/config/locales/crowdin/ja.yml
index 98d5a27504a..aa59e5f9610 100644
--- a/modules/ldap_groups/config/locales/crowdin/ja.yml
+++ b/modules/ldap_groups/config/locales/crowdin/ja.yml
@@ -46,6 +46,7 @@ ja:
zero: このフィルタではグループが見つかりませんでした
destroy:
title: 同期されたフィルター %{name} を削除
+ heading: Remove synchronized filter %{name}?
confirmation: 続行すると、同期フィルター %{name} とそれを通して作成されたすべてのグループ %{groups_count} が削除されます。
removed_groups: '警告: 以下のグループを OpenProject から削除し、すべてのプロジェクトから削除します!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ ja:
add_new: 同期済 LDAP グループを追加
destroy:
title: 同期済グループ %{name} を削除
+ heading: Remove synchronized group %{name}?
confirmation: 続行すると、同期済グループ %{name} と、それを通じて同期された %{users_count} ユーザーがすべて削除されます。
- info: '注: OpenProject グループ自体と、この LDAP 同期外で追加されたメンバーは削除されません。'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
help_text_html: |
このモジュールは LDAP グループと OpenProject グループ間の同期を可能にします。
これは LDAPグループ が OpenProject で動作するように設定された
groupOfNames / memberOf 属性を使用する必要があるかどうかに依存します。
diff --git a/modules/ldap_groups/config/locales/crowdin/ka.yml b/modules/ldap_groups/config/locales/crowdin/ka.yml
index 86e23115d6c..79d6887dc3a 100644
--- a/modules/ldap_groups/config/locales/crowdin/ka.yml
+++ b/modules/ldap_groups/config/locales/crowdin/ka.yml
@@ -46,6 +46,7 @@ ka:
zero: No groups were found by the filter
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ ka:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/kk.yml b/modules/ldap_groups/config/locales/crowdin/kk.yml
index babea9c4473..3134527a0ad 100644
--- a/modules/ldap_groups/config/locales/crowdin/kk.yml
+++ b/modules/ldap_groups/config/locales/crowdin/kk.yml
@@ -46,6 +46,7 @@ kk:
zero: No groups were found by the filter
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ kk:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/ko.yml b/modules/ldap_groups/config/locales/crowdin/ko.yml
index 7f4955708ce..b7f1da77c41 100644
--- a/modules/ldap_groups/config/locales/crowdin/ko.yml
+++ b/modules/ldap_groups/config/locales/crowdin/ko.yml
@@ -46,6 +46,7 @@ ko:
zero: 필터로 그룹 찾지 못함
destroy:
title: 동기화된 필터 %{name} 제거
+ heading: Remove synchronized filter %{name}?
confirmation: 계속하는 경우, 동기화된 필터 %{name} 및 이를 통해 생성된 모든 그룹 %{groups_count}개가 제거됩니다.
removed_groups: '경고: 이렇게 하면 OpenProject에서 다음 그룹이 제거되고 모든 프로젝트에서 이것이 제거됩니다.'
verification_html: 삭제를 확인하려면 필터 이름 %{name}(을)를 입력하세요.
@@ -59,9 +60,9 @@ ko:
add_new: 동기화된 LDAP 그룹 추가
destroy:
title: 동기화된 그룹 %{name} 제거
+ heading: Remove synchronized group %{name}?
confirmation: 계속하는 경우, 동기화된 그룹 %{name} 및 이를 통해 동기화된 %{users_count}명의 사용자 모두가 제거됩니다.
- info: '참고: OpenProject 그룹 자체 그리고 이 LDAP 동기화 이외에서 추가된 멤버는 제거되지 않습니다.'
- verification_html: 삭제를 확인하려면 프로젝트 이름 %{name}(을)를 입력하세요.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
help_text_html: |
이 모듈을 통해 LDAP 및 OpenProject 그룹 간에 동기화를 설정할 수 있습니다.
LDAP 그룹은 OpenProject와 작동하도록 설정된
groupOfNames / memberOf 특성을 사용해야 합니다.
diff --git a/modules/ldap_groups/config/locales/crowdin/lt.yml b/modules/ldap_groups/config/locales/crowdin/lt.yml
index ee944a89b1d..91b64e0d796 100644
--- a/modules/ldap_groups/config/locales/crowdin/lt.yml
+++ b/modules/ldap_groups/config/locales/crowdin/lt.yml
@@ -46,6 +46,7 @@ lt:
zero: Nei vienos grupės nerasta pagal filtrą
destroy:
title: Panaikinti sinchronizavimo filtrą %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: Jei tęsite, sinchronizavimo filtras %{name} ir visos grupės (%{groups_count}), kurias jis sukūrė, bus panaikintos.
removed_groups: 'Dėmesio: Tai OpenProjecte panaikins tokias grupes ir ištrins jas iš visų projektų!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ lt:
add_new: Pridėti sinchronizuotą LDAP grupę
destroy:
title: Išimti sinchronizuotą grupę %{name}
+ heading: Remove synchronized group %{name}?
confirmation: Jei tęsite, sinchronizuota grupė %{name} ir visi %{users_count} per ją sinchronizuotų naudotojų bus pašalinti.
- info: 'Pastaba: OpenProject grupė pati ir nariai, pridėti už šios LDAP sinchronizacijos, nebus pašalinti.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
help_text_html: |
Šis modulis leidžia jums nustatyti sinchronizavimą tarp LDAP ir OpenProject grupių.
Jis remiasi tuo, kad LDAP grupės turi naudoti
groupOfNames / memberOf atributų rinkinį, kad dirbtų su OpenProject.
diff --git a/modules/ldap_groups/config/locales/crowdin/lv.yml b/modules/ldap_groups/config/locales/crowdin/lv.yml
index c348603f26c..b819db8c913 100644
--- a/modules/ldap_groups/config/locales/crowdin/lv.yml
+++ b/modules/ldap_groups/config/locales/crowdin/lv.yml
@@ -46,6 +46,7 @@ lv:
zero: No groups were found by the filter
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ lv:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/mn.yml b/modules/ldap_groups/config/locales/crowdin/mn.yml
index 64922bc93b5..126a18d748b 100644
--- a/modules/ldap_groups/config/locales/crowdin/mn.yml
+++ b/modules/ldap_groups/config/locales/crowdin/mn.yml
@@ -46,6 +46,7 @@ mn:
zero: No groups were found by the filter
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ mn:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/ms.yml b/modules/ldap_groups/config/locales/crowdin/ms.yml
index 3cda835abed..c50e8b261ff 100644
--- a/modules/ldap_groups/config/locales/crowdin/ms.yml
+++ b/modules/ldap_groups/config/locales/crowdin/ms.yml
@@ -46,6 +46,7 @@ ms:
zero: Tiada kumpulan yang ditemui penyaring
destroy:
title: Buang saringan yang diselaraskan %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: Jika anda teruskan, saringan yang diselaraskan %{name} dan semua kumpulan %{groups_count} yang dicipta melaluinya akan dikeluarkan.
removed_groups: 'Amaran: Ini akan mengeluarkan kumpulan berikut daripada OpenProject dan mengeluarkannya daripada semua projek!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ ms:
add_new: Tambah kumpulan LDAP yang diselaraskan
destroy:
title: Keluarkan kumpulan yang diselaraskan %{name}
+ heading: Remove synchronized group %{name}?
confirmation: Jika anda teruskan, kumpulan yang diselaraskan %{name} dan semua %{users_count} pengguna yang diselaraskan melaluinya akan dikeluarkan.
- info: 'Perhatian: Kumpulan OpenProject sendiri dan ahli-ahli yang ditambah di luar sinkronisasi LDAP tidak akan dikeluarkan.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
help_text_html: |
Modul ini membenarkan anda untuk menyediakan sinkronisasi antara LDAP dan kumpulan-kumpulan OpenProject.
Ia bergantung kepada keperluan kumpulan LDAP untuk menggunakan
kumpulanNama / ahliKepada set atribut untuk bekerjasama dengan OpenProject.
diff --git a/modules/ldap_groups/config/locales/crowdin/ne.yml b/modules/ldap_groups/config/locales/crowdin/ne.yml
index ace52cdfcaa..bf4c02a81c7 100644
--- a/modules/ldap_groups/config/locales/crowdin/ne.yml
+++ b/modules/ldap_groups/config/locales/crowdin/ne.yml
@@ -46,6 +46,7 @@ ne:
zero: No groups were found by the filter
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ ne:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/nl.yml b/modules/ldap_groups/config/locales/crowdin/nl.yml
index c6c6884edcc..99285df5d45 100644
--- a/modules/ldap_groups/config/locales/crowdin/nl.yml
+++ b/modules/ldap_groups/config/locales/crowdin/nl.yml
@@ -46,6 +46,7 @@ nl:
zero: Er zijn geen groepen gevonden door het filter
destroy:
title: Gesynchroniseerd filter %{name} verwijderen
+ heading: Remove synchronized filter %{name}?
confirmation: Als u doorgaat, zal het gesynchroniseerde filter %{name} en alle groepen %{groups_count} die erdoor zijn aangemaakt worden verwijderd.
removed_groups: 'Waarschuwing: Dit verwijdert de volgende groepen uit OpenProject en verwijdert deze uit alle projecten!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ nl:
add_new: Gesynchroniseerde LDAP groep toevoegen
destroy:
title: Verwijder gesynchroniseerde groep %{name}
+ heading: Remove synchronized group %{name}?
confirmation: Als u doorgaat zal de gesynchroniseerde groep %{name} en alle %{users_count} gebruikers erdoor gesynchroniseerd verwijderd worden.
- info: 'Nota: De OpenProject groep zelf en leden toegevoegd buiten deze LDAP synchronisatie zullen niet verwijderd worden.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
help_text_html: |
Deze module laat u toe synchronisatie tussen LDAP en OpenProject groepen in te stellen.
Het hangt af van LDAP groepen nood om het
groupOfNames / memberOf attribuut te gebruiken ingesteld om te werken met OpenProject.
diff --git a/modules/ldap_groups/config/locales/crowdin/no.yml b/modules/ldap_groups/config/locales/crowdin/no.yml
index 71db0c47958..52d0b2990e0 100644
--- a/modules/ldap_groups/config/locales/crowdin/no.yml
+++ b/modules/ldap_groups/config/locales/crowdin/no.yml
@@ -46,6 +46,7 @@
zero: Ingen grupper ble funnet av filteret
destroy:
title: Fjern synkronisert filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: Hvis du fortsetter, fjernes det synkroniserte filteret %{name} og alle gruppene %{groups_count} opprettet gjennom det.
removed_groups: 'Advarsel: Dette fjerner følgende grupper fra OpenProject og fjerner dem fra alle prosjekter!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@
add_new: Legg til synkronisert LDAP-gruppe
destroy:
title: Fjern synkronisert gruppe %{name}
+ heading: Remove synchronized group %{name}?
confirmation: Hvis du fortsetter, fjernes den synkroniserte gruppen %{name} og alle %{users_count} brukere som er synkronisert gjennom den.
- info: 'Merk: Selve OpenProject-gruppen og medlemmer lagt til utenfor denne LDAP-synkroniseringen vil ikke bli fjernet.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
help_text_html: |
Denne modulen lar deg sette opp en synkronisering mellom LDAP og OpenProject-grupper.
Det avhenger av at LDAP-grupper bruker
groupOfNames/memberOf-attributten for å fungere med OpenProject.
diff --git a/modules/ldap_groups/config/locales/crowdin/pl.yml b/modules/ldap_groups/config/locales/crowdin/pl.yml
index 40e4055f785..e63f6e3ad15 100644
--- a/modules/ldap_groups/config/locales/crowdin/pl.yml
+++ b/modules/ldap_groups/config/locales/crowdin/pl.yml
@@ -46,6 +46,7 @@ pl:
zero: Przy użyciu filtra nie znaleziono żadnych grup!
destroy:
title: Usuń synchronizowany filtr %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: W razie kontynuacji usunięty zostanie synchronizowany filtr %{name} i wszystkie grupy (%{groups_count}) utworzone przy jego użyciu.
removed_groups: 'Ostrzeżenie: w ten sposób usuniesz następujące grupy z OpenProject i ze wszystkich projektów!'
verification_html: Wprowadź nazwę filtru %{name}, aby potwierdzić usunięcie.
@@ -59,9 +60,9 @@ pl:
add_new: Dodaj synchronizowaną grupę LDAP
destroy:
title: Usuń synchronizowaną grupę %{name}
+ heading: Remove synchronized group %{name}?
confirmation: W przypadku kontynuacji usunięta zostanie synchronizowana grupa %{name} i wszyscy użytkownicy (%{users_count}) synchronizowani za jej pośrednictwem.
- info: 'Uwaga: nie zostanie usunięta sama grupa OpenProject ani członkowie dodani poza tą synchronizacją LDAP.'
- verification_html: Wprowadź nazwę grupy %{name}, aby potwierdzić usunięcie.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
help_text_html: |
Ten moduł umożliwia skonfigurowanie synchronizacji między grupami LDAP i OpenProject.
Zależy to od tego, czy grupy LDAP muszą do pracy z OpenProject używać ustawionego atrybutu
groupOfNames / memberOf.
diff --git a/modules/ldap_groups/config/locales/crowdin/pt-BR.yml b/modules/ldap_groups/config/locales/crowdin/pt-BR.yml
index 6214569de56..6bb208f6ca7 100644
--- a/modules/ldap_groups/config/locales/crowdin/pt-BR.yml
+++ b/modules/ldap_groups/config/locales/crowdin/pt-BR.yml
@@ -46,6 +46,7 @@ pt-BR:
zero: Nenhum grupo encontrado pelo filtro
destroy:
title: Remover filtro sincronizado %{name}
+ heading: Deseja remover o filtro sincronizado %{name}?
confirmation: Se você continuar, o filtro sincronizado %{name} e todos os grupos %{groups_count} criados por meio dele serão removidos.
removed_groups: 'Aviso: Isto removerá os seguintes grupos do OpenProject e removê-los de todos os projetos!'
verification_html: Digite o nome do filtro %{name} para confirmar a exclusão.
@@ -59,9 +60,9 @@ pt-BR:
add_new: Adicionar grupo LDAP sincronizado
destroy:
title: Remover grupo sincronizado %{name}
+ heading: Deseja remover o grupo sincronizado %{name}?
confirmation: Se você continuar, o grupo sincronizado %{name} e todos os %{users_count} usuários sincronizados por meio dele serão removidos.
- info: 'Nota: O próprio grupo OpenProject e membros adicionados fora desta sincronização LDAP não serão removidos.'
- verification_html: Digite o nome do grupo %{name} para confirmar a exclusão.
+ info: O próprio grupo OpenProject e os membros adicionados fora desta sincronização LDAP não serão removidos.
help_text_html: |
Este módulo permite que você configure uma sincronização entre os grupos LDAP e OpenProject.
Depende dos grupos LDAP que precisam usar o atributo
groupOfNames / memberOf para trabalhar com o OpenProject.
diff --git a/modules/ldap_groups/config/locales/crowdin/pt-PT.yml b/modules/ldap_groups/config/locales/crowdin/pt-PT.yml
index 4e3c538f961..87accc91953 100644
--- a/modules/ldap_groups/config/locales/crowdin/pt-PT.yml
+++ b/modules/ldap_groups/config/locales/crowdin/pt-PT.yml
@@ -46,6 +46,7 @@ pt-PT:
zero: Não foram encontrados grupos pelo filtro
destroy:
title: Remover filtro sincronizado %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: Se continuar, o filtro sincronizado %{name} e todos os grupos %{groups_count} criados por meio dele serão removidos.
removed_groups: 'Aviso: Isto removerá os seguintes grupos do OpenProject e removê-los de todos os projetos!'
verification_html: Insira o nome do filtro %{name} para verificar a eliminação.
@@ -59,9 +60,9 @@ pt-PT:
add_new: Adicionar grupo LDAP sincronizado
destroy:
title: Remover grupo sincronizado %{name}
+ heading: Remove synchronized group %{name}?
confirmation: Se continuar, o grupo sincronizado %{name} e todos os utilizadores sincronizados com %{users_count} serão removidos.
- info: 'Nota: O próprio grupo OpenProject e membros adicionados fora desta sincronização LDAP não serão removidos.'
- verification_html: Insira o nome do grupo %{name} para verificar a eliminação.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
help_text_html: |
Este módulo permite-lhe configurar uma sincronização entre os grupos LDAP e OpenProject.
Está dependente dos grupos LDAP que precisam de utilizar o atributo
groupOfNames / memberOf para trabalhar com o OpenProject.
diff --git a/modules/ldap_groups/config/locales/crowdin/ro.yml b/modules/ldap_groups/config/locales/crowdin/ro.yml
index 8afd37a51bb..ff0d5a4f99a 100644
--- a/modules/ldap_groups/config/locales/crowdin/ro.yml
+++ b/modules/ldap_groups/config/locales/crowdin/ro.yml
@@ -46,6 +46,7 @@ ro:
zero: Nu au fost găsite grupuri prin filtru
destroy:
title: Elimină filtrul sincronizat %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: Dacă continuați, filtrul sincronizat %{name} și toate grupurile %{groups_count} create prin intermediul acestuia vor fi eliminate.
removed_groups: 'Avertisment: Acest lucru va elimina următoarele grupuri din OpenProject și le va elimina din toate proiectele!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ ro:
add_new: Adaugă grup LDAP sincronizat
destroy:
title: Îndepărtați grupul sincronizat %{name}
+ heading: Remove synchronized group %{name}?
confirmation: Dacă, continui, grupul sincronizat %{name} și toți utilizatorii %{users_count} sincronizați prin intermediul acestuia vor fi eliminați.
- info: 'Notă: Grupul OpenProject în sine și membrii adăugați în afara acestei sincronizări LDAP nu vor fi eliminați.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
help_text_html: |
Acest modul vă permite să configurați o sincronizare între grupurile LDAP și OpenProject.
Depinde de grupurile LDAP trebuie să utilizeze setul de atribute
groupOfNames / memberOf pentru a funcționa cu OpenProject.
diff --git a/modules/ldap_groups/config/locales/crowdin/ru.yml b/modules/ldap_groups/config/locales/crowdin/ru.yml
index 09c07c8d0d7..04d6fa04292 100644
--- a/modules/ldap_groups/config/locales/crowdin/ru.yml
+++ b/modules/ldap_groups/config/locales/crowdin/ru.yml
@@ -46,6 +46,7 @@ ru:
zero: Группы не были найдены фильтром
destroy:
title: Удалить синхронизированный фильтр %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: Если вы продолжите, синхронизированный фильтр %{name} и все группы %{groups_count} , созданные через него, будут удалены.
removed_groups: 'Предупреждение: Это удалит следующие группы из OpenProject и удалит их из всех проектов!'
verification_html: Введите имя фильтра %{name} для проверки удаления.
@@ -59,9 +60,9 @@ ru:
add_new: Добавить синхронизированную LDAP-группу
destroy:
title: Удалить синхронизированную группу %{name}
+ heading: Remove synchronized group %{name}?
confirmation: Если продолжите, синхронизированная группа %{name} и все %{users_count} пользователи синхронизированые через нее будут удалены.
- info: 'Примечание: сама группа OpenProject и члены, добавленные за пределами этой синхронизации LDAP, удалены не будут.'
- verification_html: Введите имя группы %{name} для проверки удаления.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
help_text_html: |
Этот модуль позволяет настроить синхронизацию между группами LDAP и OpenProject.
Для работы с OpenProject в зависимости от групп LDAP необходимо использовать набор атрибутов
groupOfNames / memberOf.
diff --git a/modules/ldap_groups/config/locales/crowdin/rw.yml b/modules/ldap_groups/config/locales/crowdin/rw.yml
index 347fe7a66da..37f005c5294 100644
--- a/modules/ldap_groups/config/locales/crowdin/rw.yml
+++ b/modules/ldap_groups/config/locales/crowdin/rw.yml
@@ -46,6 +46,7 @@ rw:
zero: No groups were found by the filter
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ rw:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/si.yml b/modules/ldap_groups/config/locales/crowdin/si.yml
index 2350feaaf6d..38d5a25bd5f 100644
--- a/modules/ldap_groups/config/locales/crowdin/si.yml
+++ b/modules/ldap_groups/config/locales/crowdin/si.yml
@@ -46,6 +46,7 @@ si:
zero: No groups were found by the filter
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ si:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/sk.yml b/modules/ldap_groups/config/locales/crowdin/sk.yml
index 61b014fab41..ef8589d0277 100644
--- a/modules/ldap_groups/config/locales/crowdin/sk.yml
+++ b/modules/ldap_groups/config/locales/crowdin/sk.yml
@@ -46,6 +46,7 @@ sk:
zero: No groups were found by the filter
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ sk:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/sl.yml b/modules/ldap_groups/config/locales/crowdin/sl.yml
index e9265d53903..72185f1d581 100644
--- a/modules/ldap_groups/config/locales/crowdin/sl.yml
+++ b/modules/ldap_groups/config/locales/crowdin/sl.yml
@@ -52,6 +52,7 @@ sl:
zero: Filter ni našel nobenih skupin
destroy:
title: Odstrani sinhronizirani filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: 'Če nadaljujete, bo sinhronizirani filter %{name} in vse skupine %{groups_count}, ustvarjene prek njega, odstranjene.
'
@@ -69,9 +70,9 @@ sl:
add_new: dodaj sinhronizirano LDAP skupino
destroy:
title: Odstrani sinhronizirano skupino %{name}
+ heading: Remove synchronized group %{name}?
confirmation: Če nadaljujete, bo sinhronizirana skupina %{name} in vsi %{users_count} uporabniki, ki so bili sinhronizirani prek nje, odstranjeni.
- info: 'Opozorilo: Sama skupina OpenProject in člani, dodani zunaj te sinhronizacije LDAP, ne bodo odstranjeni.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
help_text_html: |
Ta modul vam omogoča, da nastavite sinhronizacijo med skupinama LDAP in OpenProject.
Odvisno od tega, ali morajo skupine LDAP uporabiti atribut
skupinaOdIme / članOd , ki deluje za OpenProject.
diff --git a/modules/ldap_groups/config/locales/crowdin/sr.yml b/modules/ldap_groups/config/locales/crowdin/sr.yml
index ee8926660d4..dfbfdcfc99d 100644
--- a/modules/ldap_groups/config/locales/crowdin/sr.yml
+++ b/modules/ldap_groups/config/locales/crowdin/sr.yml
@@ -46,6 +46,7 @@ sr:
zero: No groups were found by the filter
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ sr:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/sv.yml b/modules/ldap_groups/config/locales/crowdin/sv.yml
index 3c91eb1b7d8..ac075789252 100644
--- a/modules/ldap_groups/config/locales/crowdin/sv.yml
+++ b/modules/ldap_groups/config/locales/crowdin/sv.yml
@@ -46,6 +46,7 @@ sv:
zero: Inga grupper hittades av filtret
destroy:
title: Ta bort synkroniserat filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: Om du fortsätter kommer det synkroniserade filtret %{name} och alla grupper %{groups_count} som skapats genom det att tas bort.
removed_groups: 'Varning: Detta kommer att ta bort följande grupper från OpenProject och ta bort den från alla projekt!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ sv:
add_new: Lägg till synkroniserad LDAP-grupp
destroy:
title: Ta bort synkroniserad grupp %{name}
+ heading: Remove synchronized group %{name}?
confirmation: Om du fortsätter kommer den synkroniserade gruppen %{name} och alla %{users_count} användare som synkroniserats genom den att tas bort.
- info: 'Obs: OpenProject-gruppen själv och medlemmar som lagts till utanför denna LDAP-synkronisering kommer inte att tas bort.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
help_text_html: |
Modulen låter dig konfigurera en synkronisering mellan LDAP och OpenProject-grupper.
Det beror på LDAP-grupper måste använda
groupOfNames / memberOf attributset för att arbeta med OpenProject.
diff --git a/modules/ldap_groups/config/locales/crowdin/th.yml b/modules/ldap_groups/config/locales/crowdin/th.yml
index 28e7d190f36..874e5c5eddc 100644
--- a/modules/ldap_groups/config/locales/crowdin/th.yml
+++ b/modules/ldap_groups/config/locales/crowdin/th.yml
@@ -46,6 +46,7 @@ th:
zero: No groups were found by the filter
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ th:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/tr.yml b/modules/ldap_groups/config/locales/crowdin/tr.yml
index 121389b57ee..376b52fa730 100644
--- a/modules/ldap_groups/config/locales/crowdin/tr.yml
+++ b/modules/ldap_groups/config/locales/crowdin/tr.yml
@@ -46,6 +46,7 @@ tr:
zero: Filtrede grup bulunamadı
destroy:
title: "%{name} senkronize filtresini kaldır"
+ heading: Remove synchronized filter %{name}?
confirmation: Devam ederseniz, senkronize edilmiş %{name} filtresi ve bu kanaldan oluşturulan %{groups_count} tüm gruplar kaldırılacak.
removed_groups: 'Uyarı: Bu işlem aşağıdaki grupları OpenProject''ten kaldıracak ve tüm projelerden kaldıracaktır!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ tr:
add_new: Senkronize LDAP grubu ekle
destroy:
title: "%{name} adlı senkronize grubu kaldır"
+ heading: Remove synchronized group %{name}?
confirmation: Devam ederseniz, %{name}} ile senkronize edilmiş grup ve içinden senkronize olan tüm %{users_count} kullanıcısı kaldırılacak.
- info: 'Not: OpenProject grubunun kendisi ve bu LDAP senkronizasyonunun dışına eklenen üyeler kaldırılmaz.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
help_text_html: |
Bu modül, LDAP ve OpenProject grupları arasında bir senkronizasyon ayarlamanıza izin verir.
Bu, LDAP gruplarının OpenProject ile çalışmak için ayarlanmış
groupOfNames / memberOf özelliğini kullanması gerektiğine bağlıdır.
diff --git a/modules/ldap_groups/config/locales/crowdin/uk.yml b/modules/ldap_groups/config/locales/crowdin/uk.yml
index 9153740f727..23a31a7a26d 100644
--- a/modules/ldap_groups/config/locales/crowdin/uk.yml
+++ b/modules/ldap_groups/config/locales/crowdin/uk.yml
@@ -46,6 +46,7 @@ uk:
zero: Груп за фільтром не знайдено
destroy:
title: Вилучити синхронізований фільтр %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: Якщо ви продовжите, синхронізований фільтр %{name} і всі групи (%{groups_count}), створені через нього, буде вилучено.
removed_groups: Увага! Це призведе до вилучення наведених нижче груп з OpenProject і з усіх проєктів!
verification_html: Введіть назву фільтра «%{name}», щоб підтвердити видалення.
@@ -59,9 +60,9 @@ uk:
add_new: Додати синхронізовану групу LDAP
destroy:
title: Вилучити синхронізовану групу %{name}
+ heading: Remove synchronized group %{name}?
confirmation: Якщо ви продовжите, синхронізовану групу %{name} і всіх користувачі (%{users_count}), синхронізованих через неї, буде вилучено.
- info: 'Примітка: групу OpenProject і учасників, доданих з-поза меж цієї синхронізації LDAP, не буде вилучено.'
- verification_html: Введіть назву групи %{name}, щоб підтвердити видалення.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
help_text_html: |
Цей модуль дає змогу налаштувати синхронізацію між групами LDAP і OpenProject.
Це залежить від того, чи має LDAP-група використовувати набір атрибутів
groupOfNames / memberOf для роботи з OpenProject.
diff --git a/modules/ldap_groups/config/locales/crowdin/uz.yml b/modules/ldap_groups/config/locales/crowdin/uz.yml
index 43821d4fe06..847304c9276 100644
--- a/modules/ldap_groups/config/locales/crowdin/uz.yml
+++ b/modules/ldap_groups/config/locales/crowdin/uz.yml
@@ -46,6 +46,7 @@ uz:
zero: No groups were found by the filter
destroy:
title: Remove synchronized filter %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed.
removed_groups: 'Warning: This will remove the following groups from OpenProject and remove it from all projects!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ uz:
add_new: Add synchronized LDAP group
destroy:
title: Remove synchronized group %{name}
+ heading: Remove synchronized group %{name}?
confirmation: If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed.
- info: 'Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
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.
diff --git a/modules/ldap_groups/config/locales/crowdin/vi.yml b/modules/ldap_groups/config/locales/crowdin/vi.yml
index 231fc4080e0..f97bfea04b9 100644
--- a/modules/ldap_groups/config/locales/crowdin/vi.yml
+++ b/modules/ldap_groups/config/locales/crowdin/vi.yml
@@ -46,6 +46,7 @@ vi:
zero: Không có nhóm nào được bộ lọc tìm thấy
destroy:
title: Xóa bộ lọc đã đồng bộ hóa %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: Nếu bạn tiếp tục, bộ lọc đã đồng bộ hóa %{name} và tất cả các nhóm %{groups_count} được tạo thông qua bộ lọc đó sẽ bị xóa.
removed_groups: 'Cảnh báo: Thao tác này sẽ xóa các nhóm sau khỏi OpenProject và xóa nó khỏi tất cả các dự án!'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ vi:
add_new: Thêm nhóm LDAP được đồng bộ hóa
destroy:
title: Xóa nhóm đã đồng bộ hóa %{name}
+ heading: Remove synchronized group %{name}?
confirmation: Nếu bạn tiếp tục, nhóm được đồng bộ hóa %{name} và tất cả người dùng %{users_count} được đồng bộ hóa thông qua nhóm đó sẽ bị xóa.
- info: 'Lưu ý: Bản thân nhóm OpenProject và các thành viên được thêm vào bên ngoài quá trình đồng bộ hóa LDAP này sẽ không bị xóa.'
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
help_text_html: |
Mô-đun này cho phép bạn thiết lập đồng bộ hóa giữa các nhóm LDAP và OpenProject.
Nó phụ thuộc vào các nhóm LDAP cần sử dụng thuộc tính
groupOfNames / memberOf để hoạt động với OpenProject.
diff --git a/modules/ldap_groups/config/locales/crowdin/zh-CN.yml b/modules/ldap_groups/config/locales/crowdin/zh-CN.yml
index c91bcd32090..348082839c1 100644
--- a/modules/ldap_groups/config/locales/crowdin/zh-CN.yml
+++ b/modules/ldap_groups/config/locales/crowdin/zh-CN.yml
@@ -46,9 +46,10 @@ zh-CN:
zero: 筛选器未找到组
destroy:
title: 移除同步的筛选器 %{name}
+ heading: 移除同步的筛选器 %{name}?
confirmation: 如果您继续,将移除同步的筛选器 %{name} 和通过该筛选器创建的全部 %{groups_count} 个组。
removed_groups: 警告:这将从 OpenProject 中移除以下组并将该筛选器从所有项目中移除!
- verification_html: Enter the filter name %{name} to verify the deletion.
+ verification_html: 输入筛选器名称 %{name} 以验证删除。
form:
group_name_attribute_text: 输入用于设置 OpenProject 组名称的 LDAP 组的属性。
filter_string_text: 输入 RFC4515 LDAP 筛选器,该筛选器将返回 LDAP 中的组以与 OpenProject 同步。
@@ -59,9 +60,9 @@ zh-CN:
add_new: 添加同步的 LDAP 组
destroy:
title: 移除同步组 %{name}
+ heading: 移除同步的组 %{name}?
confirmation: 如果您继续,将移除同步组 %{name} 和通过该组同步的全部 %{users_count} 个用户。
- info: 注意:OpenProject 组本身以及在 LDAP 同步之外添加的成员将不会被移除。
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: OpenProject 组本身以及在此 LDAP 同步之外添加的成员将不会被移除。
help_text_html: |
此模块允许您在 LDAP 与 OpenProject 组之间设置同步。
它要求 LDAP 组使用
groupOfNames / memberOf 属性集才能与 OpenProject 一起使用。
diff --git a/modules/ldap_groups/config/locales/crowdin/zh-TW.yml b/modules/ldap_groups/config/locales/crowdin/zh-TW.yml
index 9090bc94dba..874edfa368f 100644
--- a/modules/ldap_groups/config/locales/crowdin/zh-TW.yml
+++ b/modules/ldap_groups/config/locales/crowdin/zh-TW.yml
@@ -46,6 +46,7 @@ zh-TW:
zero: 篩選條件不到任何群組
destroy:
title: 移除同步篩選條件 %{name}
+ heading: Remove synchronized filter %{name}?
confirmation: 如果繼續,本同步篩選 %{name} 和藉此創建的群組 %{groups_count} 將會刪除
removed_groups: '警告: 將從OpenProject和專案中移除以下群組'
verification_html: Enter the filter name %{name} to verify the deletion.
@@ -59,9 +60,9 @@ zh-TW:
add_new: 新增 LDAP 同步群組
destroy:
title: 移除同步群組 %{name}
+ heading: Remove synchronized group %{name}?
confirmation: 如繼續,將移除同步的群組 %{name} 和所有透過該群組同步的全部 %{users_count} 個用戶。
- info: 注意:OpenProject 群組本身以及在 LDAP 同步之外添加的成員將不會被移除。
- verification_html: Enter the group's name %{name} to verify the deletion.
+ info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed.
help_text_html: |
此模組允許您在 LDAP 與 OpenProject 群組之間設置同步。
它要求 LDAP 群組使用
groupOfNames / memberOf 屬性集才能與 OpenProject 一起使用。
diff --git a/modules/ldap_groups/config/locales/en.yml b/modules/ldap_groups/config/locales/en.yml
index fce21491f55..374f72a199e 100644
--- a/modules/ldap_groups/config/locales/en.yml
+++ b/modules/ldap_groups/config/locales/en.yml
@@ -46,6 +46,7 @@ en:
zero: "No groups were found by the filter"
destroy:
title: 'Remove synchronized filter %{name}'
+ heading: 'Remove synchronized filter %{name}?'
confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed."
removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!"
verification_html: "Enter the filter name %{name} to verify the deletion."
@@ -61,9 +62,9 @@ en:
add_new: 'Add synchronized LDAP group'
destroy:
title: 'Remove synchronized group %{name}'
+ heading: 'Remove synchronized group %{name}?'
confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed."
- info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed."
- verification_html: "Enter the group's name %{name} to verify the deletion."
+ info: "The OpenProject group itself and members added outside this LDAP synchronization will not be removed."
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.
diff --git a/modules/ldap_groups/spec/controllers/synchronized_groups_controller_spec.rb b/modules/ldap_groups/spec/controllers/synchronized_groups_controller_spec.rb
index 0ed0521fe7b..573ede10186 100644
--- a/modules/ldap_groups/spec/controllers/synchronized_groups_controller_spec.rb
+++ b/modules/ldap_groups/spec/controllers/synchronized_groups_controller_spec.rb
@@ -170,15 +170,16 @@ RSpec.describe LdapGroups::SynchronizedGroupsController, with_ee: %i[ldap_groups
let!(:group) { build_stubbed(:ldap_synchronized_group) }
let(:id) { "foo" }
- it "renders the page" do
+ it "renders the dialog" do
expect(LdapGroups::SynchronizedGroup)
.to receive(:find)
.with("foo")
.and_return(group)
- get :destroy_info, params: { ldap_group_id: id }
+ get :destroy_info, params: { ldap_group_id: id }, format: :turbo_stream
expect(response).to be_successful
- expect(response).to render_template "destroy_info"
+ expect(response).to have_turbo_stream action: "dialog",
+ target: "ldap-groups-synchronized-groups-destroy-dialog-component"
end
end
end
diff --git a/modules/ldap_groups/spec/features/administration_spec.rb b/modules/ldap_groups/spec/features/administration_spec.rb
index 656c8eb7c27..d857f193c71 100644
--- a/modules/ldap_groups/spec/features/administration_spec.rb
+++ b/modules/ldap_groups/spec/features/administration_spec.rb
@@ -73,10 +73,10 @@ RSpec.describe "LDAP group sync administration spec", :js do
find(".buttons a", text: "Delete").click
SeleniumHubWaiter.wait
- find(".danger-zone--verification input").set "cn=bar,ou=groups,dc=example,dc=com"
+ check "I understand that this deletion cannot be reversed"
+ click_on "Delete permanently"
SeleniumHubWaiter.wait
- click_on "Delete"
expect_flash(message: I18n.t(:notice_successful_delete))
expect(page).to have_css ".generic-table--empty-row"
diff --git a/modules/meeting/app/components/meeting_agenda_items/item_component/show_component.rb b/modules/meeting/app/components/meeting_agenda_items/item_component/show_component.rb
index bdf068cd992..c32e2e19b9a 100644
--- a/modules/meeting/app/components/meeting_agenda_items/item_component/show_component.rb
+++ b/modules/meeting/app/components/meeting_agenda_items/item_component/show_component.rb
@@ -233,7 +233,7 @@ module MeetingAgendaItems
def next_meeting_action_item(menu, label:, action:, icon:)
return unless has_next_occurrence?
- from_time = @meeting.start_time.past? ? Time.current : @meeting.start_time
+ from_time = @meeting.start_time.past? ? Time.current : @meeting.scheduled_meeting.start_time
result = @series.first_non_cancelled_occurrence(from_time:)
return if result.nil?
diff --git a/modules/meeting/app/components/meetings/participants/box_row_component.html.erb b/modules/meeting/app/components/meetings/participants/box_row_component.html.erb
index 21e1271b731..83d978a7cef 100644
--- a/modules/meeting/app/components/meetings/participants/box_row_component.html.erb
+++ b/modules/meeting/app/components/meetings/participants/box_row_component.html.erb
@@ -58,10 +58,7 @@
href: project_meeting_participant_path(@meeting.project, @meeting, @participant),
icon: :x,
aria: { label: I18n.t("meeting.participants.label.remove_participant") },
- data: {
- turbo_method: :delete,
- test_selector: "remove_button_#{@participant.user_id}"
- }
+ data: remove_button_data_attributes
)
)
end
diff --git a/modules/meeting/app/components/meetings/participants/box_row_component.rb b/modules/meeting/app/components/meetings/participants/box_row_component.rb
index 26c7015871e..eb87256a795 100644
--- a/modules/meeting/app/components/meetings/participants/box_row_component.rb
+++ b/modules/meeting/app/components/meetings/participants/box_row_component.rb
@@ -45,5 +45,15 @@ module Meetings
def wrapper_uniq_by
@participant.id
end
+
+ private
+
+ def remove_button_data_attributes
+ {
+ turbo_method: :delete,
+ test_selector: "remove_button_#{@participant.user_id}",
+ "meetings--participants--update-occurrence-participants-target": (@meeting.series_template? ? "removeButton" : nil)
+ }
+ end
end
end
diff --git a/modules/meeting/app/components/meetings/participants/manage_participants_dialog.html.erb b/modules/meeting/app/components/meetings/participants/manage_participants_dialog.html.erb
index fa6d5dd8fc4..db0a0df9828 100644
--- a/modules/meeting/app/components/meetings/participants/manage_participants_dialog.html.erb
+++ b/modules/meeting/app/components/meetings/participants/manage_participants_dialog.html.erb
@@ -5,7 +5,7 @@
id: DIALOG_ID,
size: :xlarge,
title: I18n.t("meeting.participants.label.manage_participants"),
- data: { "keep-open-on-submit": true }
+ data: { "keep-open-on-submit": true, controller: "meetings--participants--update-occurrence-participants" }
)
) do |d|
d.with_header(variant: :large)
diff --git a/modules/meeting/app/controllers/meeting_participants_controller.rb b/modules/meeting/app/controllers/meeting_participants_controller.rb
index b670f6c6089..f62795210ab 100644
--- a/modules/meeting/app/controllers/meeting_participants_controller.rb
+++ b/modules/meeting/app/controllers/meeting_participants_controller.rb
@@ -73,11 +73,16 @@ class MeetingParticipantsController < ApplicationController
end
def destroy
+ user_id = @participant.user_id
call = MeetingParticipants::DeleteService
.new(user: User.current, model: @participant)
.call
if call.success?
+ if @meeting.series_template? && params[:apply_to_upcoming] == "1"
+ remove_from_upcoming_occurrences(user_id)
+ end
+
update_add_user_form_component_via_turbo_stream
update_list_component_via_turbo_stream
update_sidebar_participants_component_via_turbo_stream(meeting: @meeting)
@@ -105,11 +110,38 @@ class MeetingParticipantsController < ApplicationController
def create_new_participants(user_ids)
user_ids.each { |user_id| create_new_participant(user_id) }
+ if @meeting.series_template? && params.dig(:meeting_participant, :apply_to_upcoming) == "1"
+ add_to_upcoming_occurrences(user_ids)
+ end
+
update_list_component_via_turbo_stream
update_add_user_form_component_via_turbo_stream
update_sidebar_participants_component_via_turbo_stream(meeting: @meeting)
end
+ def remove_from_upcoming_occurrences(user_id)
+ @meeting.recurring_meeting.instantiated_meetings.upcoming.each do |meeting|
+ participant = meeting.participants.find_by(user_id:)
+ next unless participant
+
+ MeetingParticipants::DeleteService
+ .new(user: User.current, model: participant)
+ .call
+ end
+ end
+
+ def add_to_upcoming_occurrences(user_ids)
+ @meeting.recurring_meeting.instantiated_meetings.upcoming.each do |meeting|
+ user_ids.each do |user_id|
+ next if meeting.participants.exists?(user_id:)
+
+ MeetingParticipants::CreateService
+ .new(user: User.current)
+ .call(meeting:, user_id:, invited: true, attended: false)
+ end
+ end
+ end
+
def create_new_participant(user_id)
MeetingParticipants::CreateService
.new(user: User.current)
diff --git a/modules/meeting/app/forms/meeting/participant.rb b/modules/meeting/app/forms/meeting/participant.rb
index e43f2e6ce6f..5b68f1abe04 100644
--- a/modules/meeting/app/forms/meeting/participant.rb
+++ b/modules/meeting/app/forms/meeting/participant.rb
@@ -54,6 +54,15 @@ class Meeting::Participant < ApplicationForm
}
}
)
+
+ if meeting.series_template?
+ participant_form.check_box(
+ name: :apply_to_upcoming,
+ label: I18n.t("meeting.participants.label.apply_to_upcoming_meetings"),
+ checked: true,
+ data: { "meetings--participants--update-occurrence-participants-target": "controlCheckbox" }
+ )
+ end
end
private
diff --git a/modules/meeting/app/models/meeting.rb b/modules/meeting/app/models/meeting.rb
index c69486ff5ca..bdea4584913 100644
--- a/modules/meeting/app/models/meeting.rb
+++ b/modules/meeting/app/models/meeting.rb
@@ -306,6 +306,7 @@ class Meeting < ApplicationRecord
def send_emails?
return false if onetime_template?
return false if template? && recurring_meeting.scheduled_meetings.none?
+ return false if closed?
persisted? && notify?
end
diff --git a/modules/meeting/config/locales/crowdin/af.yml b/modules/meeting/config/locales/crowdin/af.yml
index 3a2f3375f3a..d54902b5366 100644
--- a/modules/meeting/config/locales/crowdin/af.yml
+++ b/modules/meeting/config/locales/crowdin/af.yml
@@ -211,6 +211,7 @@ af:
manage_participants: Manage participants
no_participants: No participants
show_all: Show all
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/ar.yml b/modules/meeting/config/locales/crowdin/ar.yml
index 50125b9f62a..c767a4b4cf3 100644
--- a/modules/meeting/config/locales/crowdin/ar.yml
+++ b/modules/meeting/config/locales/crowdin/ar.yml
@@ -231,6 +231,7 @@ ar:
manage_participants: Manage participants
no_participants: No participants
show_all: إظهار الجميع
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/az.yml b/modules/meeting/config/locales/crowdin/az.yml
index 0cdf9d227a0..994c68385f8 100644
--- a/modules/meeting/config/locales/crowdin/az.yml
+++ b/modules/meeting/config/locales/crowdin/az.yml
@@ -211,6 +211,7 @@ az:
manage_participants: Manage participants
no_participants: No participants
show_all: Show all
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/be.yml b/modules/meeting/config/locales/crowdin/be.yml
index 4e14b44cc2a..cf66f6bdce0 100644
--- a/modules/meeting/config/locales/crowdin/be.yml
+++ b/modules/meeting/config/locales/crowdin/be.yml
@@ -221,6 +221,7 @@ be:
manage_participants: Manage participants
no_participants: No participants
show_all: Show all
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/bg.yml b/modules/meeting/config/locales/crowdin/bg.yml
index 0f494d5cafc..229e9aa1c68 100644
--- a/modules/meeting/config/locales/crowdin/bg.yml
+++ b/modules/meeting/config/locales/crowdin/bg.yml
@@ -211,6 +211,7 @@ bg:
manage_participants: Управление на участниците
no_participants: Няма участници
show_all: Показване на всичко
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/ca.yml b/modules/meeting/config/locales/crowdin/ca.yml
index 8e9f3b41340..ee51b2b3e5d 100644
--- a/modules/meeting/config/locales/crowdin/ca.yml
+++ b/modules/meeting/config/locales/crowdin/ca.yml
@@ -211,6 +211,7 @@ ca:
manage_participants: Gestiona els participants
no_participants: No hi ha participants
show_all: Mostrar tots
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/ckb-IR.yml b/modules/meeting/config/locales/crowdin/ckb-IR.yml
index a0e612f2912..15e5c950afe 100644
--- a/modules/meeting/config/locales/crowdin/ckb-IR.yml
+++ b/modules/meeting/config/locales/crowdin/ckb-IR.yml
@@ -211,6 +211,7 @@ ckb-IR:
manage_participants: Manage participants
no_participants: No participants
show_all: Show all
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/cs.yml b/modules/meeting/config/locales/crowdin/cs.yml
index a00b518786d..9da0ea5b15f 100644
--- a/modules/meeting/config/locales/crowdin/cs.yml
+++ b/modules/meeting/config/locales/crowdin/cs.yml
@@ -223,6 +223,7 @@ cs:
manage_participants: Spravovat účastníky
no_participants: Nikdo tu není
show_all: Zobrazit vše
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: Tito účastníci budou automaticky pozváni na všechna budoucí zasedání po jejich vytvoření.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/da.yml b/modules/meeting/config/locales/crowdin/da.yml
index fc2ae134d19..62e459ae38f 100644
--- a/modules/meeting/config/locales/crowdin/da.yml
+++ b/modules/meeting/config/locales/crowdin/da.yml
@@ -211,6 +211,7 @@ da:
manage_participants: Manage participants
no_participants: No participants
show_all: Vis alt
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/de.yml b/modules/meeting/config/locales/crowdin/de.yml
index df7a6e7bd30..76425103e74 100644
--- a/modules/meeting/config/locales/crowdin/de.yml
+++ b/modules/meeting/config/locales/crowdin/de.yml
@@ -211,6 +211,7 @@ de:
manage_participants: Teilnehmer verwalten
no_participants: Keine Teilnehmer
show_all: Alle anzeigen
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: Diese Teilnehmer werden automatisch zu allen zukünftigen Besprechungen eingeladen, sobald diese erstellt werden.
manage_participants: Suchen Sie nach Projektmitgliedern, um sie als Teilnehmer zu dieser Besprechung hinzuzufügen.
diff --git a/modules/meeting/config/locales/crowdin/el.yml b/modules/meeting/config/locales/crowdin/el.yml
index c00ee4a3c69..06f59c1e3a9 100644
--- a/modules/meeting/config/locales/crowdin/el.yml
+++ b/modules/meeting/config/locales/crowdin/el.yml
@@ -211,6 +211,7 @@ el:
manage_participants: Διαχείριση συμμετεχόντων
no_participants: Δεν υπάρχουν συμμετέχοντες
show_all: Εμφάνιση όλων
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/eo.yml b/modules/meeting/config/locales/crowdin/eo.yml
index 74af61e13f3..b94e0d1e098 100644
--- a/modules/meeting/config/locales/crowdin/eo.yml
+++ b/modules/meeting/config/locales/crowdin/eo.yml
@@ -211,6 +211,7 @@ eo:
manage_participants: Manage participants
no_participants: No participants
show_all: Show all
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/es.yml b/modules/meeting/config/locales/crowdin/es.yml
index 436b06d1636..1eb09022c33 100644
--- a/modules/meeting/config/locales/crowdin/es.yml
+++ b/modules/meeting/config/locales/crowdin/es.yml
@@ -189,7 +189,7 @@ es:
label_notify: Enviar para revisión
label_icalendar: Enviar iCalendar
label_icalendar_download: Descargar evento iCalendar
- label_view_meeting: View meeting
+ label_view_meeting: Ver reunión
label_view_meeting_series: Ver serie de reuniones
label_meeting_series: Serie de reuniones
label_version: Versión
@@ -198,8 +198,8 @@ es:
label_subscribe_icalendar: Suscribirse al calendario
caption_meeting_template_select: Seleccione una plantilla para copiar automáticamente sus puntos del orden del día
caption_template_project_select: Seleccione el proyecto en el que desea crear esta plantilla de reunión
- placeholder_meeting_template_select_project_first: Select a project first
- placeholder_meeting_template_no_templates_for_project: No templates available for this project
+ placeholder_meeting_template_select_project_first: Primero selecciona un proyecto
+ placeholder_meeting_template_no_templates_for_project: No hay plantillas disponibles para este proyecto
meeting:
participants:
label:
@@ -211,6 +211,7 @@ es:
manage_participants: Gestionar participantes
no_participants: Sin participantes
show_all: Mostrar todo
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: Estos participantes serán invitados automáticamente a todas las reuniones futuras a medida que se vayan creando.
manage_participants: Busque y añada miembros del proyecto como participantes en esta reunión.
@@ -219,8 +220,8 @@ es:
heading: Sin participantes
description: Aún no hay participantes.
attachments:
- onetime_template: These attached files will be included in all future meetings using this template.
- series_template: These attached files will be included in all future meetings in the series.
+ onetime_template: Estos archivos adjuntos se incluirán en todas las reuniones futuras en las que se utilice esta plantilla.
+ series_template: Estos archivos adjuntos se incluirán en todas las reuniones futuras de la serie.
text: Los archivos adjuntos están a disposición de todos los participantes en la reunión. También puede arrastrarlos y soltarlos en las notas de los puntos del orden del día.
copy:
title: Copiar reunión %{title}
diff --git a/modules/meeting/config/locales/crowdin/et.yml b/modules/meeting/config/locales/crowdin/et.yml
index 74f30ec97a6..37089bc1522 100644
--- a/modules/meeting/config/locales/crowdin/et.yml
+++ b/modules/meeting/config/locales/crowdin/et.yml
@@ -211,6 +211,7 @@ et:
manage_participants: Manage participants
no_participants: No participants
show_all: Näita kõiki
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/eu.yml b/modules/meeting/config/locales/crowdin/eu.yml
index b087ba885d3..426b4f06ab8 100644
--- a/modules/meeting/config/locales/crowdin/eu.yml
+++ b/modules/meeting/config/locales/crowdin/eu.yml
@@ -211,6 +211,7 @@ eu:
manage_participants: Manage participants
no_participants: No participants
show_all: Show all
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/fa.yml b/modules/meeting/config/locales/crowdin/fa.yml
index 288c768169f..744da4a2698 100644
--- a/modules/meeting/config/locales/crowdin/fa.yml
+++ b/modules/meeting/config/locales/crowdin/fa.yml
@@ -211,6 +211,7 @@ fa:
manage_participants: Manage participants
no_participants: No participants
show_all: Show all
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/fi.yml b/modules/meeting/config/locales/crowdin/fi.yml
index 03aa1ac1d78..60f7a40c13e 100644
--- a/modules/meeting/config/locales/crowdin/fi.yml
+++ b/modules/meeting/config/locales/crowdin/fi.yml
@@ -211,6 +211,7 @@ fi:
manage_participants: Manage participants
no_participants: No participants
show_all: Näytä kaikki
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/fil.yml b/modules/meeting/config/locales/crowdin/fil.yml
index d80942705bc..a9582a6a2d3 100644
--- a/modules/meeting/config/locales/crowdin/fil.yml
+++ b/modules/meeting/config/locales/crowdin/fil.yml
@@ -211,6 +211,7 @@ fil:
manage_participants: Manage participants
no_participants: No participants
show_all: Ipakita ang lahat
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/fr.yml b/modules/meeting/config/locales/crowdin/fr.yml
index 76973318bdb..5bf664e389a 100644
--- a/modules/meeting/config/locales/crowdin/fr.yml
+++ b/modules/meeting/config/locales/crowdin/fr.yml
@@ -198,8 +198,8 @@ fr:
label_subscribe_icalendar: S'abonner au calendrier
caption_meeting_template_select: Sélectionnez un modèle pour copier automatiquement ses points de l'ordre du jour
caption_template_project_select: Veuillez sélectionner le projet dans lequel vous souhaitez créer ce modèle de réunion
- placeholder_meeting_template_select_project_first: Select a project first
- placeholder_meeting_template_no_templates_for_project: No templates available for this project
+ placeholder_meeting_template_select_project_first: Sélectionnez d'abord un projet
+ placeholder_meeting_template_no_templates_for_project: Aucun modèle n'est disponible pour ce projet
meeting:
participants:
label:
@@ -211,6 +211,7 @@ fr:
manage_participants: Gérer les participants
no_participants: Aucun participant
show_all: Afficher tout
+ apply_to_upcoming_meetings: Appliquez ces changements à toutes les prochaines réunions de cette série
text:
template: Ces participants seront automatiquement invités à toutes les réunions futures au fur et à mesure qu'elles seront créées.
manage_participants: Recherchez et ajoutez des membres du projet en tant que participants à cette réunion.
@@ -382,7 +383,7 @@ fr:
disabled: 'Les mises à jour du calendrier par e-mail sont désactivées. Les participants ne recevront pas d''e-mail les informant de l''ajout ou de la suppression de participants.
'
- draft_disabled: 'Participants will not receive an email informing them when you add or remove participants.
+ draft_disabled: 'Les participants ne recevront pas d''e-mail les informant de l''ajout ou de la suppression de participants.
'
onetime:
diff --git a/modules/meeting/config/locales/crowdin/he.yml b/modules/meeting/config/locales/crowdin/he.yml
index 6e50c1e8bf5..29b8b3cccaf 100644
--- a/modules/meeting/config/locales/crowdin/he.yml
+++ b/modules/meeting/config/locales/crowdin/he.yml
@@ -221,6 +221,7 @@ he:
manage_participants: Manage participants
no_participants: No participants
show_all: Show all
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/hi.yml b/modules/meeting/config/locales/crowdin/hi.yml
index 90665076ec8..8549e36b734 100644
--- a/modules/meeting/config/locales/crowdin/hi.yml
+++ b/modules/meeting/config/locales/crowdin/hi.yml
@@ -211,6 +211,7 @@ hi:
manage_participants: Manage participants
no_participants: No participants
show_all: सभी दिखाएँ
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/hr.yml b/modules/meeting/config/locales/crowdin/hr.yml
index b9194436a07..b5566a0e17e 100644
--- a/modules/meeting/config/locales/crowdin/hr.yml
+++ b/modules/meeting/config/locales/crowdin/hr.yml
@@ -216,6 +216,7 @@ hr:
manage_participants: Manage participants
no_participants: No participants
show_all: Prikaži sve
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/hu.yml b/modules/meeting/config/locales/crowdin/hu.yml
index ba3228b534b..dd898968f16 100644
--- a/modules/meeting/config/locales/crowdin/hu.yml
+++ b/modules/meeting/config/locales/crowdin/hu.yml
@@ -211,6 +211,7 @@ hu:
manage_participants: Résztvevők kezelése
no_participants: Nincsenek résztvevők
show_all: Minden megjelenítése
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: Ezek a résztvevők automatikusan meghívást kapnak minden jövőbeli megbeszélésre, amint azok létrejönnek.
manage_participants: Projekttagok keresés és hozzáadása a megbeszéléshez résztvevőként.
diff --git a/modules/meeting/config/locales/crowdin/id.yml b/modules/meeting/config/locales/crowdin/id.yml
index 68f3fa87f88..25c02fc2f3a 100644
--- a/modules/meeting/config/locales/crowdin/id.yml
+++ b/modules/meeting/config/locales/crowdin/id.yml
@@ -206,6 +206,7 @@ id:
manage_participants: Kelola peserta
no_participants: Tidak ada peserta
show_all: Tampilkan semua
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: Para peserta ini akan diundang secara otomatis ke semua pertemuan mendatang yang akan dibuat.
manage_participants: Cari dan tambahkan anggota proyek sebagai peserta dalam pertemuan ini.
diff --git a/modules/meeting/config/locales/crowdin/it.yml b/modules/meeting/config/locales/crowdin/it.yml
index cfc9d922c32..209bbb9e7d6 100644
--- a/modules/meeting/config/locales/crowdin/it.yml
+++ b/modules/meeting/config/locales/crowdin/it.yml
@@ -189,7 +189,7 @@ it:
label_notify: Invia per revisione
label_icalendar: Invia iCalendar
label_icalendar_download: Scarica l'evento iCalendar
- label_view_meeting: View meeting
+ label_view_meeting: Visualizza riunione
label_view_meeting_series: Visualizza la serie di riunioni
label_meeting_series: Serie di riunioni
label_version: Versione
@@ -198,8 +198,8 @@ it:
label_subscribe_icalendar: Iscriviti al calendario
caption_meeting_template_select: Seleziona un modello per copiare automaticamente i suoi elementi dell'ordine del giorno
caption_template_project_select: Seleziona il progetto in cui creare questo modello di riunione
- placeholder_meeting_template_select_project_first: Select a project first
- placeholder_meeting_template_no_templates_for_project: No templates available for this project
+ placeholder_meeting_template_select_project_first: Seleziona prima un progetto
+ placeholder_meeting_template_no_templates_for_project: Non ci sono modelli disponibili per questo progetto
meeting:
participants:
label:
@@ -211,6 +211,7 @@ it:
manage_participants: Gestisci partecipanti
no_participants: Nessun partecipante
show_all: Mostra tutti
+ apply_to_upcoming_meetings: Applica queste modifiche a tutte le riunioni future di questa serie
text:
template: Questi partecipanti saranno invitati automaticamente a tutte le riunioni future, man mano che vengono create.
manage_participants: Cerca e aggiungi membri del progetto come partecipanti a questa riunione.
@@ -219,8 +220,8 @@ it:
heading: Nessun partecipante
description: Non ci sono ancora partecipanti.
attachments:
- onetime_template: These attached files will be included in all future meetings using this template.
- series_template: These attached files will be included in all future meetings in the series.
+ onetime_template: Questi file allegati saranno inclusi in tutte le riunioni future che utilizzano questo modello.
+ series_template: Questi file allegati saranno inclusi in tutte le prossime riunioni della serie.
text: I file allegati sono disponibili per tutti i partecipanti alla riunione. Puoi anche trascinarli nelle note dei punti all'ordine del giorno.
copy:
title: 'Copia riunione: %{title}'
@@ -298,7 +299,7 @@ it:
template:
title: Elimina modello
heading: Eliminare questo modello?
- confirmation_message_html: 'This action is not reversible. Please proceed with caution. Existing meetings that were created using this template will not be affected.
+ confirmation_message_html: 'Questa azione è irreversibile. Procedi con cautela. Le riunioni già create utilizzando questo modello non saranno influenzate.
'
occurrence:
@@ -382,7 +383,7 @@ it:
disabled: 'Gli aggiornamenti del calendario via e-mail sono disattivati. I partecipanti non riceveranno un''e-mail quando aggiungi o rimuovi partecipanti.
'
- draft_disabled: 'Participants will not receive an email informing them when you add or remove participants.
+ draft_disabled: 'I partecipanti non riceveranno un''e-mail quando aggiungi o rimuovi partecipanti.
'
onetime:
diff --git a/modules/meeting/config/locales/crowdin/ja.yml b/modules/meeting/config/locales/crowdin/ja.yml
index 1104bd13da6..a0aef7c53ba 100644
--- a/modules/meeting/config/locales/crowdin/ja.yml
+++ b/modules/meeting/config/locales/crowdin/ja.yml
@@ -206,6 +206,7 @@ ja:
manage_participants: 参加者の管理
no_participants: 参加者なし
show_all: すべて表示
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: これらの参加者は、今後作成されるすべての会議に自動的に招待される。
manage_participants: プロジェクトメンバーを検索し、この会議の参加者として追加する。
diff --git a/modules/meeting/config/locales/crowdin/ka.yml b/modules/meeting/config/locales/crowdin/ka.yml
index f4d66fd1f0c..07c78acfe9a 100644
--- a/modules/meeting/config/locales/crowdin/ka.yml
+++ b/modules/meeting/config/locales/crowdin/ka.yml
@@ -211,6 +211,7 @@ ka:
manage_participants: Manage participants
no_participants: No participants
show_all: ყველაფრის ჩვენება
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/kk.yml b/modules/meeting/config/locales/crowdin/kk.yml
index 1db46e6e9cd..d7cdd1fa842 100644
--- a/modules/meeting/config/locales/crowdin/kk.yml
+++ b/modules/meeting/config/locales/crowdin/kk.yml
@@ -211,6 +211,7 @@ kk:
manage_participants: Manage participants
no_participants: No participants
show_all: Show all
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/ko.yml b/modules/meeting/config/locales/crowdin/ko.yml
index 4bc754e70f9..31b529494de 100644
--- a/modules/meeting/config/locales/crowdin/ko.yml
+++ b/modules/meeting/config/locales/crowdin/ko.yml
@@ -193,8 +193,8 @@ ko:
label_subscribe_icalendar: 캘린더 구독
caption_meeting_template_select: 템플릿을 선택하면 의제 항목이 자동으로 복사됩니다.
caption_template_project_select: 이 미팅 템플릿을 만들 프로젝트를 선택하세요
- placeholder_meeting_template_select_project_first: Select a project first
- placeholder_meeting_template_no_templates_for_project: No templates available for this project
+ placeholder_meeting_template_select_project_first: 먼저 프로젝트를 선택하세요
+ placeholder_meeting_template_no_templates_for_project: 이 프로젝트에 사용할 수 있는 템플릿이 없습니다
meeting:
participants:
label:
@@ -206,6 +206,7 @@ ko:
manage_participants: 참가자 관리
no_participants: 참가자 없음
show_all: 모두 표시
+ apply_to_upcoming_meetings: 이 시리즈의 모든 향후 미팅에 해당 변경 사항 적용
text:
template: 이러한 참가자는 향후 생성되는 모든 미팅에 자동으로 초대됩니다.
manage_participants: 프로젝트 멤버를 검색하여 이 미팅에 참가자로 추가하세요.
@@ -377,7 +378,7 @@ ko:
disabled: '이메일 캘린더 업데이트가 비활성화되었습니다. 참가자를 추가 또는 제거하는 경우 알려주는 이메일이 참가자에게 전송되지 않습니다.
'
- draft_disabled: 'Participants will not receive an email informing them when you add or remove participants.
+ draft_disabled: '참가자를 추가 또는 제거하는 경우 알려주는 이메일이 참가자에게 전송되지 않습니다.
'
onetime:
diff --git a/modules/meeting/config/locales/crowdin/lt.yml b/modules/meeting/config/locales/crowdin/lt.yml
index 58099181e14..2dd6c8ee98d 100644
--- a/modules/meeting/config/locales/crowdin/lt.yml
+++ b/modules/meeting/config/locales/crowdin/lt.yml
@@ -221,6 +221,7 @@ lt:
manage_participants: Valdyti dalyvius
no_participants: Nėra dalyvių
show_all: Rodyti viską
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/lv.yml b/modules/meeting/config/locales/crowdin/lv.yml
index 972a4135fed..8fdc3bfc36a 100644
--- a/modules/meeting/config/locales/crowdin/lv.yml
+++ b/modules/meeting/config/locales/crowdin/lv.yml
@@ -216,6 +216,7 @@ lv:
manage_participants: Manage participants
no_participants: No participants
show_all: Rādīt visus
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/mn.yml b/modules/meeting/config/locales/crowdin/mn.yml
index 50d98558d18..d4b9c828385 100644
--- a/modules/meeting/config/locales/crowdin/mn.yml
+++ b/modules/meeting/config/locales/crowdin/mn.yml
@@ -211,6 +211,7 @@ mn:
manage_participants: Manage participants
no_participants: No participants
show_all: Show all
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/ms.yml b/modules/meeting/config/locales/crowdin/ms.yml
index 67b663e115a..0567d21974a 100644
--- a/modules/meeting/config/locales/crowdin/ms.yml
+++ b/modules/meeting/config/locales/crowdin/ms.yml
@@ -208,6 +208,7 @@ ms:
manage_participants: Urus peserta
no_participants: Tiada peserta
show_all: Paparkan semua
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: Peserta ini akan dijemput secara automatik ke semua mesyuarat akan datang apabila ia dibuat.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/ne.yml b/modules/meeting/config/locales/crowdin/ne.yml
index 97ee6911a25..3e96b758a98 100644
--- a/modules/meeting/config/locales/crowdin/ne.yml
+++ b/modules/meeting/config/locales/crowdin/ne.yml
@@ -211,6 +211,7 @@ ne:
manage_participants: Manage participants
no_participants: No participants
show_all: Show all
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/nl.yml b/modules/meeting/config/locales/crowdin/nl.yml
index 5420e7bb2ad..dafe99c3f23 100644
--- a/modules/meeting/config/locales/crowdin/nl.yml
+++ b/modules/meeting/config/locales/crowdin/nl.yml
@@ -211,6 +211,7 @@ nl:
manage_participants: Deelnemers beheren
no_participants: Geen deelnemers
show_all: Toon alle
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: Deze deelnemers worden automatisch uitgenodigd voor alle toekomstige vergaderingen wanneer deze worden aangemaakt.
manage_participants: Zoek projectleden en voeg ze toe als deelnemers aan deze vergadering.
diff --git a/modules/meeting/config/locales/crowdin/no.yml b/modules/meeting/config/locales/crowdin/no.yml
index c0259c665e1..51c77af96da 100644
--- a/modules/meeting/config/locales/crowdin/no.yml
+++ b/modules/meeting/config/locales/crowdin/no.yml
@@ -211,6 +211,7 @@
manage_participants: Administrer deltagere
no_participants: Ingen deltakere
show_all: Vis alle
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/pl.yml b/modules/meeting/config/locales/crowdin/pl.yml
index ac1f38ff1b7..b5c8278f6a6 100644
--- a/modules/meeting/config/locales/crowdin/pl.yml
+++ b/modules/meeting/config/locales/crowdin/pl.yml
@@ -221,6 +221,7 @@ pl:
manage_participants: Zarządzaj uczestnikami
no_participants: Brak uczestników
show_all: Pokaż wszystkie
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: Uczestnicy ci będą automatycznie zapraszani na wszystkie przyszłe spotkania w miarę ich tworzenia.
manage_participants: Wyszukaj członków projektu i dodaj ich jako uczestników tego spotkania.
diff --git a/modules/meeting/config/locales/crowdin/pt-BR.yml b/modules/meeting/config/locales/crowdin/pt-BR.yml
index 001bf0d9247..5328de47c42 100644
--- a/modules/meeting/config/locales/crowdin/pt-BR.yml
+++ b/modules/meeting/config/locales/crowdin/pt-BR.yml
@@ -198,8 +198,8 @@ pt-BR:
label_subscribe_icalendar: Assinar calendário
caption_meeting_template_select: Selecione um modelo para copiar automaticamente os itens da pauta
caption_template_project_select: Selecione o projeto no qual deseja criar este modelo de reunião
- placeholder_meeting_template_select_project_first: Select a project first
- placeholder_meeting_template_no_templates_for_project: No templates available for this project
+ placeholder_meeting_template_select_project_first: Primeiro, selecionar um projeto
+ placeholder_meeting_template_no_templates_for_project: Não há templates disponíveis para este projeto
meeting:
participants:
label:
@@ -211,6 +211,7 @@ pt-BR:
manage_participants: Gerenciar participantes
no_participants: Sem participantes
show_all: Mostrar todos
+ apply_to_upcoming_meetings: Aplique essas alterações a todas as próximas reuniões desta série
text:
template: Esses participantes serão convidados automaticamente para todas as futuras reuniões à medida que forem criadas.
manage_participants: Pesquisar e adicionar membros do projeto como participantes desta reunião.
@@ -219,8 +220,8 @@ pt-BR:
heading: Sem participantes
description: Ainda não há participantes.
attachments:
- onetime_template: These attached files will be included in all future meetings using this template.
- series_template: These attached files will be included in all future meetings in the series.
+ onetime_template: Esses arquivos anexados serão adicionados a todas as reuniões futuras usando este modelo.
+ series_template: Esses arquivos anexados serão adicionados a todas as reuniões futuras da série.
text: Os arquivos anexados estão disponíveis para todos os participantes da reunião. Você também pode arrastá-los e soltá-los nas anotações dos itens da pauta.
copy:
title: 'Copiar reunião: %{title}'
@@ -298,7 +299,7 @@ pt-BR:
template:
title: Excluir modelo
heading: Excluir este modelo?
- confirmation_message_html: 'This action is not reversible. Please proceed with caution. Existing meetings that were created using this template will not be affected.
+ confirmation_message_html: 'Esta ação não é reversível. Prossiga com cautela. As reuniões existentes criadas com este modelo não serão afetadas.
'
occurrence:
@@ -382,7 +383,7 @@ pt-BR:
disabled: 'As atualizações de calendário por e-mail estão desativadas. Os participantes não receberão e-mails quando você adicionar ou remover participantes.
'
- draft_disabled: 'Participants will not receive an email informing them when you add or remove participants.
+ draft_disabled: 'Os participantes não receberão e-mail informando quando você adicionar ou remover participantes.
'
onetime:
diff --git a/modules/meeting/config/locales/crowdin/pt-PT.yml b/modules/meeting/config/locales/crowdin/pt-PT.yml
index a9d293209ab..36b4df413b0 100644
--- a/modules/meeting/config/locales/crowdin/pt-PT.yml
+++ b/modules/meeting/config/locales/crowdin/pt-PT.yml
@@ -211,6 +211,7 @@ pt-PT:
manage_participants: Gerir participantes
no_participants: Sem participantes
show_all: Mostrar todos
+ apply_to_upcoming_meetings: Aplicar estas alterações a todas as próximas reuniões desta série
text:
template: Estes participantes serão convidados automaticamente para todas as reuniões futuras à medida que forem sendo criadas.
manage_participants: Procure e adicione membros do projeto como participantes nesta reunião.
diff --git a/modules/meeting/config/locales/crowdin/ro.yml b/modules/meeting/config/locales/crowdin/ro.yml
index c5f8fa73529..f613dc6979e 100644
--- a/modules/meeting/config/locales/crowdin/ro.yml
+++ b/modules/meeting/config/locales/crowdin/ro.yml
@@ -216,6 +216,7 @@ ro:
manage_participants: Manage participants
no_participants: No participants
show_all: Afișează tot
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/ru.yml b/modules/meeting/config/locales/crowdin/ru.yml
index ba9ea7bcaea..449158975c7 100644
--- a/modules/meeting/config/locales/crowdin/ru.yml
+++ b/modules/meeting/config/locales/crowdin/ru.yml
@@ -221,6 +221,7 @@ ru:
manage_participants: Управление участниками
no_participants: Нет участников
show_all: Показывать всё
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: Эти участники будут автоматически приглашаться на все будущие совещания по мере их создания.
manage_participants: Найдите и добавьте членов проекта в качестве участников совещания.
diff --git a/modules/meeting/config/locales/crowdin/rw.yml b/modules/meeting/config/locales/crowdin/rw.yml
index 2e2022aeea0..3c27820e7eb 100644
--- a/modules/meeting/config/locales/crowdin/rw.yml
+++ b/modules/meeting/config/locales/crowdin/rw.yml
@@ -211,6 +211,7 @@ rw:
manage_participants: Manage participants
no_participants: No participants
show_all: Show all
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/si.yml b/modules/meeting/config/locales/crowdin/si.yml
index 8e8802d1cae..f99f5989d26 100644
--- a/modules/meeting/config/locales/crowdin/si.yml
+++ b/modules/meeting/config/locales/crowdin/si.yml
@@ -211,6 +211,7 @@ si:
manage_participants: Manage participants
no_participants: No participants
show_all: සියල්ල පෙන්වන්න
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/sk.yml b/modules/meeting/config/locales/crowdin/sk.yml
index 54cbb235eb7..0a838e7e9f9 100644
--- a/modules/meeting/config/locales/crowdin/sk.yml
+++ b/modules/meeting/config/locales/crowdin/sk.yml
@@ -221,6 +221,7 @@ sk:
manage_participants: Manage participants
no_participants: No participants
show_all: Zobraziť všetko
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/sl.yml b/modules/meeting/config/locales/crowdin/sl.yml
index c6c15ebf240..a542974d15f 100644
--- a/modules/meeting/config/locales/crowdin/sl.yml
+++ b/modules/meeting/config/locales/crowdin/sl.yml
@@ -221,6 +221,7 @@ sl:
manage_participants: Manage participants
no_participants: No participants
show_all: Prikaži vse
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/sr.yml b/modules/meeting/config/locales/crowdin/sr.yml
index 6ed31825608..2a161adc124 100644
--- a/modules/meeting/config/locales/crowdin/sr.yml
+++ b/modules/meeting/config/locales/crowdin/sr.yml
@@ -216,6 +216,7 @@ sr:
manage_participants: Manage participants
no_participants: No participants
show_all: Show all
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/sv.yml b/modules/meeting/config/locales/crowdin/sv.yml
index 834c90e1571..78bf1278d02 100644
--- a/modules/meeting/config/locales/crowdin/sv.yml
+++ b/modules/meeting/config/locales/crowdin/sv.yml
@@ -211,6 +211,7 @@ sv:
manage_participants: Hantera deltagare
no_participants: Inga deltagare
show_all: Visa alla
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: Dessa deltagare kommer automatiskt att bjudas in till alla framtida möten när de skapas.
manage_participants: Sök efter och lägg till projektmedlemmar som deltagare till detta möte.
diff --git a/modules/meeting/config/locales/crowdin/th.yml b/modules/meeting/config/locales/crowdin/th.yml
index 43d1808629a..bf3f7d9f136 100644
--- a/modules/meeting/config/locales/crowdin/th.yml
+++ b/modules/meeting/config/locales/crowdin/th.yml
@@ -206,6 +206,7 @@ th:
manage_participants: Manage participants
no_participants: No participants
show_all: แสดงทั้งหมด
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/tr.yml b/modules/meeting/config/locales/crowdin/tr.yml
index a01a4755de4..b64ea708f42 100644
--- a/modules/meeting/config/locales/crowdin/tr.yml
+++ b/modules/meeting/config/locales/crowdin/tr.yml
@@ -211,6 +211,7 @@ tr:
manage_participants: Katılımcıları yönet
no_participants: Katılımcı yok
show_all: Tümünü göster
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: Oluşturuldukça bu katılımcılar, gelecekteki tüm toplantılara otomatik olarak davet edilecektir.
manage_participants: Proje üyelerini arayın ve bu toplantıya katılımcı olarak ekleyin.
diff --git a/modules/meeting/config/locales/crowdin/uk.yml b/modules/meeting/config/locales/crowdin/uk.yml
index 666d3cde97c..9062610fb4c 100644
--- a/modules/meeting/config/locales/crowdin/uk.yml
+++ b/modules/meeting/config/locales/crowdin/uk.yml
@@ -199,7 +199,7 @@ uk:
label_notify: Надіслати на розгляд
label_icalendar: Надіслати iCalendar
label_icalendar_download: Завантажити подію iCalendar
- label_view_meeting: View meeting
+ label_view_meeting: Переглянути зустріч
label_view_meeting_series: Переглянути серію нарад
label_meeting_series: Серія нарад
label_version: Версія
@@ -208,8 +208,8 @@ uk:
label_subscribe_icalendar: Підписатися на календар
caption_meeting_template_select: Виберіть шаблон, щоб автоматично скопіювати з нього пункти порядку денного
caption_template_project_select: Виберіть проєкт, у якому ви хочете створити цей шаблон наради
- placeholder_meeting_template_select_project_first: Select a project first
- placeholder_meeting_template_no_templates_for_project: No templates available for this project
+ placeholder_meeting_template_select_project_first: Спершу виберіть проєкт
+ placeholder_meeting_template_no_templates_for_project: Немає шаблонів, доступних для цього проєкту
meeting:
participants:
label:
@@ -221,6 +221,7 @@ uk:
manage_participants: Керувати учасниками
no_participants: Немає учасників
show_all: Показати всі
+ apply_to_upcoming_meetings: Застосувати ці зміни до всіх майбутніх нарад цієї серії
text:
template: Ці учасники автоматично отримуватимуть запрошення на всі майбутні наради, які ви створюватимете.
manage_participants: Знайдіть учасників проєкту й додайте їх у цю нараду в ролі учасників.
@@ -229,7 +230,7 @@ uk:
heading: Немає учасників
description: Учасників ще немає.
attachments:
- onetime_template: These attached files will be included in all future meetings using this template.
+ onetime_template: Ці прикріплені файли додаватимуться в усі наради, які буде створено із використанням цього шаблону в майбутньому.
series_template: Ці прикріплені файли додаватимуться до всіх майбутніх нарад серії.
text: Прикріплені файли доступні всім учасникам наради. Ви також можете перетягнути їх у примітки до пунктів порядку денного.
copy:
@@ -308,7 +309,7 @@ uk:
template:
title: Видалити шаблон
heading: Видалити цей шаблон?
- confirmation_message_html: 'This action is not reversible. Please proceed with caution. Existing meetings that were created using this template will not be affected.
+ confirmation_message_html: 'Зверніть увагу: цю дію не можна відмінити. Вона не вплине на наради, які було створено за допомогою цього шаблону раніше.
'
occurrence:
@@ -392,7 +393,7 @@ uk:
disabled: 'Надсилання електронною поштою оновлень із календаря вимкнено. Якщо ви додасте нових учасників чи вилучите наявних, учасники не отримають листа з інформацією про це.
'
- draft_disabled: 'Participants will not receive an email informing them when you add or remove participants.
+ draft_disabled: 'Учасники не отримають електронного листа з відповідним повідомленням після того, як ви додасте чи вилучите когось із них.
'
onetime:
diff --git a/modules/meeting/config/locales/crowdin/uz.yml b/modules/meeting/config/locales/crowdin/uz.yml
index 4f68d88a2f0..70d25d29134 100644
--- a/modules/meeting/config/locales/crowdin/uz.yml
+++ b/modules/meeting/config/locales/crowdin/uz.yml
@@ -211,6 +211,7 @@ uz:
manage_participants: Manage participants
no_participants: No participants
show_all: Show all
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: These participants will be invited automatically to all future meetings as they are created.
manage_participants: Search for and add project members as participants to this meeting.
diff --git a/modules/meeting/config/locales/crowdin/vi.yml b/modules/meeting/config/locales/crowdin/vi.yml
index 99c1e2f4504..872c02b8dc5 100644
--- a/modules/meeting/config/locales/crowdin/vi.yml
+++ b/modules/meeting/config/locales/crowdin/vi.yml
@@ -206,6 +206,7 @@ vi:
manage_participants: Quản lý người tham gia
no_participants: Không có người tham gia
show_all: Hiển thị tất cả
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: Những người tham gia này sẽ tự động được mời tham gia tất cả các cuộc họp trong tương lai khi chúng được tạo.
manage_participants: Tìm kiếm và thêm thành viên dự án làm người tham gia cuộc họp này.
diff --git a/modules/meeting/config/locales/crowdin/zh-CN.yml b/modules/meeting/config/locales/crowdin/zh-CN.yml
index b20924c8727..3fbce2ebd96 100644
--- a/modules/meeting/config/locales/crowdin/zh-CN.yml
+++ b/modules/meeting/config/locales/crowdin/zh-CN.yml
@@ -184,7 +184,7 @@ zh-CN:
label_notify: 发送待审阅
label_icalendar: 发送 iCalendar
label_icalendar_download: 下载 iCalendar 事件
- label_view_meeting: View meeting
+ label_view_meeting: 查看会议
label_view_meeting_series: 查看会议系列
label_meeting_series: 会议系列
label_version: 版本
@@ -193,8 +193,8 @@ zh-CN:
label_subscribe_icalendar: 订阅日历
caption_meeting_template_select: 选择一个模板,以自动复制其议程条目
caption_template_project_select: 请选择要在其中创建此会议模板的项目
- placeholder_meeting_template_select_project_first: Select a project first
- placeholder_meeting_template_no_templates_for_project: No templates available for this project
+ placeholder_meeting_template_select_project_first: 先选择项目
+ placeholder_meeting_template_no_templates_for_project: 此项目没有可用模板
meeting:
participants:
label:
@@ -206,6 +206,7 @@ zh-CN:
manage_participants: 管理与会者
no_participants: 无参加者
show_all: 全部显示
+ apply_to_upcoming_meetings: 将这些更改应用于此系列中所有即将召开的会议
text:
template: 这些与会者将被自动邀请参加之后创建的所有会议。
manage_participants: 搜索并添加项目成员作为本次会议的参与者。
@@ -377,7 +378,7 @@ zh-CN:
disabled: '电子邮件日历更新已禁用。在您添加或移除参与者时,参与者不会收到电子邮件通知。
'
- draft_disabled: 'Participants will not receive an email informing them when you add or remove participants.
+ draft_disabled: '在您添加或移除参与者时,参与者不会收到电子邮件通知。
'
onetime:
diff --git a/modules/meeting/config/locales/crowdin/zh-TW.yml b/modules/meeting/config/locales/crowdin/zh-TW.yml
index 839f156820c..94dd7253464 100644
--- a/modules/meeting/config/locales/crowdin/zh-TW.yml
+++ b/modules/meeting/config/locales/crowdin/zh-TW.yml
@@ -208,6 +208,7 @@ zh-TW:
manage_participants: 管理參與者
no_participants: 沒有參與者
show_all: 顯示全部
+ apply_to_upcoming_meetings: Apply these changes to all upcoming meetings in this series
text:
template: 這些參與者將自動被邀請參加未來所有建立的會議。
manage_participants: 搜尋並新增專案成員為此會議的參與者。
diff --git a/modules/meeting/config/locales/en.yml b/modules/meeting/config/locales/en.yml
index 24e0328853b..030883a79a4 100644
--- a/modules/meeting/config/locales/en.yml
+++ b/modules/meeting/config/locales/en.yml
@@ -230,6 +230,7 @@ en:
manage_participants: "Manage participants"
no_participants: "No participants"
show_all: "Show all"
+ apply_to_upcoming_meetings: "Apply these changes to all upcoming meetings in this series"
text:
template: "These participants will be invited automatically to all future meetings as they are created."
manage_participants: "Search for and add project members as participants to this meeting."
diff --git a/modules/meeting/spec/components/meeting_agenda_items/item_component/show_component_spec.rb b/modules/meeting/spec/components/meeting_agenda_items/item_component/show_component_spec.rb
index c55053fe64a..c7caba49369 100644
--- a/modules/meeting/spec/components/meeting_agenda_items/item_component/show_component_spec.rb
+++ b/modules/meeting/spec/components/meeting_agenda_items/item_component/show_component_spec.rb
@@ -79,6 +79,7 @@ RSpec.describe MeetingAgendaItems::ItemComponent::ShowComponent, type: :componen
context "when the meeting is in the future" do
let(:meeting_start_time) { 1.week.from_now }
+ let!(:scheduled_meeting) { create(:scheduled_meeting, recurring_meeting: series, start_time: meeting_start_time, meeting:) }
it "calculates next occurrence from meeting start time" do
next_occurrence = series.next_occurrence(from_time: meeting.start_time)
@@ -138,6 +139,7 @@ RSpec.describe MeetingAgendaItems::ItemComponent::ShowComponent, type: :componen
start_time: 1.week.from_now,
author: user)
end
+ let!(:scheduled_meeting) { create(:scheduled_meeting, recurring_meeting: series, start_time: meeting.start_time, meeting:) }
it "shows the duplicate submenu" do
expect(series.next_occurrence(from_time: meeting.start_time)).to be_present
diff --git a/modules/meeting/spec/features/recurring_meetings/recurring_meeting_create_spec.rb b/modules/meeting/spec/features/recurring_meetings/recurring_meeting_create_spec.rb
index e91d16f84e6..f729b87b8bb 100644
--- a/modules/meeting/spec/features/recurring_meetings/recurring_meeting_create_spec.rb
+++ b/modules/meeting/spec/features/recurring_meetings/recurring_meeting_create_spec.rb
@@ -171,6 +171,7 @@ RSpec.describe "Recurring meetings creation",
template_page.expect_participant(other_user, editable: false)
template_page.expect_available_participants(count: 2)
+ template_page.uncheck_apply_to_upcoming
template_page.select_participant(third_user)
template_page.expect_participant(third_user, editable: false)
template_page.expect_available_participants(count: 3)
diff --git a/modules/meeting/spec/features/recurring_meetings/recurring_meeting_move_to_next_spec.rb b/modules/meeting/spec/features/recurring_meetings/recurring_meeting_move_to_next_spec.rb
index d0899918f3f..ba28076e203 100644
--- a/modules/meeting/spec/features/recurring_meetings/recurring_meeting_move_to_next_spec.rb
+++ b/modules/meeting/spec/features/recurring_meetings/recurring_meeting_move_to_next_spec.rb
@@ -163,6 +163,47 @@ RSpec.describe "Recurring meetings move to next meeting", :js do
end
end
+ context "when the occurrence has been rescheduled to an earlier time (Bug #73741)" do
+ let(:current_user) { user_with_manage_permissions }
+ let(:first_occurrence_time) { series.next_occurrence(from_time: Time.current) }
+
+ let!(:rescheduled_occurrence) do
+ call = RecurringMeetings::InitOccurrenceService
+ .new(user: User.system, recurring_meeting: series)
+ .call(start_time: first_occurrence_time)
+ occurrence_meeting = call.result
+
+ # Reschedule to an earlier time
+ # This updates meeting.start_time, but not meeting.scheduled_meeting.start_time
+ occurrence_meeting.update!(start_time: first_occurrence_time - 1.day)
+ occurrence_meeting
+ end
+
+ let(:meeting) { rescheduled_occurrence }
+
+ it "moves the item to the occurrence after the original scheduled time" do
+ meeting_page.expect_agenda_item(title: "Test notes")
+
+ meeting_page.select_action(agenda_item, "Move to next meeting")
+ expect(page).to have_text("Move to next meeting?")
+
+ page.within_modal "Move to next meeting?" do
+ click_on "Move"
+ end
+
+ expect_and_dismiss_flash(message: "Agenda item moved to the next meeting")
+
+ meeting_page.expect_no_agenda_item(title: "Test notes")
+
+ next_meeting = Meeting.find(agenda_item.reload.meeting_id)
+ expect(next_meeting.id).not_to eq(rescheduled_occurrence.id)
+
+ next_meeting_page = Pages::Meetings::Show.new(next_meeting)
+ next_meeting_page.visit!
+ next_meeting_page.expect_agenda_item(title: "Test notes")
+ end
+ end
+
context "with view permission only" do
let(:current_user) { user_with_view_permissions }
diff --git a/modules/meeting/spec/features/recurring_meetings/recurring_meeting_participants_spec.rb b/modules/meeting/spec/features/recurring_meetings/recurring_meeting_participants_spec.rb
new file mode 100644
index 00000000000..4b95f9850f8
--- /dev/null
+++ b/modules/meeting/spec/features/recurring_meetings/recurring_meeting_participants_spec.rb
@@ -0,0 +1,162 @@
+# frozen_string_literal: true
+
+#-- copyright
+# OpenProject is an open source project management software.
+# Copyright (C) the OpenProject GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License version 3.
+#
+# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
+# Copyright (C) 2006-2013 Jean-Philippe Lang
+# Copyright (C) 2010-2013 the ChiliProject Team
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# See COPYRIGHT and LICENSE files for more details.
+#++
+
+require "spec_helper"
+require_relative "../../support/pages/meetings/show"
+
+RSpec.describe "Series template participant management",
+ :js do
+ include Components::Autocompleter::NgSelectAutocompleteHelpers
+
+ shared_let(:project) { create(:project, enabled_module_names: %w[meetings]) }
+ shared_let(:user) do
+ create(:user, member_with_permissions: { project => %i[view_meetings create_meetings edit_meetings] })
+ end
+ shared_let(:participant_a) do
+ create(:user, member_with_permissions: { project => %i[view_meetings] })
+ end
+ shared_let(:participant_b) do
+ create(:user, member_with_permissions: { project => %i[view_meetings] })
+ end
+
+ let(:recurring_meeting) { create(:recurring_meeting, project:, author: user) }
+ let(:template) { recurring_meeting.template }
+ let(:template_page) { Pages::Meetings::Show.new(template) }
+
+ before do
+ login_as user
+ template_page.visit!
+ end
+
+ describe "'apply to upcoming' checkbox state" do
+ context "when adding multiple participants with checkbox unchecked" do
+ it "keeps the checkbox unchecked after each addition" do
+ template_page.open_participant_form
+ template_page.in_participant_form do
+ template_page.uncheck_apply_to_upcoming
+ template_page.expect_apply_to_upcoming_unchecked
+
+ wait_for_turbo_stream do
+ template_page.select_participant(participant_a)
+ end
+ template_page.expect_apply_to_upcoming_unchecked
+
+ wait_for_turbo_stream do
+ template_page.select_participant(participant_b)
+ end
+ template_page.expect_apply_to_upcoming_unchecked
+ end
+ end
+
+ it "does not add participants to occurrences" do
+ open_scheduled = create(:scheduled_meeting, :persisted, recurring_meeting:, start_time: 1.day.from_now)
+
+ template_page.open_participant_form
+ template_page.in_participant_form do
+ template_page.uncheck_apply_to_upcoming
+ template_page.expect_apply_to_upcoming_unchecked
+
+ wait_for_turbo_stream do
+ template_page.select_participant(participant_a)
+ end
+ wait_for_turbo_stream do
+ template_page.select_participant(participant_b)
+ end
+ end
+
+ expect(open_scheduled.meeting.participants.pluck(:user_id))
+ .not_to include(participant_a.id, participant_b.id)
+ end
+ end
+
+ context "when removing multiple participants with checkbox unchecked" do
+ let!(:meeting_participant_a) do
+ create(:meeting_participant, meeting: template, user: participant_a, invited: true)
+ end
+ let!(:meeting_participant_b) do
+ create(:meeting_participant, meeting: template, user: participant_b, invited: true)
+ end
+
+ it "keeps the checkbox unchecked after each removal" do
+ template_page.open_participant_form
+ template_page.in_participant_form do
+ template_page.uncheck_apply_to_upcoming
+ template_page.expect_apply_to_upcoming_unchecked
+
+ wait_for_turbo_stream do
+ template_page.remove_participant(participant_a)
+ end
+ template_page.expect_apply_to_upcoming_unchecked
+
+ wait_for_turbo_stream do
+ template_page.remove_participant(participant_b)
+ end
+ template_page.expect_apply_to_upcoming_unchecked
+ end
+ end
+
+ it "does not remove participants from occurrences" do
+ open_scheduled = create(:scheduled_meeting, :persisted, recurring_meeting:, start_time: 1.day.from_now)
+ create(:meeting_participant, meeting: open_scheduled.meeting, user: participant_a, invited: true)
+ create(:meeting_participant, meeting: open_scheduled.meeting, user: participant_b, invited: true)
+
+ template_page.open_participant_form
+ template_page.in_participant_form do
+ template_page.uncheck_apply_to_upcoming
+ template_page.expect_apply_to_upcoming_unchecked
+
+ wait_for_turbo_stream do
+ template_page.remove_participant(participant_a)
+ end
+ wait_for_turbo_stream do
+ template_page.remove_participant(participant_b)
+ end
+ end
+
+ expect(open_scheduled.meeting.participants.reload.pluck(:user_id))
+ .to include(participant_a.id, participant_b.id)
+ end
+ end
+
+ it "defaults to checked when the dialog is reopened" do
+ template_page.open_participant_form
+ template_page.in_participant_form do
+ template_page.uncheck_apply_to_upcoming
+ template_page.expect_apply_to_upcoming_unchecked
+ page.find(".close-button").click
+ end
+
+ template_page.open_participant_form
+ template_page.in_participant_form do
+ template_page.expect_apply_to_upcoming_checked
+ end
+ end
+ end
+end
diff --git a/modules/meeting/spec/requests/meeting_participants_spec.rb b/modules/meeting/spec/requests/meeting_participants_spec.rb
index 691ed01c984..8fff3132d68 100644
--- a/modules/meeting/spec/requests/meeting_participants_spec.rb
+++ b/modules/meeting/spec/requests/meeting_participants_spec.rb
@@ -248,10 +248,207 @@ RSpec.describe "MeetingParticipants requests",
end
describe "GET /meetings/:meeting_id/participants/manage_participants_dialog" do
+ let(:apply_to_upcoming_checkbox) { "meeting_participant[apply_to_upcoming]" }
+
it "responds with the manage participants dialog" do
get manage_participants_dialog_project_meeting_participants_path(project, meeting), as: :turbo_stream
expect(response).to have_http_status(:ok)
end
+
+ context "for a one-time meeting" do
+ it "does not show the apply to upcoming checkbox" do
+ get manage_participants_dialog_project_meeting_participants_path(project, meeting), as: :turbo_stream
+
+ expect(response.body).not_to include(apply_to_upcoming_checkbox)
+ end
+ end
+
+ context "for a one-time template" do
+ let(:onetime_template) { create(:onetime_template, project:, author: user) }
+
+ it "does not show the apply to upcoming checkbox" do
+ get manage_participants_dialog_project_meeting_participants_path(project, onetime_template), as: :turbo_stream
+
+ expect(response.body).not_to include(apply_to_upcoming_checkbox)
+ end
+ end
+
+ context "for a series template" do
+ let(:recurring_meeting) { create(:recurring_meeting, project:, author: user) }
+
+ it "shows the apply to upcoming checkbox" do
+ get manage_participants_dialog_project_meeting_participants_path(project, recurring_meeting.template), as: :turbo_stream
+
+ expect(response.body).to include(apply_to_upcoming_checkbox)
+ end
+ end
+
+ context "for a series occurrence" do
+ let(:recurring_meeting) { create(:recurring_meeting, project:, author: user) }
+ let(:occurrence) { create(:meeting, project:, author: user, recurring_meeting:) }
+
+ it "does not show the apply to upcoming checkbox" do
+ get manage_participants_dialog_project_meeting_participants_path(project, occurrence), as: :turbo_stream
+
+ expect(response.body).not_to include(apply_to_upcoming_checkbox)
+ end
+ end
+ end
+
+ describe "series template participant management" do
+ let!(:recurring_meeting) { create(:recurring_meeting, project:, author: user) }
+ let!(:template) { recurring_meeting.template }
+
+ let!(:open_scheduled) { create(:scheduled_meeting, :persisted, recurring_meeting:, start_time: 1.day.from_now) }
+ let!(:open_occurrence) { open_scheduled.meeting }
+
+ let!(:closed_scheduled) { create(:scheduled_meeting, :persisted, recurring_meeting:, start_time: 2.days.from_now) }
+ let!(:closed_occurrence) { closed_scheduled.meeting.tap { |m| m.update!(state: :closed) } }
+
+ before { ActionMailer::Base.deliveries.clear }
+
+ describe "POST - adding participants" do
+ let(:add_params) do
+ {
+ meeting_id: template.id,
+ project_id: project.id,
+ meeting_participant: { user_id: [user_with_meeting_permissions.id] }
+ }
+ end
+
+ context "without apply_to_upcoming" do
+ it "only adds participant to the series template" do
+ post project_meeting_participants_path(project, template), params: add_params, as: :turbo_stream
+
+ expect(template.participants.reload.pluck(:user_id)).to include(user_with_meeting_permissions.id)
+ expect(open_occurrence.participants.reload.pluck(:user_id)).not_to include(user_with_meeting_permissions.id)
+ expect(closed_occurrence.participants.reload.pluck(:user_id)).not_to include(user_with_meeting_permissions.id)
+ end
+
+ it "only sends series invitation emails" do
+ post project_meeting_participants_path(project, template), params: add_params, as: :turbo_stream
+ perform_enqueued_jobs
+
+ # 1 series invite to new participant + 1 participant added email to existing participant
+ expect(ActionMailer::Base.deliveries.size).to eq(2)
+ expect(ActionMailer::Base.deliveries.map(&:to).flatten).to include(user_with_meeting_permissions.mail)
+ end
+ end
+
+ context "with apply_to_upcoming" do
+ let(:params) { add_params.deep_merge(meeting_participant: { apply_to_upcoming: "1" }) }
+
+ it "adds participant to template and all instantiated occurrences" do
+ post project_meeting_participants_path(project, template), params:, as: :turbo_stream
+
+ expect(template.participants.reload.pluck(:user_id)).to include(user_with_meeting_permissions.id)
+ expect(open_occurrence.participants.reload.pluck(:user_id)).to include(user_with_meeting_permissions.id)
+ expect(closed_occurrence.participants.reload.pluck(:user_id)).to include(user_with_meeting_permissions.id)
+ end
+
+ it "does not add participant to past instantiated occurrences" do
+ past_scheduled = create(:scheduled_meeting, :persisted, recurring_meeting:, start_time: 1.week.ago)
+
+ post project_meeting_participants_path(project, template), params:, as: :turbo_stream
+
+ expect(past_scheduled.meeting.participants.reload.pluck(:user_id))
+ .not_to include(user_with_meeting_permissions.id)
+ end
+
+ it "does not automatically instantiate future unscheduled occurrences" do
+ future_uninstantiated = create(:scheduled_meeting, recurring_meeting:, start_time: 2.weeks.from_now)
+
+ post project_meeting_participants_path(project, template), params:, as: :turbo_stream
+
+ expect(future_uninstantiated.reload.meeting).to be_nil
+ end
+
+ it "sends emails for series and open occurrences, but not closed" do
+ post project_meeting_participants_path(project, template), params:, as: :turbo_stream
+ perform_enqueued_jobs
+
+ # 1 series invite to new participant + 1 participant added email to existing participant + 1 occurrence invite
+ expect(ActionMailer::Base.deliveries.size).to eq(3)
+ expect(ActionMailer::Base.deliveries.map(&:to).flatten)
+ .to include(user_with_meeting_permissions.mail, user.mail)
+ end
+ end
+ end
+
+ describe "DELETE - removing participants" do
+ let!(:template_participant) do
+ create(:meeting_participant, meeting: template, user: user_with_meeting_permissions, invited: true)
+ end
+ let!(:open_occurrence_participant) do
+ create(:meeting_participant, meeting: open_occurrence, user: user_with_meeting_permissions, invited: true)
+ end
+ let!(:closed_occurrence_participant) do
+ create(:meeting_participant, meeting: closed_occurrence, user: user_with_meeting_permissions, invited: true)
+ end
+
+ context "without apply_to_upcoming" do
+ it "only removes participant from the series template" do
+ delete project_meeting_participant_path(project, template, template_participant), as: :turbo_stream
+
+ expect(template.participants.reload.pluck(:user_id)).not_to include(user_with_meeting_permissions.id)
+ expect(open_occurrence.participants.reload.pluck(:user_id)).to include(user_with_meeting_permissions.id)
+ expect(closed_occurrence.participants.reload.pluck(:user_id)).to include(user_with_meeting_permissions.id)
+ end
+
+ it "only sends template cancellation emails" do
+ delete project_meeting_participant_path(project, template, template_participant), as: :turbo_stream
+ perform_enqueued_jobs
+
+ # 1 cancelled series to removed participant + 1 participant removed to remaining template participant
+ expect(ActionMailer::Base.deliveries.size).to eq(2)
+ expect(ActionMailer::Base.deliveries.map(&:to).flatten).to include(user_with_meeting_permissions.mail)
+ end
+ end
+
+ context "with apply_to_upcoming" do
+ let(:delete_params) { { apply_to_upcoming: "1" } }
+
+ it "removes participant from template and upcoming instantiated occurrences" do
+ delete project_meeting_participant_path(project, template, template_participant),
+ params: delete_params, as: :turbo_stream
+
+ expect(template.participants.reload.pluck(:user_id)).not_to include(user_with_meeting_permissions.id)
+ expect(open_occurrence.participants.reload.pluck(:user_id)).not_to include(user_with_meeting_permissions.id)
+ expect(closed_occurrence.participants.reload.pluck(:user_id)).not_to include(user_with_meeting_permissions.id)
+ end
+
+ it "does not remove participant from past instantiated occurrences" do
+ past_scheduled = create(:scheduled_meeting, :persisted, recurring_meeting:, start_time: 1.week.ago)
+ create(:meeting_participant, meeting: past_scheduled.meeting, user: user_with_meeting_permissions, invited: true)
+
+ delete project_meeting_participant_path(project, template, template_participant),
+ params: delete_params, as: :turbo_stream
+
+ expect(past_scheduled.meeting.participants.reload.pluck(:user_id))
+ .to include(user_with_meeting_permissions.id)
+ end
+
+ it "does not automatically instantiate future unscheduled occurrences" do
+ future_uninstantiated = create(:scheduled_meeting, recurring_meeting:, start_time: 2.weeks.from_now)
+
+ delete project_meeting_participant_path(project, template, template_participant),
+ params: delete_params, as: :turbo_stream
+
+ expect(future_uninstantiated.reload.meeting).to be_nil
+ end
+
+ it "sends cancellation emails for template and open occurrences, but not closed" do
+ delete project_meeting_participant_path(project, template, template_participant),
+ params: delete_params, as: :turbo_stream
+ perform_enqueued_jobs
+
+ # 1 cancelled series to removed participant + 1 participant removed to remaining participant +
+ # 1 occurrence cancelled
+ expect(ActionMailer::Base.deliveries.size).to eq(3)
+ expect(ActionMailer::Base.deliveries.map(&:to).flatten).to include(user_with_meeting_permissions.mail)
+ end
+ end
+ end
end
end
diff --git a/modules/meeting/spec/support/pages/meetings/show.rb b/modules/meeting/spec/support/pages/meetings/show.rb
index 5c0c6a64e52..2000899ded6 100644
--- a/modules/meeting/spec/support/pages/meetings/show.rb
+++ b/modules/meeting/spec/support/pages/meetings/show.rb
@@ -575,6 +575,18 @@ module Pages::Meetings
click_on "Add"
end
+ def uncheck_apply_to_upcoming
+ page.find('input[type="checkbox"][name="meeting_participant[apply_to_upcoming]"]').set(false)
+ end
+
+ def expect_apply_to_upcoming_checked
+ expect(page).to have_checked_field("meeting_participant[apply_to_upcoming]")
+ end
+
+ def expect_apply_to_upcoming_unchecked
+ expect(page).to have_unchecked_field("meeting_participant[apply_to_upcoming]")
+ end
+
def expect_no_participant(participant)
autocomplete = page.find('[data-test-selector="participants-dialog-autocomplete"]')
search_autocomplete(autocomplete, query: participant.lastname, results_selector: "body")
diff --git a/modules/openid_connect/app/components/openid_connect/providers/confirm_destroy_dialog_component.html.erb b/modules/openid_connect/app/components/openid_connect/providers/confirm_destroy_dialog_component.html.erb
new file mode 100644
index 00000000000..b86753121e9
--- /dev/null
+++ b/modules/openid_connect/app/components/openid_connect/providers/confirm_destroy_dialog_component.html.erb
@@ -0,0 +1,55 @@
+<%#-- copyright
+OpenProject is an open source project management software.
+Copyright (C) the OpenProject GmbH
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License version 3.
+
+OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
+Copyright (C) 2006-2013 Jean-Philippe Lang
+Copyright (C) 2010-2013 the ChiliProject Team
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+See COPYRIGHT and LICENSE files for more details.
+
+++#%>
+
+<%=
+ render(
+ Primer::OpenProject::DangerDialog.new(
+ title: I18n.t("openid_connect.delete_title"),
+ form_arguments:,
+ size: :large
+ )
+ ) do |dialog|
+%>
+ <% dialog.with_confirmation_message do |message|
+ message.with_heading(tag: :h2) { I18n.t("openid_connect.delete_heading") }
+ message.with_description_content(
+ I18n.t("provider.delete_warning.provider_html", name: @provider.display_name)
+ )
+ end %>
+ <% dialog.with_additional_details do %>
+
+ - <%= I18n.t("provider.delete_warning.delete_result_1") %>
+ - <%= I18n.t("provider.delete_warning.delete_result_user_count", count: @provider.user_count) %>
+ <% if direct_login? %>
+ - <%= I18n.t("provider.delete_warning.delete_result_direct") %>
+ <% end %>
+
+ <% end %>
+ <% dialog.with_confirmation_check_box_content(I18n.t(:text_permanent_delete_confirmation_checkbox_label)) %>
+<% end %>
diff --git a/modules/openid_connect/app/components/openid_connect/providers/confirm_destroy_dialog_component.rb b/modules/openid_connect/app/components/openid_connect/providers/confirm_destroy_dialog_component.rb
new file mode 100644
index 00000000000..5680e8684a4
--- /dev/null
+++ b/modules/openid_connect/app/components/openid_connect/providers/confirm_destroy_dialog_component.rb
@@ -0,0 +1,53 @@
+# frozen_string_literal: true
+
+#-- copyright
+# OpenProject is an open source project management software.
+# Copyright (C) the OpenProject GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License version 3.
+#
+# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
+# Copyright (C) 2006-2013 Jean-Philippe Lang
+# Copyright (C) 2010-2013 the ChiliProject Team
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# See COPYRIGHT and LICENSE files for more details.
+#++
+
+module OpenIDConnect
+ module Providers
+ class ConfirmDestroyDialogComponent < ApplicationComponent
+ include OpTurbo::Streamable
+
+ def initialize(provider:)
+ super
+ @provider = provider
+ end
+
+ def form_arguments
+ {
+ action: openid_connect_provider_path(@provider),
+ method: :delete
+ }
+ end
+
+ def direct_login?
+ Setting.omniauth_direct_login_provider == @provider.slug
+ end
+ end
+ end
+end
diff --git a/modules/openid_connect/app/controllers/openid_connect/providers_controller.rb b/modules/openid_connect/app/controllers/openid_connect/providers_controller.rb
index 0ea50c86405..ef8f31e9fc1 100644
--- a/modules/openid_connect/app/controllers/openid_connect/providers_controller.rb
+++ b/modules/openid_connect/app/controllers/openid_connect/providers_controller.rb
@@ -104,7 +104,9 @@ module OpenIDConnect
end
end
- def confirm_destroy; end
+ def confirm_destroy
+ respond_with_dialog OpenIDConnect::Providers::ConfirmDestroyDialogComponent.new(provider: @provider)
+ end
def destroy
if @provider.destroy
diff --git a/modules/openid_connect/app/views/openid_connect/providers/confirm_destroy.html.erb b/modules/openid_connect/app/views/openid_connect/providers/confirm_destroy.html.erb
deleted file mode 100644
index a5457d66dba..00000000000
--- a/modules/openid_connect/app/views/openid_connect/providers/confirm_destroy.html.erb
+++ /dev/null
@@ -1,70 +0,0 @@
-<%# -- copyright
-OpenProject is an open source project management software.
-Copyright (C) the OpenProject GmbH
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License version 3.
-
-OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
-Copyright (C) 2006-2013 Jean-Philippe Lang
-Copyright (C) 2010-2013 the ChiliProject Team
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-See COPYRIGHT and LICENSE files for more details.
-
-++# %>
-<%= styled_form_tag(
- openid_connect_provider_path(@provider),
- class: "danger-zone",
- method: :delete
- ) do %>
-
-<% end %>
diff --git a/modules/openid_connect/app/views/openid_connect/providers/show.html.erb b/modules/openid_connect/app/views/openid_connect/providers/show.html.erb
index 8fecba61ba7..269bade8a09 100644
--- a/modules/openid_connect/app/views/openid_connect/providers/show.html.erb
+++ b/modules/openid_connect/app/views/openid_connect/providers/show.html.erb
@@ -19,7 +19,8 @@
size: :medium,
href: confirm_destroy_openid_connect_provider_path(@provider),
aria: { label: I18n.t(:button_delete) },
- title: I18n.t(:button_delete)
+ title: I18n.t(:button_delete),
+ data: { turbo_stream: true }
) do |button|
button.with_leading_visual_icon(icon: :trash)
t(:button_delete)
diff --git a/modules/openid_connect/config/locales/crowdin/af.yml b/modules/openid_connect/config/locales/crowdin/af.yml
index d4e3bcce22e..25d38b0d29a 100644
--- a/modules/openid_connect/config/locales/crowdin/af.yml
+++ b/modules/openid_connect/config/locales/crowdin/af.yml
@@ -53,7 +53,7 @@ af:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ af:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/ar.yml b/modules/openid_connect/config/locales/crowdin/ar.yml
index b65930f8fa6..cc795572cb9 100644
--- a/modules/openid_connect/config/locales/crowdin/ar.yml
+++ b/modules/openid_connect/config/locales/crowdin/ar.yml
@@ -53,7 +53,7 @@ ar:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ ar:
openid_connect:
menu_title: مزودو OpenID
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/az.yml b/modules/openid_connect/config/locales/crowdin/az.yml
index ce3ccf4e855..ea3b7f726dd 100644
--- a/modules/openid_connect/config/locales/crowdin/az.yml
+++ b/modules/openid_connect/config/locales/crowdin/az.yml
@@ -53,7 +53,7 @@ az:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ az:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/be.yml b/modules/openid_connect/config/locales/crowdin/be.yml
index b4cc7220c3f..3ef556d63c7 100644
--- a/modules/openid_connect/config/locales/crowdin/be.yml
+++ b/modules/openid_connect/config/locales/crowdin/be.yml
@@ -53,7 +53,7 @@ be:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ be:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/bg.yml b/modules/openid_connect/config/locales/crowdin/bg.yml
index adb4088a6fd..832e04b914e 100644
--- a/modules/openid_connect/config/locales/crowdin/bg.yml
+++ b/modules/openid_connect/config/locales/crowdin/bg.yml
@@ -53,7 +53,7 @@ bg:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ bg:
openid_connect:
menu_title: OpenID доставчици
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/ca.yml b/modules/openid_connect/config/locales/crowdin/ca.yml
index 6bbdd0c9c58..7d8120d83a6 100644
--- a/modules/openid_connect/config/locales/crowdin/ca.yml
+++ b/modules/openid_connect/config/locales/crowdin/ca.yml
@@ -53,7 +53,7 @@ ca:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ ca:
openid_connect:
menu_title: Proveïdor d’OpenID
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/ckb-IR.yml b/modules/openid_connect/config/locales/crowdin/ckb-IR.yml
index 2762dbe3951..564cd764df5 100644
--- a/modules/openid_connect/config/locales/crowdin/ckb-IR.yml
+++ b/modules/openid_connect/config/locales/crowdin/ckb-IR.yml
@@ -53,7 +53,7 @@ ckb-IR:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ ckb-IR:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/cs.yml b/modules/openid_connect/config/locales/crowdin/cs.yml
index 2f6f0bc34f7..41af368eb87 100644
--- a/modules/openid_connect/config/locales/crowdin/cs.yml
+++ b/modules/openid_connect/config/locales/crowdin/cs.yml
@@ -53,7 +53,7 @@ cs:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Odstranění poskytovatele SSO je nevratná akce.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Odstranit poskytovatele ze seznamu dostupných poskytovatelů.
delete_result_user_count:
zero: Tohoto poskytovatele v současné době nepoužívají žádní uživatelé. Není třeba podnikat žádné další kroky.
@@ -63,6 +63,7 @@ cs:
openid_connect:
menu_title: Poskytovatelé OpenID
delete_title: Odstranit OpenID Connect poskytovatele
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/da.yml b/modules/openid_connect/config/locales/crowdin/da.yml
index c807f7d1f81..86468e4af68 100644
--- a/modules/openid_connect/config/locales/crowdin/da.yml
+++ b/modules/openid_connect/config/locales/crowdin/da.yml
@@ -53,7 +53,7 @@ da:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ da:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/de.yml b/modules/openid_connect/config/locales/crowdin/de.yml
index b4678671c76..07545bc3ab9 100644
--- a/modules/openid_connect/config/locales/crowdin/de.yml
+++ b/modules/openid_connect/config/locales/crowdin/de.yml
@@ -53,7 +53,7 @@ de:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Das Löschen eines SSO-Anbieters ist eine unwiderrufliche Aktion.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Entfernt diese SSO-Anmeldemöglichkeit aus der Liste der verfügbaren Anbieter.
delete_result_user_count:
zero: Derzeit verwenden keine Benutzer diesen SSO-Anbieter. Es sind keine weiteren Maßnahmen erforderlich.
@@ -63,6 +63,7 @@ de:
openid_connect:
menu_title: OpenID-Anbieter
delete_title: OpenID Connect Anbieter löschen
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect Gruppenverknüpfungen
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/el.yml b/modules/openid_connect/config/locales/crowdin/el.yml
index 807b522d397..e7de0054304 100644
--- a/modules/openid_connect/config/locales/crowdin/el.yml
+++ b/modules/openid_connect/config/locales/crowdin/el.yml
@@ -53,7 +53,7 @@ el:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ el:
openid_connect:
menu_title: Πάροχοι OpenID
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/eo.yml b/modules/openid_connect/config/locales/crowdin/eo.yml
index 10c6c2579cc..4f1d8b6be70 100644
--- a/modules/openid_connect/config/locales/crowdin/eo.yml
+++ b/modules/openid_connect/config/locales/crowdin/eo.yml
@@ -53,7 +53,7 @@ eo:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ eo:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/es.yml b/modules/openid_connect/config/locales/crowdin/es.yml
index b25e97de47e..f8bf51d8db5 100644
--- a/modules/openid_connect/config/locales/crowdin/es.yml
+++ b/modules/openid_connect/config/locales/crowdin/es.yml
@@ -51,9 +51,9 @@ es:
non_object_attribute: no define un objeto JSON en %{attribute}.
provider:
delete_warning:
- input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
+ input_delete_confirmation_html: Escribe el nombre del proveedor %{name} para confirmar la eliminación.
irreversible_notice: La eliminación de un proveedor SSO es una acción irreversible.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: "¿Estás seguro de que quieres eliminar el proveedor de SSO %{name}? Ten en cuenta que esto provocará que:"
delete_result_1: Elimine al proveedor de la lista de proveedores disponibles.
delete_result_user_count:
zero: Ningún usuario utiliza actualmente este proveedor. No se requiere ninguna acción adicional.
@@ -63,6 +63,7 @@ es:
openid_connect:
menu_title: Proveedores de OpenID
delete_title: Eliminar el proveedor OpenID Connect
+ delete_heading: "¿Borrar este proveedor de OpenID Connect?"
group_links_heading: Enlaces de grupo de OpenID Connect
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/et.yml b/modules/openid_connect/config/locales/crowdin/et.yml
index abb7f3cab60..f53bf9d428d 100644
--- a/modules/openid_connect/config/locales/crowdin/et.yml
+++ b/modules/openid_connect/config/locales/crowdin/et.yml
@@ -53,7 +53,7 @@ et:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ et:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/eu.yml b/modules/openid_connect/config/locales/crowdin/eu.yml
index 657906dd0e0..4343451d4b7 100644
--- a/modules/openid_connect/config/locales/crowdin/eu.yml
+++ b/modules/openid_connect/config/locales/crowdin/eu.yml
@@ -53,7 +53,7 @@ eu:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ eu:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/fa.yml b/modules/openid_connect/config/locales/crowdin/fa.yml
index 0f3b44aad99..7de36c21ece 100644
--- a/modules/openid_connect/config/locales/crowdin/fa.yml
+++ b/modules/openid_connect/config/locales/crowdin/fa.yml
@@ -53,7 +53,7 @@ fa:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ fa:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/fi.yml b/modules/openid_connect/config/locales/crowdin/fi.yml
index 6f8ac48d679..ac58f5c48fb 100644
--- a/modules/openid_connect/config/locales/crowdin/fi.yml
+++ b/modules/openid_connect/config/locales/crowdin/fi.yml
@@ -53,7 +53,7 @@ fi:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ fi:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/fil.yml b/modules/openid_connect/config/locales/crowdin/fil.yml
index d7df614869b..ac4b78059aa 100644
--- a/modules/openid_connect/config/locales/crowdin/fil.yml
+++ b/modules/openid_connect/config/locales/crowdin/fil.yml
@@ -53,7 +53,7 @@ fil:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ fil:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/fr.yml b/modules/openid_connect/config/locales/crowdin/fr.yml
index 62deaf07121..37ee0eef8f2 100644
--- a/modules/openid_connect/config/locales/crowdin/fr.yml
+++ b/modules/openid_connect/config/locales/crowdin/fr.yml
@@ -53,7 +53,7 @@ fr:
delete_warning:
input_delete_confirmation_html: Saisissez le nom du fournisseur %{name} pour confirmer la suppression.
irreversible_notice: La suppression d'un fournisseur SSO est une action irréversible.
- provider_html: 'Voulez-vous vraiment supprimer le fournisseur SSO %{name} ? Pour confirmer cette action, veuillez saisir le nom du fournisseur dans le champ ci-dessous :'
+ provider_html: 'Êtes-vous sûr de vouloir supprimer le fournisseur SSO %{name} ? Sachez que cela aura pour effet de :'
delete_result_1: Supprimez le fournisseur de la liste des fournisseurs disponibles.
delete_result_user_count:
zero: Aucun utilisateur n'utilise actuellement ce fournisseur. Aucune action supplémentaire n'est requise.
@@ -63,6 +63,7 @@ fr:
openid_connect:
menu_title: Fournisseurs OpenID
delete_title: Supprimer le fournisseur OpenID Connect
+ delete_heading: Supprimer ce fournisseur OpenID Connect ?
group_links_heading: Liens du groupe OpenID Connect
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/he.yml b/modules/openid_connect/config/locales/crowdin/he.yml
index 6b7dd70b89c..04ffb8cf9ed 100644
--- a/modules/openid_connect/config/locales/crowdin/he.yml
+++ b/modules/openid_connect/config/locales/crowdin/he.yml
@@ -53,7 +53,7 @@ he:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ he:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/hi.yml b/modules/openid_connect/config/locales/crowdin/hi.yml
index 172fbf6b8b3..6fe8ce6b94d 100644
--- a/modules/openid_connect/config/locales/crowdin/hi.yml
+++ b/modules/openid_connect/config/locales/crowdin/hi.yml
@@ -53,7 +53,7 @@ hi:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ hi:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/hr.yml b/modules/openid_connect/config/locales/crowdin/hr.yml
index f622b7d430b..2b136a90031 100644
--- a/modules/openid_connect/config/locales/crowdin/hr.yml
+++ b/modules/openid_connect/config/locales/crowdin/hr.yml
@@ -53,7 +53,7 @@ hr:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ hr:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/hu.yml b/modules/openid_connect/config/locales/crowdin/hu.yml
index e39fc8ec0b7..41649ef1412 100644
--- a/modules/openid_connect/config/locales/crowdin/hu.yml
+++ b/modules/openid_connect/config/locales/crowdin/hu.yml
@@ -53,7 +53,7 @@ hu:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ hu:
openid_connect:
menu_title: OpenID szolgáltató
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/id.yml b/modules/openid_connect/config/locales/crowdin/id.yml
index 700f58034a7..082c7693f1a 100644
--- a/modules/openid_connect/config/locales/crowdin/id.yml
+++ b/modules/openid_connect/config/locales/crowdin/id.yml
@@ -53,7 +53,7 @@ id:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Menghapus penyedia SSO adalah tindakan yang tidak dapat dibatalkan.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ id:
openid_connect:
menu_title: penyedia OpenID
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/it.yml b/modules/openid_connect/config/locales/crowdin/it.yml
index 85b00663fb6..0e5d4b9a6e9 100644
--- a/modules/openid_connect/config/locales/crowdin/it.yml
+++ b/modules/openid_connect/config/locales/crowdin/it.yml
@@ -51,9 +51,9 @@ it:
non_object_attribute: non definisce un oggetto JSON in %{attribute}.
provider:
delete_warning:
- input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
+ input_delete_confirmation_html: Inserisci il nome del fornitore %{name} per confermare l'eliminazione.
irreversible_notice: L'eliminazione di un fornitore SSO è un'operazione irreversibile.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Vuoi davvero eliminare il provider SSO %{name}? Tieni presente che questo comporterà:'
delete_result_1: Rimuovi il fornitore dall'elenco dei fornitori disponibili.
delete_result_user_count:
zero: Nessun utente sta attualmente utilizzando questo fornitore. Non sono necessarie ulteriori azioni.
@@ -63,6 +63,7 @@ it:
openid_connect:
menu_title: OpenID provider
delete_title: Elimina fornitore OpenID Connect
+ delete_heading: Eliminare questo provider OpenID Connect?
group_links_heading: Link di gruppo OpenID Connect
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/ja.yml b/modules/openid_connect/config/locales/crowdin/ja.yml
index 039e1f31ddf..4665d558966 100644
--- a/modules/openid_connect/config/locales/crowdin/ja.yml
+++ b/modules/openid_connect/config/locales/crowdin/ja.yml
@@ -53,7 +53,7 @@ ja:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: ワークパッケージの削除は復元できない操作です。
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: 利用可能なプロバイダのリストからプロバイダを削除します。
delete_result_user_count:
zero: 現在、このプロバイダを使用しているユーザーはいません。これ以上の操作は必要ありません。
@@ -63,6 +63,7 @@ ja:
openid_connect:
menu_title: OpenID プロバイダー
delete_title: OpenID Connectプロバイダの削除
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connectグループリンク
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/ka.yml b/modules/openid_connect/config/locales/crowdin/ka.yml
index b09f3c68f7a..19803ef2cfe 100644
--- a/modules/openid_connect/config/locales/crowdin/ka.yml
+++ b/modules/openid_connect/config/locales/crowdin/ka.yml
@@ -53,7 +53,7 @@ ka:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ ka:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/kk.yml b/modules/openid_connect/config/locales/crowdin/kk.yml
index 311e264e046..646c61f097a 100644
--- a/modules/openid_connect/config/locales/crowdin/kk.yml
+++ b/modules/openid_connect/config/locales/crowdin/kk.yml
@@ -53,7 +53,7 @@ kk:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ kk:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/ko.yml b/modules/openid_connect/config/locales/crowdin/ko.yml
index 1ecdfee54f3..f6c761303f8 100644
--- a/modules/openid_connect/config/locales/crowdin/ko.yml
+++ b/modules/openid_connect/config/locales/crowdin/ko.yml
@@ -53,7 +53,7 @@ ko:
delete_warning:
input_delete_confirmation_html: 삭제를 확인하려면 공급자 이름 %{name}(을)를 입력하세요.
irreversible_notice: SSO 공급자를 삭제하면 되돌릴 수 없습니다.
- provider_html: SSO 공급자 %{name}을(를) 삭제하시겠습니까? 이 액션을 확인하려면 아래 필드에 공급자 이름을 입력하세요. 이렇게 하면 다음과 같이 됩니다.
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: 사용 가능한 공급자 목록에서 공급자를 제거합니다.
delete_result_user_count:
zero: 현재 이 공급자를 사용하는 사용자가 없습니다. 추가 조치가 필요하지 않습니다.
@@ -63,6 +63,7 @@ ko:
openid_connect:
menu_title: OpenID 공급자
delete_title: OpenID Connect 공급자 삭제
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect 그룹 링크
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/lt.yml b/modules/openid_connect/config/locales/crowdin/lt.yml
index be028c177b2..eb74aaf7195 100644
--- a/modules/openid_connect/config/locales/crowdin/lt.yml
+++ b/modules/openid_connect/config/locales/crowdin/lt.yml
@@ -53,7 +53,7 @@ lt:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ lt:
openid_connect:
menu_title: OpenID tiekėjai
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/lv.yml b/modules/openid_connect/config/locales/crowdin/lv.yml
index e988cc54605..fa45ef19f72 100644
--- a/modules/openid_connect/config/locales/crowdin/lv.yml
+++ b/modules/openid_connect/config/locales/crowdin/lv.yml
@@ -53,7 +53,7 @@ lv:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ lv:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/mn.yml b/modules/openid_connect/config/locales/crowdin/mn.yml
index 6024daca7bf..075bd093c23 100644
--- a/modules/openid_connect/config/locales/crowdin/mn.yml
+++ b/modules/openid_connect/config/locales/crowdin/mn.yml
@@ -53,7 +53,7 @@ mn:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ mn:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/ms.yml b/modules/openid_connect/config/locales/crowdin/ms.yml
index f0026c2ac27..59b28140a73 100644
--- a/modules/openid_connect/config/locales/crowdin/ms.yml
+++ b/modules/openid_connect/config/locales/crowdin/ms.yml
@@ -53,7 +53,7 @@ ms:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Memadamkan pembekal SSO ialah tindakan yang tidak boleh diubah.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Alih keluar pembekal daripada senarai pembekal yang tersedia.
delete_result_user_count:
zero: Tiada pengguna yang menggunakan penyedia ini pada masa ini. Tiada tindakan lanjut diperlukan.
@@ -63,6 +63,7 @@ ms:
openid_connect:
menu_title: Penyedia OpenID
delete_title: Padam pembekal OpenID Connect
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/ne.yml b/modules/openid_connect/config/locales/crowdin/ne.yml
index 51b271fd306..afafa10984c 100644
--- a/modules/openid_connect/config/locales/crowdin/ne.yml
+++ b/modules/openid_connect/config/locales/crowdin/ne.yml
@@ -53,7 +53,7 @@ ne:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ ne:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/nl.yml b/modules/openid_connect/config/locales/crowdin/nl.yml
index e02c709d3e2..f7581463c98 100644
--- a/modules/openid_connect/config/locales/crowdin/nl.yml
+++ b/modules/openid_connect/config/locales/crowdin/nl.yml
@@ -53,7 +53,7 @@ nl:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Het verwijderen van een SSO provider is een onomkeerbare actie.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Verwijder de provider uit de lijst met beschikbare providers.
delete_result_user_count:
zero: Er zijn momenteel geen gebruikers die deze provider gebruiken. Er is geen verdere actie vereist.
@@ -63,6 +63,7 @@ nl:
openid_connect:
menu_title: OpenID aanbieders
delete_title: OpenID Connect provider verwijderen
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/no.yml b/modules/openid_connect/config/locales/crowdin/no.yml
index 677c1fc00fe..7c2e98cb3ff 100644
--- a/modules/openid_connect/config/locales/crowdin/no.yml
+++ b/modules/openid_connect/config/locales/crowdin/no.yml
@@ -53,7 +53,7 @@
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@
openid_connect:
menu_title: OpenID-leverandører
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/pl.yml b/modules/openid_connect/config/locales/crowdin/pl.yml
index 609dcaa7fb3..990fa5454c9 100644
--- a/modules/openid_connect/config/locales/crowdin/pl.yml
+++ b/modules/openid_connect/config/locales/crowdin/pl.yml
@@ -53,7 +53,7 @@ pl:
delete_warning:
input_delete_confirmation_html: Wprowadź nazwę dostawcy %{name}, aby potwierdzić usunięcie.
irreversible_notice: Usunięcie dostawcy SSO jest działaniem nieodwracalnym.
- provider_html: 'Czy na pewno chcesz usunąć dostawcę SSO %{name}? Aby potwierdzić to działanie, wprowadź nazwę dostawcy w polu poniżej, spowoduje to:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Usunięcie dostawcy z listy dostępnych dostawców.
delete_result_user_count:
zero: Żaden użytkownik nie korzysta obecnie z tego dostawcy. Nie są wymagane żadne dalsze działania.
@@ -63,6 +63,7 @@ pl:
openid_connect:
menu_title: Dostawcy OpenID
delete_title: Usuń dostawcę OpenID Connect
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: Linki do grup OpenID Connect
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/pt-BR.yml b/modules/openid_connect/config/locales/crowdin/pt-BR.yml
index f6c1a97bfee..0b7cf14f595 100644
--- a/modules/openid_connect/config/locales/crowdin/pt-BR.yml
+++ b/modules/openid_connect/config/locales/crowdin/pt-BR.yml
@@ -53,7 +53,7 @@ pt-BR:
delete_warning:
input_delete_confirmation_html: Digite o nome do provedor %{name} para confirmar a exclusão.
irreversible_notice: Excluir um provedor SSO é uma ação irreversível.
- provider_html: 'Tem certeza de que deseja excluir o provedor SSO %{name}? Para confirmar esta ação, digite o nome do provedor no campo abaixo; isso irá:'
+ provider_html: 'Tem certeza de que deseja excluir o provedor de SSO %{name}? Esteja ciente de que isso irá:'
delete_result_1: Remover o provedor da lista de provedores disponíveis.
delete_result_user_count:
zero: Nenhum usuário está utilizando este provedor no momento. Não é necessária nenhuma ação adicional.
@@ -63,6 +63,7 @@ pt-BR:
openid_connect:
menu_title: Provedores OpenID
delete_title: Excluir o provedor OpenID Connect
+ delete_heading: Deseja excluir este provedor do OpenID Connect?
group_links_heading: Links de grupos OpenID Connect
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/pt-PT.yml b/modules/openid_connect/config/locales/crowdin/pt-PT.yml
index 66b42381a90..89f9dae7ebb 100644
--- a/modules/openid_connect/config/locales/crowdin/pt-PT.yml
+++ b/modules/openid_connect/config/locales/crowdin/pt-PT.yml
@@ -53,7 +53,7 @@ pt-PT:
delete_warning:
input_delete_confirmation_html: Insira o nome do fornecedor %{name} para confirmar a eliminação.
irreversible_notice: A eliminação de um fornecedor SSO é uma ação irreversível.
- provider_html: 'Tem a certeza de que pretende eliminar o fornecedor SSO %{name}? Para confirmar esta ação, introduza o nome do fornecedor no campo abaixo, isto irá:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remova o fornecedor da lista de fornecedores disponíveis.
delete_result_user_count:
zero: Nenhum utilizador está atualmente a utilizar este fornecedor. Não é necessária mais nenhuma ação.
@@ -63,6 +63,7 @@ pt-PT:
openid_connect:
menu_title: Fornecedores de OpenID
delete_title: Eliminar o fornecedor OpenID Connect
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: Ligações de grupos OpenID Connect
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/ro.yml b/modules/openid_connect/config/locales/crowdin/ro.yml
index 50dfeb24087..27b18cbb562 100644
--- a/modules/openid_connect/config/locales/crowdin/ro.yml
+++ b/modules/openid_connect/config/locales/crowdin/ro.yml
@@ -53,7 +53,7 @@ ro:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ ro:
openid_connect:
menu_title: Furnizori OpenID
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/ru.yml b/modules/openid_connect/config/locales/crowdin/ru.yml
index ada2d530ba8..6eaa823cd12 100644
--- a/modules/openid_connect/config/locales/crowdin/ru.yml
+++ b/modules/openid_connect/config/locales/crowdin/ru.yml
@@ -53,7 +53,7 @@ ru:
delete_warning:
input_delete_confirmation_html: Введите имя провайдера %{name} для подтверждения удаления.
irreversible_notice: Удаление SSO провайдера является необратимым действием.
- provider_html: 'Вы уверены, что хотите удалить провайдера SSO %{name}? Чтобы подтвердить это действие, пожалуйста, введите имя провайдера в поле ниже, это позволит:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Удалить провайдера из списка доступных провайдеров.
delete_result_user_count:
zero: Нет пользователей в настоящее время с этим провайдером. Никаких дальнейших действий не требуется.
@@ -63,6 +63,7 @@ ru:
openid_connect:
menu_title: Провайдеры OpenID
delete_title: Удалить провайдера OpenID Connect
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: Ссылки на группу OpenID Connect
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/rw.yml b/modules/openid_connect/config/locales/crowdin/rw.yml
index 1933ac50064..87b7eac2afa 100644
--- a/modules/openid_connect/config/locales/crowdin/rw.yml
+++ b/modules/openid_connect/config/locales/crowdin/rw.yml
@@ -53,7 +53,7 @@ rw:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ rw:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/si.yml b/modules/openid_connect/config/locales/crowdin/si.yml
index 18fd8f9c3a3..28c577255b7 100644
--- a/modules/openid_connect/config/locales/crowdin/si.yml
+++ b/modules/openid_connect/config/locales/crowdin/si.yml
@@ -53,7 +53,7 @@ si:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ si:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/sk.yml b/modules/openid_connect/config/locales/crowdin/sk.yml
index a5099b150a4..ce7ee59a654 100644
--- a/modules/openid_connect/config/locales/crowdin/sk.yml
+++ b/modules/openid_connect/config/locales/crowdin/sk.yml
@@ -53,7 +53,7 @@ sk:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ sk:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/sl.yml b/modules/openid_connect/config/locales/crowdin/sl.yml
index a1a0f26e44b..010e276a2cf 100644
--- a/modules/openid_connect/config/locales/crowdin/sl.yml
+++ b/modules/openid_connect/config/locales/crowdin/sl.yml
@@ -53,7 +53,7 @@ sl:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ sl:
openid_connect:
menu_title: OpenID ponudniki
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/sr.yml b/modules/openid_connect/config/locales/crowdin/sr.yml
index 1b9d1707dad..80357cf46bb 100644
--- a/modules/openid_connect/config/locales/crowdin/sr.yml
+++ b/modules/openid_connect/config/locales/crowdin/sr.yml
@@ -53,7 +53,7 @@ sr:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ sr:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/sv.yml b/modules/openid_connect/config/locales/crowdin/sv.yml
index aa3b6ce0808..3ae2c3a84d4 100644
--- a/modules/openid_connect/config/locales/crowdin/sv.yml
+++ b/modules/openid_connect/config/locales/crowdin/sv.yml
@@ -53,7 +53,7 @@ sv:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ sv:
openid_connect:
menu_title: OpenID leverantörer
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/th.yml b/modules/openid_connect/config/locales/crowdin/th.yml
index 1f228e883d4..bcfb4fdeae4 100644
--- a/modules/openid_connect/config/locales/crowdin/th.yml
+++ b/modules/openid_connect/config/locales/crowdin/th.yml
@@ -53,7 +53,7 @@ th:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ th:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/tr.yml b/modules/openid_connect/config/locales/crowdin/tr.yml
index c49ffa443b8..f977598fa58 100644
--- a/modules/openid_connect/config/locales/crowdin/tr.yml
+++ b/modules/openid_connect/config/locales/crowdin/tr.yml
@@ -53,7 +53,7 @@ tr:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: SSO sağlayıcısını silme geri alınamaz bir işlemdir.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Sağlayıcının adını mevcut sağlayıcılardan kaldır.
delete_result_user_count:
zero: Bu sağlayıcıyı hiçbir kullanıcı kullanmıyor. Ek bir işleme gerek yok.
@@ -63,6 +63,7 @@ tr:
openid_connect:
menu_title: OpenID sağlayıcıları
delete_title: OpenID Connect sağlayıcısını sil
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect grup bağlantıları
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/uk.yml b/modules/openid_connect/config/locales/crowdin/uk.yml
index 8cc73117dcf..d5c9d94e028 100644
--- a/modules/openid_connect/config/locales/crowdin/uk.yml
+++ b/modules/openid_connect/config/locales/crowdin/uk.yml
@@ -53,7 +53,7 @@ uk:
delete_warning:
input_delete_confirmation_html: Введіть ім’я постачальника послуг %{name}, щоб підтвердити видалення.
irreversible_notice: Видалення постачальника послуг SSO не можна скасувати.
- provider_html: 'Справді видалити постачальника послуг SSO %{name}? Щоб підтвердити цю дію, введіть ім’я постачальника в поле нижче. Після цього:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Вилучіть постачальника послуг зі списку доступних постачальників.
delete_result_user_count:
zero: Зараз у цього постачальника послуг немає користувачів. Нічого робити не потрібно.
@@ -63,6 +63,7 @@ uk:
openid_connect:
menu_title: Постачальники OpenID
delete_title: Видалити постачальника послуг OpenID Connect
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: Посилання на групи OpenID Connect
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/uz.yml b/modules/openid_connect/config/locales/crowdin/uz.yml
index f4244e4c6fe..b0959a2f092 100644
--- a/modules/openid_connect/config/locales/crowdin/uz.yml
+++ b/modules/openid_connect/config/locales/crowdin/uz.yml
@@ -53,7 +53,7 @@ uz:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -63,6 +63,7 @@ uz:
openid_connect:
menu_title: OpenID providers
delete_title: Delete OpenID Connect provider
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/vi.yml b/modules/openid_connect/config/locales/crowdin/vi.yml
index 04db3722ad9..fd8a2415c05 100644
--- a/modules/openid_connect/config/locales/crowdin/vi.yml
+++ b/modules/openid_connect/config/locales/crowdin/vi.yml
@@ -53,7 +53,7 @@ vi:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Xóa nhà cung cấp SSO là hành động không thể thay đổi được.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Xóa nhà cung cấp khỏi danh sách các nhà cung cấp có sẵn.
delete_result_user_count:
zero: Không có người dùng hiện đang sử dụng nhà cung cấp này. Không cần thực hiện thêm hành động nào.
@@ -63,6 +63,7 @@ vi:
openid_connect:
menu_title: Nhà cung cấp OpenID
delete_title: Xóa nhà cung cấp OpenID Connect
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: Liên kết nhóm OpenID Connect
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/zh-CN.yml b/modules/openid_connect/config/locales/crowdin/zh-CN.yml
index a0271b10e05..54e8e7e34e8 100644
--- a/modules/openid_connect/config/locales/crowdin/zh-CN.yml
+++ b/modules/openid_connect/config/locales/crowdin/zh-CN.yml
@@ -51,9 +51,9 @@ zh-CN:
non_object_attribute: 未在 %{attribute} 中定义 JSON 对象。
provider:
delete_warning:
- input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
+ input_delete_confirmation_html: 输入提供程序名称 %{name} 以确认删除。
irreversible_notice: 删除项目是一个不可逆转的操作。
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 确定要删除 SSO 提供程序 %{name} 吗?请注意,此操作将:
delete_result_1: 从可用的提供商列表中删除提供商。
delete_result_user_count:
zero: 目前没有用户正在使用此提供商。无需采取进一步操作。
@@ -63,6 +63,7 @@ zh-CN:
openid_connect:
menu_title: OpenID 提供商
delete_title: 删除 OpenID Connect 提供商
+ delete_heading: 删除此 OpenID Connect 提供程序?
group_links_heading: OpenID Connect 群组链接
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/crowdin/zh-TW.yml b/modules/openid_connect/config/locales/crowdin/zh-TW.yml
index 887872300cb..20296d441d0 100644
--- a/modules/openid_connect/config/locales/crowdin/zh-TW.yml
+++ b/modules/openid_connect/config/locales/crowdin/zh-TW.yml
@@ -53,7 +53,7 @@ zh-TW:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: 刪除 SSO 提供者是不可逆轉的動作。
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: 從可用提供者清單中移除提供者。
delete_result_user_count:
zero: 目前沒有使用者使用此供應商。不需要採取進一步的行動。
@@ -63,6 +63,7 @@ zh-TW:
openid_connect:
menu_title: OpenID 提供商
delete_title: 刪除 OpenID Connect 提供者
+ delete_heading: Delete this OpenID Connect provider?
group_links_heading: OpenID Connect 群組連結
groups:
match_preview_component:
diff --git a/modules/openid_connect/config/locales/en.yml b/modules/openid_connect/config/locales/en.yml
index e8b0d23c425..5eb2a7c4798 100644
--- a/modules/openid_connect/config/locales/en.yml
+++ b/modules/openid_connect/config/locales/en.yml
@@ -53,7 +53,7 @@ en:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
- provider_html: 'Are you sure you want to delete the SSO provider %{name}? To confirm this action please enter the name of the provider in the field below, this will:'
+ provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
@@ -64,6 +64,7 @@ en:
openid_connect:
menu_title: OpenID providers
delete_title: "Delete OpenID Connect provider"
+ delete_heading: "Delete this OpenID Connect provider?"
group_links_heading: OpenID Connect group links
groups:
diff --git a/modules/openid_connect/spec/features/administration/oidc_custom_crud_spec.rb b/modules/openid_connect/spec/features/administration/oidc_custom_crud_spec.rb
index 27da0ec708c..af0e65994ec 100644
--- a/modules/openid_connect/spec/features/administration/oidc_custom_crud_spec.rb
+++ b/modules/openid_connect/spec/features/administration/oidc_custom_crud_spec.rb
@@ -34,7 +34,6 @@ require_module_spec_helper
RSpec.describe "OIDC administration CRUD",
:js do
shared_let(:user) { create(:admin) }
- let(:danger_zone) { DangerZone.new(page) }
before do
login_as(user)
@@ -130,20 +129,9 @@ RSpec.describe "OIDC administration CRUD",
expect(provider.group_regexes).to eq(["Foo", "Bar"])
click_link_or_button "Delete"
- # Confirm the deletion
- # Without confirmation, the button is disabled
- expect(danger_zone).to be_disabled
- # With wrong confirmation, the button is disabled
- danger_zone.confirm_with("foo")
-
- expect(danger_zone).to be_disabled
-
- # With correct confirmation, the button is enabled
- # and the project can be deleted
- danger_zone.confirm_with(provider.display_name)
- expect(danger_zone).not_to be_disabled
- danger_zone.danger_button.click
+ check "I understand that this deletion cannot be reversed"
+ click_on "Delete permanently"
expect(page).to have_text "No OpenID providers configured yet."
expect { provider.reload }.to raise_error ActiveRecord::RecordNotFound
diff --git a/modules/storages/config/locales/crowdin/es.yml b/modules/storages/config/locales/crowdin/es.yml
index b5cc1975e9b..bde2e8e8595 100644
--- a/modules/storages/config/locales/crowdin/es.yml
+++ b/modules/storages/config/locales/crowdin/es.yml
@@ -285,8 +285,8 @@ es:
drive_contents: Contenido de la unidad
files_request: Obteniendo archivos de carpetas de equipo
header: Carpetas de proyecto gestionadas automáticamente
- project_folders_exist: Project folders exist
- project_folders_linked: Project folders linked
+ project_folders_exist: Hay carpetas de proyectos
+ project_folders_linked: Carpetas de proyectos vinculadas
team_folder_app: 'Dependencia: Carpetas de equipo'
team_folder_contents: Contenido de la carpeta de equipo
team_folder_presence: La carpeta del equipo existe
@@ -330,10 +330,10 @@ es:
nc_oauth_request_not_found: No se ha encontrado el terminal para obtener el usuario actualmente conectado. Consulte los registros del servidor para obtener más información.
nc_oauth_request_unauthorized: El usuario actual no está autorizado a acceder al almacenamiento remoto de archivos. Consulte los registros del servidor para obtener más información.
nc_oauth_token_missing: OpenProject no puede probar la comunicación a nivel de usuario con Nextcloud, ya que el usuario aún no ha vinculado su cuenta de Nextcloud.
- nc_project_folder_missing: The previously created project folder for project "%{project}" could not be found.
+ nc_project_folder_missing: No se ha encontrado la carpeta del proyecto «%{project}» creada anteriormente.
nc_team_folder_not_found: No se ha podido encontrar la carpeta del equipo.
- nc_unexpected_files: 'Unexpected files found in the managed team folder. For example: %{sample}'
- nc_unlinked_project_folders: Not all project folders have been created yet (%{actual} / %{expected}). This can indicate errors during the AMPF background synchronization.
+ nc_unexpected_files: 'Se han encontrado archivos inesperados en la carpeta del equipo gestionado. Por ejemplo: %{sample}'
+ nc_unlinked_project_folders: Aún no se han creado todas las carpetas de proyecto (%{actual}/%{expected}). Esto puede indicar que se han producido errores durante la sincronización en segundo plano de AMPF.
nc_userless_access_denied: La contraseña configurada de la aplicación no es válida.
not_configured: No se ha podido validar la conexión. Por favor, termine primero la configuración.
od_client_cant_delete_folder: El cliente tiene problemas para eliminar carpetas. Consulte la documentación de configuración de su almacenamiento.
diff --git a/modules/storages/config/locales/crowdin/fr.yml b/modules/storages/config/locales/crowdin/fr.yml
index 14f819a38d9..49a8ef760a0 100644
--- a/modules/storages/config/locales/crowdin/fr.yml
+++ b/modules/storages/config/locales/crowdin/fr.yml
@@ -285,8 +285,8 @@ fr:
drive_contents: Contenu du lecteur
files_request: Récupération des fichiers du dossier de l'équipe
header: Dossiers de projets gérés automatiquement
- project_folders_exist: Project folders exist
- project_folders_linked: Project folders linked
+ project_folders_exist: Les dossiers de projet existent
+ project_folders_linked: Dossiers de projets liés
team_folder_app: 'Dépendance : dossiers d''équipe'
team_folder_contents: Contenu du dossier de l'équipe
team_folder_presence: Le dossier de l'équipe existe
@@ -401,7 +401,7 @@ fr:
host: Veuillez ajouter l'adresse d'hôte de votre stockage, y compris le https://. Il ne doit pas dépasser 255 caractères.
managed_project_folders_application_password_caption: 'Activez les dossiers gérés automatiquement en copiant cette valeur depuis : %{provider_type_link}.'
name: Donnez à votre espace de stockage un nom pour permettre aux utilisateurs de le différencier des autres espaces de stockage.
- new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information.
+ new_storage_html: Lisez notre documentation sur l'intégration de [configuration d'un espace de stockage de fichiers %{provider_name}](docs_url) pour en savoir plus.
nextcloud:
application_link_text: application « Intégration OpenProject»
integration: Administration Nextcloud / OpenProject
@@ -413,7 +413,7 @@ fr:
no_specific_folder: Par défaut, chaque utilisateur démarrera dans son propre dossier d'accueil lorsqu'il téléversera un fichier.
no_storage_set_up: Aucun espace de stockage de fichiers n'a été configuré pour le moment.
not_logged_into_storage: Pour sélectionner un dossier de projet, veuillez d'abord vous connecter
- oauth_application_details_html: 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).
+ oauth_application_details_html: La clé secrète du client ne sera plus accessible après la fermeture de cette fenêtre. Veuillez copier ces valeurs dans les [paramètres d'intégration Nextcloud OpenProject](oauth_application_details_link).
one_drive:
application_link_text: Portal Azure
copy_redirect_uri: Copier l'URI de redirection
diff --git a/modules/storages/config/locales/crowdin/it.yml b/modules/storages/config/locales/crowdin/it.yml
index 6058495434c..b4b9e6d5c5c 100644
--- a/modules/storages/config/locales/crowdin/it.yml
+++ b/modules/storages/config/locales/crowdin/it.yml
@@ -207,8 +207,8 @@ it:
admin:
side_panel:
health_notifications_component:
- sync_now: Sync now
- sync_queued: Synchronization queued.
+ sync_now: Sincronizza ora
+ sync_queued: Sincronizzazione in coda.
buttons:
done_continue: Fatto, continua
open_storage: Apri archivio file
@@ -229,11 +229,11 @@ it:
delete_warning:
project_storage_delete_result_1: Tutti i link ai file e alle cartelle corrispondenti saranno rimossi
project_storage_delete_result_2: La cartella di progetto gestita automaticamente e tutti i file in essa contenuti verranno eliminati
- project_storage_html: Are you sure you want to remove %{file_storage} from this project?
+ project_storage_html: Vuoi davvero rimuovere %{file_storage} dal progetto?
storage_delete_result_1: L'archivio verrà rimosso da tutti i progetti che lo stanno usando
storage_delete_result_2: Tutti i link ai file e alle cartelle corrispondenti saranno rimossi
storage_delete_result_3: La cartella di progetto gestita automaticamente e tutti i file in essa contenuti verranno eliminati
- storage_html: Are you sure you want to delete %{file_storage} as an external file storage?
+ storage_html: Vuoi davvero eliminare %{file_storage} come archivio file esterno?
dependencies:
nextcloud:
group_folders_app: Cartelle di team
@@ -285,8 +285,8 @@ it:
drive_contents: Contenuto dell'unità
files_request: Recupero dei file delle cartelle di team
header: Cartelle di progetto gestite automaticamente
- project_folders_exist: Project folders exist
- project_folders_linked: Project folders linked
+ project_folders_exist: Le cartelle del progetto esistono
+ project_folders_linked: Cartelle di progetto collegate
team_folder_app: 'Dipendenza: Cartelle di team'
team_folder_contents: Contenuto della cartella di team
team_folder_presence: La cartella di team esiste
@@ -330,10 +330,10 @@ it:
nc_oauth_request_not_found: L'endpoint per recuperare l'utente attualmente connesso non è stato trovato. Per ulteriori informazioni, consulta i log del server.
nc_oauth_request_unauthorized: L'utente attuale non è autorizzato ad accedere all'archivio file remoto. Per ulteriori informazioni, consulta i log del server.
nc_oauth_token_missing: OpenProject non può testare la comunicazione a livello utente con Nextcloud poiché l'utente non ha ancora collegato il proprio account Nextcloud.
- nc_project_folder_missing: The previously created project folder for project "%{project}" could not be found.
+ nc_project_folder_missing: La cartella di progetto creata in precedenza per il progetto "%{project}" non è stata trovata.
nc_team_folder_not_found: Impossibile trovare la cartella di team.
- nc_unexpected_files: 'Unexpected files found in the managed team folder. For example: %{sample}'
- nc_unlinked_project_folders: Not all project folders have been created yet (%{actual} / %{expected}). This can indicate errors during the AMPF background synchronization.
+ nc_unexpected_files: 'Sono stati trovati file imprevisti nella cartella del team gestita. Ad esempio: %{sample}'
+ nc_unlinked_project_folders: Non tutte le cartelle di progetto sono state ancora create (%{actual} / %{expected}). Questo può indicare errori durante la sincronizzazione in background di AMPF.
nc_userless_access_denied: La password dell'app configurata non è valida.
not_configured: Non è stato possibile verificare la connessione. Prima è necessario completare la configurazione.
od_client_cant_delete_folder: Il cliente riscontra problemi con l'eliminazione delle cartelle. Consulta la documentazione di configurazione del tuo archivio.
@@ -382,7 +382,7 @@ it:
failure: Alcuni controlli non sono riusciti e il sistema non funziona come previsto.
success: Tutte le connessioni e i sistemi funzionano come previsto.
warning: Alcuni controlli hanno restituito un avviso. Questo può causare comportamenti imprevisti.
- synced: 'Last sync: %{datetime}'
+ synced: 'Ultima sincronizzazione: %{datetime}'
title: Report sullo stato di salute
health_email_notifications:
description_disabled: Gli amministratori non riceveranno aggiornamenti via email quando ci sono aggiornamenti importanti.
@@ -401,7 +401,7 @@ it:
host: Aggiungi l'indirizzo host del tuo spazio di archiviazione incluso https://. Non dovrebbe essere più lungo di 255 caratteri.
managed_project_folders_application_password_caption: 'Abilita le cartelle gestite automaticamente copiando questo valore da: %{provider_type_link}.'
name: Dai al tuo archivio un nome in modo che gli utenti lo possano distinguere tra più archivi.
- new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information.
+ new_storage_html: Consulta la nostra documentazione su come [configurare un'integrazione di archiviazione file %{provider_name}](docs_url) per maggiori informazioni.
nextcloud:
application_link_text: applicazione "Integrazione OpenProject"
integration: Nextcloud Administration / OpenProject
@@ -413,7 +413,7 @@ it:
no_specific_folder: Di default, ogni utente inizierà alla propria cartella home, al caricamento di un file.
no_storage_set_up: Ancora nessuna archiviazione di file configurata.
not_logged_into_storage: Per selezionare la cartella di un progetto, sei prim pregato di accedere
- oauth_application_details_html: 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).
+ oauth_application_details_html: Il valore del client secret non sarà più accessibile dopo la chiusura di questa finestra. Copia questi valori nelle [impostazioni di integrazione OpenProject di Nextcloud](oauth_application_details_link).
one_drive:
application_link_text: portale Azure
copy_redirect_uri: Copia URI di reindirizzamento
@@ -521,7 +521,7 @@ it:
members_connection_status: Stato della connessione dei membri
new: Aggiungi un archivio file al progetto
project_storage_members:
- subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members.
+ subtitle_html: Controlla lo stato della connessione per lo spazio di archiviazione %{storage_name_link} di tutti i membri del progetto.
title: Stato della connessione dei membri
project_storages:
delete: Rimuovere l'archivio file dal progetto?
diff --git a/modules/storages/config/locales/crowdin/ko.yml b/modules/storages/config/locales/crowdin/ko.yml
index 473f2f2d146..5897fec8b85 100644
--- a/modules/storages/config/locales/crowdin/ko.yml
+++ b/modules/storages/config/locales/crowdin/ko.yml
@@ -207,8 +207,8 @@ ko:
admin:
side_panel:
health_notifications_component:
- sync_now: Sync now
- sync_queued: Synchronization queued.
+ sync_now: 지금 동기화
+ sync_queued: 동기화가 대기열에 있습니다.
buttons:
done_continue: 완료, 계속
open_storage: 파일 저장소 열기
@@ -229,11 +229,11 @@ ko:
delete_warning:
project_storage_delete_result_1: 해당 파일 및 폴더에 대한 모든 링크가 제거됩니다
project_storage_delete_result_2: 자동으로 관리되는 프로젝트 폴더 및 이 폴더 내 모든 파일이 삭제됩니다
- project_storage_html: Are you sure you want to remove %{file_storage} from this project?
+ project_storage_html: 이 프로젝트에서 %{file_storage}을(를) 제거하시겠습니까?
storage_delete_result_1: 저장소를 현재 사용 중인 모든 프로젝트에서 이 저장소가 제거됩니다
storage_delete_result_2: 해당 파일 및 폴더에 대한 모든 링크가 제거됩니다
storage_delete_result_3: 자동으로 관리되는 프로젝트 폴더 및 이 폴더 내 모든 파일이 삭제됩니다
- storage_html: Are you sure you want to delete %{file_storage} as an external file storage?
+ storage_html: 외부 파일 저장소로 사용 중인 %{file_storage}을(를) 삭제하시겠습니까?
dependencies:
nextcloud:
group_folders_app: 팀 폴더
@@ -285,8 +285,8 @@ ko:
drive_contents: 드라이브 콘텐츠
files_request: 팀 폴더 파일 가져오기
header: 자동으로 관리되는 프로젝트 폴더
- project_folders_exist: Project folders exist
- project_folders_linked: Project folders linked
+ project_folders_exist: 프로젝트 폴더가 존재합니다
+ project_folders_linked: 프로젝트 폴더가 링크되었습니다
team_folder_app: '종속성: 팀 폴더'
team_folder_contents: 팀 폴더 콘텐츠
team_folder_presence: 팀 폴더가 존재합니다
@@ -328,10 +328,10 @@ ko:
nc_oauth_request_not_found: 현재 연결된 사용자를 가져올 엔드포인트를 찾을 수 없습니다. 자세한 내용은 서버 로그를 확인하세요.
nc_oauth_request_unauthorized: 현재 사용자는 원격 파일 저장소에 액세스할 수 있는 권한이 없습니다. 자세한 내용은 서버 로그를 확인하세요.
nc_oauth_token_missing: 사용자가 아직 Nextcloud 계정을 링크하지 않았기 때문에 OpenProject가 Nextcloud와의 사용자 수준 통신을 테스트할 수 없습니다.
- nc_project_folder_missing: The previously created project folder for project "%{project}" could not be found.
+ nc_project_folder_missing: 프로젝트 "%{project}"의 이전에 생성된 프로젝트 폴더를 찾을 수 없습니다.
nc_team_folder_not_found: 팀 폴더를 찾을 수 없습니다.
- nc_unexpected_files: 'Unexpected files found in the managed team folder. For example: %{sample}'
- nc_unlinked_project_folders: Not all project folders have been created yet (%{actual} / %{expected}). This can indicate errors during the AMPF background synchronization.
+ nc_unexpected_files: '관리되는 팀 폴더에서 예기치 않은 파일이 발견되었습니다. 예: %{sample}'
+ nc_unlinked_project_folders: 일부 프로젝트 폴더가 아직 생성되지 않았습니다(%{actual}/%{expected}). 이는 AMPF 백그라운드 동기화 중에 발생한 오류를 나타낼 수 있습니다.
nc_userless_access_denied: 구성된 앱 암호가 잘못되었습니다.
not_configured: 연결에 대한 유효성 검사를 할 수 없습니다. 먼저 구성을 완료하세요.
od_client_cant_delete_folder: 클라이언트에서 폴더를 삭제하는 중에 문제가 발생했습니다. 저장소에 대한 설정 설명서를 확인하세요.
@@ -380,7 +380,7 @@ ko:
failure: 일부 검사가 실패하여 시스템이 예상대로 작동되지 않습니다.
success: 모든 연결과 시스템이 예상대로 작동 중입니다.
warning: 일부 검사에서 경고가 반환되었습니다. 이로 인해 예상치 못한 동작이 발생할 수 있습니다.
- synced: 'Last sync: %{datetime}'
+ synced: '마지막 동기화: %{datetime}'
title: 상태 보고서
health_email_notifications:
description_disabled: 중요 업데이트가 있을 때 관리자에게 이메일로 업데이트가 전송되지 않습니다.
@@ -399,7 +399,7 @@ ko:
host: https://를 포함하여 저장소의 호스트 주소를 추가하세요. 255자 이하여야 합니다.
managed_project_folders_application_password_caption: '다음에서 이 값을 복사하여 자동으로 관리되는 폴더 활성화: %{provider_type_link}.'
name: 사용자가 여러 저장소 간에 구별할 수 있도록 저장소에 이름을 지정하세요.
- new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information.
+ new_storage_html: 자세한 내용은 [%{provider_name} 파일 저장소 설정](docs_url) 통합 관련 문서를 참조하세요.
nextcloud:
application_link_text: 애플리케이션 “Integration OpenProject”
integration: Nextcloud 관리/OpenProject
@@ -411,7 +411,7 @@ ko:
no_specific_folder: 기본적으로 각 사용자는 파일을 업로드할 때 고유한 홈 폴더에서 시작합니다.
no_storage_set_up: 아직 파일 저장소가 설정되지 않았습니다.
not_logged_into_storage: 프로젝트 폴더를 선택하려면 먼저 로그인하세요
- oauth_application_details_html: 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).
+ oauth_application_details_html: 이 창을 닫으면 클라이언트 비밀번호 값에 다시 액세스할 수 없습니다. 해당 값을 [Nextcloud OpenProject 통합 설정](oauth_application_details_link)에 복사하세요.
one_drive:
application_link_text: Azure 포털
copy_redirect_uri: 리디렉션 URI 복사
@@ -517,7 +517,7 @@ ko:
members_connection_status: 멤버 연결 상태
new: 이 프로젝트에 파일 저장소 추가
project_storage_members:
- subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members.
+ subtitle_html: 모든 프로젝트 멤버의 저장소 %{storage_name_link}에 대한 연결 상태를 확인하세요.
title: 멤버 연결 상태
project_storages:
delete: 프로젝트에서 파일 저장소를 제거하시겠습니까?
diff --git a/modules/storages/config/locales/crowdin/pt-BR.yml b/modules/storages/config/locales/crowdin/pt-BR.yml
index 561896b14be..5b94b510e31 100644
--- a/modules/storages/config/locales/crowdin/pt-BR.yml
+++ b/modules/storages/config/locales/crowdin/pt-BR.yml
@@ -207,8 +207,8 @@ pt-BR:
admin:
side_panel:
health_notifications_component:
- sync_now: Sync now
- sync_queued: Synchronization queued.
+ sync_now: Sincronizar agora
+ sync_queued: Sincronização em fila.
buttons:
done_continue: Pronto, continuar
open_storage: Abrir o armazenamento de arquivo
@@ -229,11 +229,11 @@ pt-BR:
delete_warning:
project_storage_delete_result_1: Todos os links para os arquivos e pastas correspondentes serão removidos
project_storage_delete_result_2: A pasta do projeto gerenciada automaticamente e todos os arquivos contidos nela serão excluídos
- project_storage_html: Are you sure you want to remove %{file_storage} from this project?
+ project_storage_html: Tem certeza de que deseja remover %{file_storage} deste projeto?
storage_delete_result_1: O armazenamento será removido de todos os projetos que o utilizam atualmente
storage_delete_result_2: Todos os links para os arquivos e pastas correspondentes serão removidos
storage_delete_result_3: A pasta do projeto gerenciada automaticamente e todos os arquivos contidos nela serão excluídos
- storage_html: Are you sure you want to delete %{file_storage} as an external file storage?
+ storage_html: Tem certeza de que deseja excluir %{file_storage} como armazenamento de arquivos externo?
dependencies:
nextcloud:
group_folders_app: Pastas da equipe
@@ -285,8 +285,8 @@ pt-BR:
drive_contents: Conteúdo da unidade
files_request: Buscando arquivos da pasta da equipe
header: Pastas de projeto gerenciadas automaticamente
- project_folders_exist: Project folders exist
- project_folders_linked: Project folders linked
+ project_folders_exist: Existem pastas de projeto
+ project_folders_linked: Pastas de projeto vinculadas
team_folder_app: 'Dependência: Pastas da equipe'
team_folder_contents: Conteúdo da pasta da equipe
team_folder_presence: A pasta da equipe existe
@@ -330,10 +330,10 @@ pt-BR:
nc_oauth_request_not_found: O endpoint para recuperar o usuário conectado não foi encontrado. Verifique os logs do servidor para mais detalhes.
nc_oauth_request_unauthorized: O usuário atual não está autorizado a acessar o armazenamento remoto de arquivos. Verifique os logs do servidor para mais informações.
nc_oauth_token_missing: O OpenProject não pode testar a comunicação do usuário com o Nextcloud, pois a conta do Nextcloud ainda não foi vinculada.
- nc_project_folder_missing: The previously created project folder for project "%{project}" could not be found.
+ nc_project_folder_missing: A pasta de projeto criada anteriormente para o projeto “%{project}” não foi encontrada.
nc_team_folder_not_found: A pasta da equipe não pôde ser localizada.
- nc_unexpected_files: 'Unexpected files found in the managed team folder. For example: %{sample}'
- nc_unlinked_project_folders: Not all project folders have been created yet (%{actual} / %{expected}). This can indicate errors during the AMPF background synchronization.
+ nc_unexpected_files: 'Arquivos inesperados encontrados na pasta gerenciada da equipe. Por exemplo: %{sample}'
+ nc_unlinked_project_folders: Nem todas as pastas de projeto foram criadas ainda (%{actual} / %{expected}). Isso pode indicar erros durante a sincronização em segundo plano do AMPF.
nc_userless_access_denied: A senha configurada do aplicativo não é válida.
not_configured: A conexão não pôde ser validada. Conclua a configuração primeiro.
od_client_cant_delete_folder: O cliente está com dificuldades para excluir pastas. Verifique a documentação de configuração do seu armazenamento.
@@ -382,7 +382,7 @@ pt-BR:
failure: Alguns testes não passaram e o sistema não está funcionando corretamente.
success: Todas as conexões e sistemas estão operando normalmente.
warning: Alguns testes retornaram um alerta. Isso pode causar comportamentos inesperados.
- synced: 'Last sync: %{datetime}'
+ synced: 'Última sincronização: %{datetime}'
title: Relatório de status de integridade
health_email_notifications:
description_disabled: Os administradores não receberão atualizações por e-mail quando houver atualizações importantes.
@@ -401,7 +401,7 @@ pt-BR:
host: Adicione o endereço do host de seu armazenamento incluindo o https://. Ele não deve ter mais de 255 caracteres.
managed_project_folders_application_password_caption: 'Habilitar as pastas gerenciadas automaticamente copiando este valor de: %{provider_type_link}.'
name: Dê um nome a seu armazenamento para que os usuários possam diferenciar vários armazenamentos.
- new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information.
+ new_storage_html: Leia nossa documentação sobre [configuração de um armazenamento de arquivos %{provider_name}](docs_url) para obter mais informações.
nextcloud:
application_link_text: aplicativo “Integration OpenProject”
integration: Administração de Nextcloud / OpenProject
@@ -413,7 +413,7 @@ pt-BR:
no_specific_folder: Por padrão, cada usuário começará na sua própria pasta inicial ao carregar arquivos.
no_storage_set_up: Ainda não há armazenamento de arquivos configurado.
not_logged_into_storage: Para selecionar uma pasta de projeto, primeiro faça login
- oauth_application_details_html: 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).
+ oauth_application_details_html: O valor do segredo do cliente não poderá ser acessado novamente depois que você fechar esta janela. Copie esses valores para as [configurações de integração Nextcloud OpenProject](oauth_application_details_link).
one_drive:
application_link_text: Portal Azure
copy_redirect_uri: Copiar URI de redirecionamento
@@ -519,7 +519,7 @@ pt-BR:
members_connection_status: Status da conexão dos membros
new: Adicionar um armazenamento de arquivos a este projeto
project_storage_members:
- subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members.
+ subtitle_html: Verificar o status de conexão do armazenamento %{storage_name_link} de todos os membros do projeto.
title: Status da conexão dos membros
project_storages:
delete: Remover o armazenamento de arquivos do projeto?
@@ -533,13 +533,13 @@ pt-BR:
name_placeholder: 'Ex.: Nextcloud'
one_drive:
label_oauth_client_id: ID do aplicativo Azure OAuth (cliente)
- label_oauth_client_secret: Valor secreto do cliente Azure OAuth
+ label_oauth_client_secret: Valor do segredo do cliente do OAuth do Azure
name: OneDrive
name_placeholder: 'por ex.: OneDrive'
sharepoint:
drive_description: Biblioteca de documentos do OpenProject com acesso gerenciado
label_oauth_client_id: ID do aplicativo Azure OAuth (cliente)
- label_oauth_client_secret: Valor secreto do cliente Azure OAuth
+ label_oauth_client_secret: Valor do segredo do cliente do OAuth do Azure
name: SharePoint
name_placeholder: 'ex.: SharePoint'
show_attachments_toggle:
diff --git a/modules/storages/config/locales/crowdin/uk.yml b/modules/storages/config/locales/crowdin/uk.yml
index 4fbccab5ec8..6a77f11ced4 100644
--- a/modules/storages/config/locales/crowdin/uk.yml
+++ b/modules/storages/config/locales/crowdin/uk.yml
@@ -207,8 +207,8 @@ uk:
admin:
side_panel:
health_notifications_component:
- sync_now: Sync now
- sync_queued: Synchronization queued.
+ sync_now: Синхронізувати
+ sync_queued: Синхронізацію додано в чергу.
buttons:
done_continue: Виконано, продовжити
open_storage: Відкрити файлове сховище
@@ -285,8 +285,8 @@ uk:
drive_contents: Вміст диска
files_request: Отримання файлів із папок команди
header: Папки проєкту з автоматичним керуванням
- project_folders_exist: Project folders exist
- project_folders_linked: Project folders linked
+ project_folders_exist: Папки проєкту існують
+ project_folders_linked: Папки проєкту прив’язано
team_folder_app: 'Залежність: папки команди'
team_folder_contents: Вміст папки команди
team_folder_presence: Папка команди існує
@@ -334,10 +334,10 @@ uk:
nc_oauth_request_not_found: Кінцеву точку для отримання підключеного зараз користувача не знайдено. Щоб дізнатися більше, перевірте журнали сервера.
nc_oauth_request_unauthorized: Поточний користувач не має дозволу на доступ до віддаленого файлового сховища. Щоб дізнатися більше, перевірте журнали сервера.
nc_oauth_token_missing: OpenProject не може перевірити з’єднання на рівні користувача з Nextcloud, оскільки користувач досі не зв’язав свій обліковий запис Nextcloud.
- nc_project_folder_missing: The previously created project folder for project "%{project}" could not be found.
+ nc_project_folder_missing: 'Не вдалося знайти створену раніше папку такого проєкту: «%{project}».'
nc_team_folder_not_found: Папку команди не знайдено.
- nc_unexpected_files: 'Unexpected files found in the managed team folder. For example: %{sample}'
- nc_unlinked_project_folders: Not all project folders have been created yet (%{actual} / %{expected}). This can indicate errors during the AMPF background synchronization.
+ nc_unexpected_files: У керованій папці команди знайдено неочікувані файли. Наприклад, %{sample}.
+ nc_unlinked_project_folders: Створено ще не всі папки проєкту (%{actual} з %{expected}). Це може свідчити про те, що під час фонової синхронізації AMPF виникали помилки.
nc_userless_access_denied: Налаштований пароль застосунку недійсний.
not_configured: Не вдалося перевірити підключення. Спочатку налаштуйте конфігурацію.
od_client_cant_delete_folder: Клієнту не вдалося видалити папки. Ознайомтеся з документацією щодо конфігурації для свого сховища.
@@ -386,7 +386,7 @@ uk:
failure: Деякі перевірки не пройдено, і система працює неналежним чином.
success: Усі підключення й системи працють належним чином.
warning: Деякі перевірки завершилися з попередженням. Це може призвести до неочікуваної поведінки.
- synced: 'Last sync: %{datetime}'
+ synced: 'Остання синхронізація: %{datetime}'
title: Звіт про стан справності
health_email_notifications:
description_disabled: Адміністратори не отримуватимуть електронні листи про важливі оновлення.
@@ -405,7 +405,7 @@ uk:
host: Додайте адресу хосту для свого сховища, включно з https://. Її довжина не може перевищувати 255 символів.
managed_project_folders_application_password_caption: Увімкніть папки з автоматичним керуванням, скопіювавши це значення з %{provider_type_link}.
name: Назвіть своє сховище, щоб користувачі могли відрізняти його від інших сховищ.
- new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information.
+ new_storage_html: Щоб дізнатися більше, ознайомтеся з документацією щодо [налаштування інтеграції файлового сховища %{provider_name}](docs_url).
nextcloud:
application_link_text: Integration OpenProject
integration: Адміністрування Nextcloud / OpenProject
@@ -417,7 +417,7 @@ uk:
no_specific_folder: За замовчуванням кожен користувач, який передасть файл, починатиме роботу у власній головній папці.
no_storage_set_up: Файлові сховища поки не створено.
not_logged_into_storage: Шоб вибрати папку проєкту, спочатку ввійдіть
- oauth_application_details_html: 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).
+ oauth_application_details_html: Секретний ключ клієнта стане недоступним, коли ви закриєте це вікно. Скопіюйте ці значення в [налаштування інтеграції Nextcloud OpenProject](oauth_application_details_link).
one_drive:
application_link_text: Портал Azure
copy_redirect_uri: Копіювати URI переспрямування
diff --git a/modules/storages/config/locales/crowdin/zh-CN.yml b/modules/storages/config/locales/crowdin/zh-CN.yml
index eee11c95816..c9f38c97654 100644
--- a/modules/storages/config/locales/crowdin/zh-CN.yml
+++ b/modules/storages/config/locales/crowdin/zh-CN.yml
@@ -207,8 +207,8 @@ zh-CN:
admin:
side_panel:
health_notifications_component:
- sync_now: Sync now
- sync_queued: Synchronization queued.
+ sync_now: 立即同步
+ sync_queued: 同步已排队。
buttons:
done_continue: 完成, 继续
open_storage: 打开文件存储
@@ -229,11 +229,11 @@ zh-CN:
delete_warning:
project_storage_delete_result_1: 相应文件和文件夹的所有链接都将被移除
project_storage_delete_result_2: 自动管理的项目文件夹及其中的所有文件都将被删除
- project_storage_html: Are you sure you want to remove %{file_storage} from this project?
+ project_storage_html: 确定要从此项目中移除 %{file_storage} 吗?
storage_delete_result_1: 该存储空间将从所有当前使用该存储空间的项目中移除
storage_delete_result_2: 相应文件和文件夹的所有链接都将被移除
storage_delete_result_3: 自动管理的项目文件夹及其中的所有文件都将被删除
- storage_html: Are you sure you want to delete %{file_storage} as an external file storage?
+ storage_html: 确定要删除作为外部文件存储空间的 %{file_storage} 吗?
dependencies:
nextcloud:
group_folders_app: 团队文件夹
@@ -285,8 +285,8 @@ zh-CN:
drive_contents: 驱动器内容
files_request: 正在获取团队文件夹文件
header: 自动托管的项目文件夹
- project_folders_exist: Project folders exist
- project_folders_linked: Project folders linked
+ project_folders_exist: 项目文件夹已存在
+ project_folders_linked: 项目文件夹已关联
team_folder_app: 依赖关系:团队文件夹
team_folder_contents: 团队文件夹内容
team_folder_presence: 团队文件夹已存在
@@ -328,10 +328,10 @@ zh-CN:
nc_oauth_request_not_found: 未找到获取当前连接用户的端点。请检查服务器日志以获取更多信息。
nc_oauth_request_unauthorized: 当前用户无权访问远程文件存储。请检查服务器日志以获取更多信息。
nc_oauth_token_missing: OpenProject 无法测试用户与 Nextcloud 之间的通信,因为用户尚未链接他们的 Nextcloud 帐户。
- nc_project_folder_missing: The previously created project folder for project "%{project}" could not be found.
+ nc_project_folder_missing: 无法找到先前为项目“%{project}”创建的项目文件夹。
nc_team_folder_not_found: 找不到该团队文件夹。
- nc_unexpected_files: 'Unexpected files found in the managed team folder. For example: %{sample}'
- nc_unlinked_project_folders: Not all project folders have been created yet (%{actual} / %{expected}). This can indicate errors during the AMPF background synchronization.
+ nc_unexpected_files: 在受管理的团队文件夹中找到非预期文件。例如:%{sample}
+ nc_unlinked_project_folders: 部分项目文件夹尚未创建 (%{actual}/%{expected})。这可能表明 AMPF 后台同步过程中出错。
nc_userless_access_denied: 已配置的应用密码无效。
not_configured: 无法验证连接。请先完成配置。
od_client_cant_delete_folder: 客户端在删除文件夹时遇到问题。请检查您的存储的设置文档。
@@ -380,7 +380,7 @@ zh-CN:
failure: 有些检查失败,系统无法按预期运行。
success: 所有连接和系统都按预期运行。
warning: 某些检查返回了警告。这可能导致异常行为。
- synced: 'Last sync: %{datetime}'
+ synced: 上次同步时间:%{datetime}
title: 健康状况报告
health_email_notifications:
description_disabled: 当有重要更新时,管理员将不会通过电子邮件收到更新提醒。
@@ -399,7 +399,7 @@ zh-CN:
host: 请添加存储的主机地址,包括 https://。不应超过 255 个字符。
managed_project_folders_application_password_caption: 通过从 %{provider_type_link} 复制该值来启用自动管理的文件夹。
name: 为您的存储命名,以便用户可以区分多个存储。
- new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information.
+ new_storage_html: 请阅读我们关于[设置 %{provider_name} 文件存储](docs_url)的文档,以获取更多信息。
nextcloud:
application_link_text: 应用“集成OpenProject”
integration: Nextcloud 管理/OpenProject
@@ -411,7 +411,7 @@ zh-CN:
no_specific_folder: 默认情况下,每个用户上传文件时将从自己的主文件夹开始。
no_storage_set_up: 尚未设置文件存储。
not_logged_into_storage: 要选择一个项目文件夹,请先登录
- oauth_application_details_html: 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).
+ oauth_application_details_html: 关闭此窗口后,将无法再次访问客户端密钥值。请将这些值复制到 [Nextcloud OpenProject 集成设置](oauth_application_details_link)中。
one_drive:
application_link_text: Azure 门户
copy_redirect_uri: 复制重定向 URI
@@ -517,7 +517,7 @@ zh-CN:
members_connection_status: 成员连接状态
new: 将文件存储添加到此项目
project_storage_members:
- subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members.
+ subtitle_html: 检查所有项目成员的存储区 %{storage_name_link} 的连接状态。
title: 成员连接状态
project_storages:
delete: 是否从项目中移除文件存储空间?
diff --git a/modules/two_factor_authentication/config/locales/crowdin/es.yml b/modules/two_factor_authentication/config/locales/crowdin/es.yml
index ddd14519636..80fe64e2c90 100644
--- a/modules/two_factor_authentication/config/locales/crowdin/es.yml
+++ b/modules/two_factor_authentication/config/locales/crowdin/es.yml
@@ -67,7 +67,7 @@ es:
No se les pedirá que lo vuelvan a ingresar durante ese período. Solo se puede configurar cuando no se aplica por configuración.
failed_to_save_settings: 'Error al actualizar la configuración 2FA: %{message}'
admin:
- self_edit_path_html: To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)
+ self_edit_path_html: Para añadir o modificar tus propios dispositivos de autenticación de dos factores, ve a la [página de autenticación de dos factores de tu cuenta](self_edit_link)
self_edit_forbidden: No puede editar sus propios dispositivos 2FA en esta ruta. Vaya a Mi cuenta > Autenticación de dos factores en su lugar.
no_devices_for_user: No se ha registrado ningún dispositivo 2FA para este usuario.
all_devices_deleted: Todos los dispositivos 2FA de este usuario han sido eliminados
@@ -109,8 +109,8 @@ es:
failed_to_delete: Error al eliminar el dispositivo 2FA.
is_default_cannot_delete: El dispositivo está marcado como predeterminado y no se puede eliminar debido a una política de seguridad activa. Marque otro dispositivo como predeterminado antes de eliminar.
not_existing: No se ha registrado ningún dispositivo 2FA para su cuenta.
- 2fa_from_input_html: Please enter the code from your
%{device_name} to verify your identity.
- 2fa_from_webauthn_html: Please provide the WebAuthn device
%{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button.
+ 2fa_from_input_html: Ingrese el código de su
%{device_name} para verificar su identidad.
+ 2fa_from_webauthn_html: Indique el dispositivo WebAuthn
%{device_name}. Si es USB asegúrese de conectarlo y tocarlo. A continuación, haga clic en el botón de inicio de sesión.
webauthn:
title: WebAuthn
description: Registre un dispositivo FIDO2 (como YubiKey) o el enclave seguro de su dispositivo móvil.
diff --git a/modules/two_factor_authentication/config/locales/crowdin/it.yml b/modules/two_factor_authentication/config/locales/crowdin/it.yml
index 99252c850e8..de21a15e9e3 100644
--- a/modules/two_factor_authentication/config/locales/crowdin/it.yml
+++ b/modules/two_factor_authentication/config/locales/crowdin/it.yml
@@ -67,7 +67,7 @@ it:
Non gli sarà richiesto di autenticarsi nuovamente in quel periodo. L’impostazione può essere modificata solo quando non applicata dalla configurazione.
failed_to_save_settings: 'Impossibile aggiornare le impostazioni 2FA: %{message}'
admin:
- self_edit_path_html: To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)
+ self_edit_path_html: Per aggiungere o modificare i tuoi dispositivi 2FA, vai alla [pagina Autenticazione a due fattori del tuo account](self_edit_link)
self_edit_forbidden: Non puoi modificare i tuoi dispositivi 2FA su questo percorso. Vai al mio Account > Autenticazione a due fattori.
no_devices_for_user: Nessun dispositivo 2FA è stato registrato per questo utente.
all_devices_deleted: Tutti i dispositivi 2FA di questo utente sono stati eliminati
@@ -109,8 +109,8 @@ it:
failed_to_delete: Impossibile eliminare il dispositivo 2FA.
is_default_cannot_delete: Il dispositivo è contrassegnato come predefinito e non può essere eliminato a causa di una policy di sicurezza attiva. Contrassegna prima un'altro dispositivo come predefinito per poterlo eliminare.
not_existing: Nessun dispositivo 2FA è stato registrato per il suo account.
- 2fa_from_input_html: Please enter the code from your
%{device_name} to verify your identity.
- 2fa_from_webauthn_html: Please provide the WebAuthn device
%{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button.
+ 2fa_from_input_html: Inserisci il codice dal tuo
%{device_name} per verificare la tua identità.
+ 2fa_from_webauthn_html: Fornisci il dispositivo WebAuthn
%{device_name}. Se è basato su USB, assicurati di collegarlo e toccarlo. Quindi clicca sul pulsante di accesso.
webauthn:
title: WebAuthn
description: Registra un dispositivo FIDO2 (come YubiKey) o la chiave sicura del tuo dispositivo mobile.
diff --git a/modules/two_factor_authentication/config/locales/crowdin/ko.yml b/modules/two_factor_authentication/config/locales/crowdin/ko.yml
index 2d7e823f106..d8cda8a7a6e 100644
--- a/modules/two_factor_authentication/config/locales/crowdin/ko.yml
+++ b/modules/two_factor_authentication/config/locales/crowdin/ko.yml
@@ -67,7 +67,7 @@ ko:
사용자가 해당 기간 동안에는 이를 다시 입력하라는 요청을 받지 않게 됩니다. 구성에 의해 강제 적용되지 않는 경우에만 설정할 수 있습니다.
failed_to_save_settings: '2FA 설정을 업데이트하지 못함: %{message}'
admin:
- self_edit_path_html: To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)
+ self_edit_path_html: 고유한 2FA 장치를 추가하거나 수정하려면 [계정 페이지의 2단계 인증](self_edit_link)으로 이동하세요
self_edit_forbidden: 이 경로에서 사용자의 고유한 2FA 장치를 편집하지 못할 수 있습니다. 대신 내 계정 > 2단계 인증으로 이동하세요.
no_devices_for_user: 2FA 장치가 이 사용자에 대해 등록되지 않았습니다.
all_devices_deleted: 이 사용자의 모든 2FA 장치가 삭제되었습니다.
@@ -109,8 +109,8 @@ ko:
failed_to_delete: 2FA 장치를 삭제하지 못했습니다.
is_default_cannot_delete: 장치가 기본으로 표시되고 활성 보안 정책으로 인해 삭제할 수 없습니다. 삭제하기 전에 다른 장치를 기본으로 표시하세요.
not_existing: 2FA 장치가 해당 계정에 대해 등록되지 않았습니다.
- 2fa_from_input_html: Please enter the code from your
%{device_name} to verify your identity.
- 2fa_from_webauthn_html: Please provide the WebAuthn device
%{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button.
+ 2fa_from_input_html: "
%{device_name}의 코드를 입력하여 ID를 인증하세요."
+ 2fa_from_webauthn_html: WebAuthn 장치
%{device_name} 제공을 해주세요. USB 기반인 경우 이 장치를 연결하고 터치해야 합니다. 그런 다음 로그인 버튼을 클릭하세요.
webauthn:
title: WebAuthn
description: 'FIDO2 장치(예: YubiKey) 또는 모바일 장치의 Secure Enclave를 등록하세요.'
diff --git a/modules/two_factor_authentication/config/locales/crowdin/pt-BR.yml b/modules/two_factor_authentication/config/locales/crowdin/pt-BR.yml
index f0c630a0e04..28bc3eb6ee2 100644
--- a/modules/two_factor_authentication/config/locales/crowdin/pt-BR.yml
+++ b/modules/two_factor_authentication/config/locales/crowdin/pt-BR.yml
@@ -67,7 +67,7 @@ pt-BR:
Não será solicitado a eles para digitar novamente o 2FA durante este período. Só pode ser definido quando a imposição não estiver configurada.
failed_to_save_settings: 'Falha ao atualizar as configurações de 2FA: %{message}'
admin:
- self_edit_path_html: To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)
+ self_edit_path_html: Para adicionar ou modificar seus próprios dispositivos de 2FA, acesse a [página de autenticação de dois fatores da sua conta](self_edit_link)
self_edit_forbidden: Talvez você não tenha editado o seu dispositivo 2FA para este caminho. Vá para Minha Conta > Segundo Favor de Autenticação.
no_devices_for_user: Nenhum dispositivo 2FA foi registrado para este usuário.
all_devices_deleted: Todos os dispositivos 2FA deste usuário foram excluídos
@@ -109,8 +109,8 @@ pt-BR:
failed_to_delete: Falha ao excluir o dispositivo com 2FA.
is_default_cannot_delete: O arquivo está marcado como padrão e não pode ser deletado devido a política de segurança estar ativa. Marque outro dispositivo como padrão antes de excluí-lo.
not_existing: Nenhum dispositivo com 2FA foi registrado na sua conta.
- 2fa_from_input_html: Please enter the code from your
%{device_name} to verify your identity.
- 2fa_from_webauthn_html: Please provide the WebAuthn device
%{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button.
+ 2fa_from_input_html: Digite o código do seu
%{device_name} para verificar sua identidade.
+ 2fa_from_webauthn_html: Forneça o dispositivo WebAuthn
%{device_name}. Se for USB, conecte-o e confirme a ação pressionando o botão ou tocando na chave. Em seguida, clique no botão de login.
webauthn:
title: WebAuthn
description: Registre um dispositivo FIDO2 (como o YubiKey) ou o enclave seguro do seu dispositivo móvel.
diff --git a/modules/two_factor_authentication/config/locales/crowdin/uk.yml b/modules/two_factor_authentication/config/locales/crowdin/uk.yml
index 56adc2260f0..fa4cf3a61b8 100644
--- a/modules/two_factor_authentication/config/locales/crowdin/uk.yml
+++ b/modules/two_factor_authentication/config/locales/crowdin/uk.yml
@@ -67,7 +67,7 @@ uk:
Протягом цього періоду їм не буде запропоновано повторно ввести його. Можна встановити лише тоді, коли конфігурація не застосовується.
failed_to_save_settings: 'Не вдалося оновити налаштування 2FA: %{message}'
admin:
- self_edit_path_html: To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)
+ self_edit_path_html: Щоб додати або змінити власні пристрої з 2FA, перейдіть на сторінку [Двофакторна аутентифікація в обліковому записі](self_edit_link)
self_edit_forbidden: На цьому шляху не можна редагувати власні пристрої 2FA. Замість цього перейдіть до розділу Мій обліковий запис> Двофакторна автентифікація.
no_devices_for_user: Для цього користувача не було зареєстровано жодного пристрою 2FA.
all_devices_deleted: Усі пристрої 2FA цього користувача видалено
@@ -109,7 +109,7 @@ uk:
failed_to_delete: Не вдалося видалити пристрій 2FA.
is_default_cannot_delete: Пристрій позначено як типовий і його не можна видалити через активну політику безпеки. Перед видаленням позначте інший пристрій як стандартний.
not_existing: Для вашого облікового запису не зареєстровано жодного пристрою 2FA.
- 2fa_from_input_html: Please enter the code from your
%{device_name} to verify your identity.
+ 2fa_from_input_html: Введіть код, який надійшов на пристрій
%{device_name}, щоб підтвердити свою особу.
2fa_from_webauthn_html: Укажіть пристрій WebAuthn
%{device_name}. Якщо це USB-пристрій, переконайтеся, що його підключено, і торкніться його. Потім натисніть кнопку входу.
webauthn:
title: WebAuthn
diff --git a/modules/two_factor_authentication/config/locales/crowdin/zh-CN.yml b/modules/two_factor_authentication/config/locales/crowdin/zh-CN.yml
index 862b5347258..2136239372e 100644
--- a/modules/two_factor_authentication/config/locales/crowdin/zh-CN.yml
+++ b/modules/two_factor_authentication/config/locales/crowdin/zh-CN.yml
@@ -67,7 +67,7 @@ zh-CN:
在此期间,他们将不会被要求重新输入。只有在配置未强制执行时才能进行设置。
failed_to_save_settings: 无法更新双因子认证设置:%{message}
admin:
- self_edit_path_html: To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)
+ self_edit_path_html: 要添加或修改您自己的 2FA 设备,请转到[您帐户页面上的双重身份验证](self_edit_link)
self_edit_forbidden: 您可能无法在此路径上编辑自己的 2FA 设备。请转到我的帐户 >> 双因子认证。
no_devices_for_user: 没有为此用户注册过 2FA 设备。
all_devices_deleted: 此用户的所有 2FA 设备已被删除
@@ -109,8 +109,8 @@ zh-CN:
failed_to_delete: 删除 2FA 设备失败。
is_default_cannot_delete: 该设备被标记为默认设备,并且由于活动安全策略而无法删除。在删除之前,请将另一个设备标记为默认设备。
not_existing: 没有为您的帐户注册过 2FA 设备。
- 2fa_from_input_html: Please enter the code from your
%{device_name} to verify your identity.
- 2fa_from_webauthn_html: Please provide the WebAuthn device
%{device_name}. If it is USB based make sure to plug it in and touch it. Then click the sign in button.
+ 2fa_from_input_html: 请通过您的
%{device_name} 输入验证码,以验证您的身份。
+ 2fa_from_webauthn_html: 请提供 WebAuthn 设备
%{device_name}。如果是 USB 设备,请确保将其插入并使用。然后点击“登录”按钮。
webauthn:
title: WebAuthn 认证
description: 注册 FIDO2 设备(如 YubiKey)或您的移动设备的安全隔区。
diff --git a/modules/webhooks/config/locales/crowdin/es.yml b/modules/webhooks/config/locales/crowdin/es.yml
index c43e158fda2..f7891dee139 100644
--- a/modules/webhooks/config/locales/crowdin/es.yml
+++ b/modules/webhooks/config/locales/crowdin/es.yml
@@ -37,7 +37,7 @@ es:
updated: Actualizado
comment: Comentario
internal_comment: Comentario interno
- explanation_html: '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 [configured aggregation period](aggregation_path) has passed.
+ explanation_html: 'Al producirse un evento como la creación de un paquete de trabajo o una actualización en un proyecto, OpenProject enviará una solicitud POST a los puntos finales web configurados. A menudo, el evento se envía una vez transcurrido el [periodo de agregación configurado](aggregation_path).
'
status:
diff --git a/modules/webhooks/config/locales/crowdin/it.yml b/modules/webhooks/config/locales/crowdin/it.yml
index 5f613582786..f5b6ec093ec 100644
--- a/modules/webhooks/config/locales/crowdin/it.yml
+++ b/modules/webhooks/config/locales/crowdin/it.yml
@@ -37,7 +37,7 @@ it:
updated: Aggiornato
comment: Commento
internal_comment: Commento interno
- explanation_html: '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 [configured aggregation period](aggregation_path) has passed.
+ explanation_html: 'Al verificarsi di un evento, come la creazione di una macro-attività o un aggiornamento su un progetto, OpenProject invierà una richiesta POST agli endpoint web configurati. Spesso, l''evento viene inviato dopo che è trascorso il [periodo di aggregazione configurato](aggregation_path).
'
status:
diff --git a/modules/webhooks/config/locales/crowdin/pt-BR.yml b/modules/webhooks/config/locales/crowdin/pt-BR.yml
index a2922ce8cdf..a83f8baca9f 100644
--- a/modules/webhooks/config/locales/crowdin/pt-BR.yml
+++ b/modules/webhooks/config/locales/crowdin/pt-BR.yml
@@ -70,6 +70,6 @@ pt-BR:
selected_project_ids:
title: Projetos selecionados
secret:
- description: 'Se definido, este valor secreto é usado pelo OpenProject para assinar o payload webhook.
+ description: 'Se definido, esse valor de segredo é usado pelo OpenProject para assinar o payload do webhook.
'
diff --git a/modules/webhooks/config/locales/crowdin/uk.yml b/modules/webhooks/config/locales/crowdin/uk.yml
index 38f3b4c46e2..e4f266e326e 100644
--- a/modules/webhooks/config/locales/crowdin/uk.yml
+++ b/modules/webhooks/config/locales/crowdin/uk.yml
@@ -37,7 +37,7 @@ uk:
updated: Оновлено
comment: Коментар
internal_comment: Внутрішній коментар
- explanation_html: '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 [configured aggregation period](aggregation_path) has passed.
+ explanation_html: 'У разі такої події, як створення пакета робіт або оновлення проєкту, OpenProject надсилає POST-запит налаштованим кінцевим точкам мережі. Здебільшого подія надсилається після того, як мине [налаштований період агрегації](aggregation_path).
'
status:
diff --git a/modules/webhooks/config/locales/crowdin/zh-CN.yml b/modules/webhooks/config/locales/crowdin/zh-CN.yml
index f02643e66a2..08f8694e5d1 100644
--- a/modules/webhooks/config/locales/crowdin/zh-CN.yml
+++ b/modules/webhooks/config/locales/crowdin/zh-CN.yml
@@ -37,7 +37,7 @@ zh-CN:
updated: 已更新
comment: 评论
internal_comment: 内部评论
- explanation_html: '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 [configured aggregation period](aggregation_path) has passed.
+ explanation_html: '在发生诸如创建工作包或更新项目之类的事件时,OpenProject 将向配置的 Web 端点发送一个 POST 请求。通常,会在[配置的聚合期](aggregation_path)过后发送事件。
'
status:
diff --git a/modules/wikis/app/components/wikis/admin/destroy_confirmation_dialog_component.rb b/modules/wikis/app/components/wikis/admin/destroy_confirmation_dialog_component.rb
index 05b20dae3bf..8e356dfb5eb 100644
--- a/modules/wikis/app/components/wikis/admin/destroy_confirmation_dialog_component.rb
+++ b/modules/wikis/app/components/wikis/admin/destroy_confirmation_dialog_component.rb
@@ -23,7 +23,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See COPYRIGHT and LICENSE files for more details.
#++
diff --git a/modules/wikis/app/components/wikis/admin/forms/general_info_form_component.rb b/modules/wikis/app/components/wikis/admin/forms/general_info_form_component.rb
index d5bd4e35895..70d1f4dbef2 100644
--- a/modules/wikis/app/components/wikis/admin/forms/general_info_form_component.rb
+++ b/modules/wikis/app/components/wikis/admin/forms/general_info_form_component.rb
@@ -23,7 +23,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See COPYRIGHT and LICENSE files for more details.
#++
diff --git a/modules/wikis/app/components/wikis/admin/general_info_component.rb b/modules/wikis/app/components/wikis/admin/general_info_component.rb
index 06da4c4ad66..4637c9f227c 100644
--- a/modules/wikis/app/components/wikis/admin/general_info_component.rb
+++ b/modules/wikis/app/components/wikis/admin/general_info_component.rb
@@ -23,7 +23,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See COPYRIGHT and LICENSE files for more details.
#++
diff --git a/modules/wikis/app/components/wikis/admin/wiki_provider_list_component.rb b/modules/wikis/app/components/wikis/admin/wiki_provider_list_component.rb
index 154ebb2400c..43279aa18bc 100644
--- a/modules/wikis/app/components/wikis/admin/wiki_provider_list_component.rb
+++ b/modules/wikis/app/components/wikis/admin/wiki_provider_list_component.rb
@@ -23,7 +23,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See COPYRIGHT and LICENSE files for more details.
#++
diff --git a/modules/wikis/app/components/wikis/admin/wiki_provider_view_component.rb b/modules/wikis/app/components/wikis/admin/wiki_provider_view_component.rb
index 26029abdf42..4e0249b9402 100644
--- a/modules/wikis/app/components/wikis/admin/wiki_provider_view_component.rb
+++ b/modules/wikis/app/components/wikis/admin/wiki_provider_view_component.rb
@@ -23,7 +23,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See COPYRIGHT and LICENSE files for more details.
#++
diff --git a/modules/wikis/app/contracts/wikis/xwiki_providers/base_contract.rb b/modules/wikis/app/contracts/wikis/xwiki_providers/base_contract.rb
new file mode 100644
index 00000000000..8d93947590c
--- /dev/null
+++ b/modules/wikis/app/contracts/wikis/xwiki_providers/base_contract.rb
@@ -0,0 +1,45 @@
+# frozen_string_literal: true
+
+#-- copyright
+# OpenProject is an open source project management software.
+# Copyright (C) the OpenProject GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License version 3.
+#
+# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
+# Copyright (C) 2006-2013 Jean-Philippe Lang
+# Copyright (C) 2010-2013 the ChiliProject Team
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# See COPYRIGHT and LICENSE files for more details.
+#++
+
+module Wikis
+ module XWikiProviders
+ class BaseContract < ::BaseContract
+ include RequiresAdminGuard
+
+ attribute :name
+ attribute :url
+
+ validates :name, presence: true, length: { maximum: 255 }
+ validates :url, presence: true, length: { maximum: 255 }
+ validates :url, url: true, unless: -> { url.blank? || errors.include?(:url) }
+ validates :url, secure_context_uri: true, unless: -> { url.blank? || errors.include?(:url) }
+ end
+ end
+end
diff --git a/modules/wikis/app/contracts/wikis/xwiki_providers/create_contract.rb b/modules/wikis/app/contracts/wikis/xwiki_providers/create_contract.rb
new file mode 100644
index 00000000000..1ffd6a7facd
--- /dev/null
+++ b/modules/wikis/app/contracts/wikis/xwiki_providers/create_contract.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+#-- copyright
+# OpenProject is an open source project management software.
+# Copyright (C) the OpenProject GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License version 3.
+#
+# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
+# Copyright (C) 2006-2013 Jean-Philippe Lang
+# Copyright (C) 2010-2013 the ChiliProject Team
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# See COPYRIGHT and LICENSE files for more details.
+#++
+
+module Wikis
+ module XWikiProviders
+ class CreateContract < BaseContract
+ end
+ end
+end
diff --git a/modules/wikis/app/contracts/wikis/xwiki_providers/delete_contract.rb b/modules/wikis/app/contracts/wikis/xwiki_providers/delete_contract.rb
new file mode 100644
index 00000000000..944be196688
--- /dev/null
+++ b/modules/wikis/app/contracts/wikis/xwiki_providers/delete_contract.rb
@@ -0,0 +1,37 @@
+# frozen_string_literal: true
+
+#-- copyright
+# OpenProject is an open source project management software.
+# Copyright (C) the OpenProject GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License version 3.
+#
+# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
+# Copyright (C) 2006-2013 Jean-Philippe Lang
+# Copyright (C) 2010-2013 the ChiliProject Team
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# See COPYRIGHT and LICENSE files for more details.
+#++
+
+module Wikis
+ module XWikiProviders
+ class DeleteContract < ::DeleteContract
+ delete_permission :admin
+ end
+ end
+end
diff --git a/modules/wikis/app/contracts/wikis/xwiki_providers/update_contract.rb b/modules/wikis/app/contracts/wikis/xwiki_providers/update_contract.rb
new file mode 100644
index 00000000000..dadb1563505
--- /dev/null
+++ b/modules/wikis/app/contracts/wikis/xwiki_providers/update_contract.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+#-- copyright
+# OpenProject is an open source project management software.
+# Copyright (C) the OpenProject GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License version 3.
+#
+# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
+# Copyright (C) 2006-2013 Jean-Philippe Lang
+# Copyright (C) 2010-2013 the ChiliProject Team
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# See COPYRIGHT and LICENSE files for more details.
+#++
+
+module Wikis
+ module XWikiProviders
+ class UpdateContract < BaseContract
+ end
+ end
+end
diff --git a/modules/wikis/app/controllers/wikis/admin/wiki_providers_controller.rb b/modules/wikis/app/controllers/wikis/admin/wiki_providers_controller.rb
index 95742ced4a2..358e972f8ca 100644
--- a/modules/wikis/app/controllers/wikis/admin/wiki_providers_controller.rb
+++ b/modules/wikis/app/controllers/wikis/admin/wiki_providers_controller.rb
@@ -23,7 +23,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See COPYRIGHT and LICENSE files for more details.
#++
@@ -51,28 +51,50 @@ module Wikis
def edit; end
def create
- @wiki_provider = Wikis::XWikiProvider.new(wiki_provider_params)
+ service_result = Wikis::XWikiProviders::CreateService
+ .new(user: current_user)
+ .call(wiki_provider_params)
- if @wiki_provider.save
+ @wiki_provider = service_result.result
+
+ service_result.on_success do
flash[:notice] = I18n.t(:notice_successful_create)
redirect_to edit_admin_settings_wiki_provider_path(@wiki_provider)
- else
+ end
+
+ service_result.on_failure do
render :new, status: :unprocessable_entity
end
end
def update
- if @wiki_provider.update(wiki_provider_params)
+ service_result = Wikis::XWikiProviders::UpdateService
+ .new(user: current_user, model: @wiki_provider)
+ .call(wiki_provider_params)
+
+ service_result.on_success do
flash[:notice] = I18n.t(:notice_successful_update)
redirect_to edit_admin_settings_wiki_provider_path(@wiki_provider)
- else
+ end
+
+ service_result.on_failure do
render :edit, status: :unprocessable_entity
end
end
def destroy
- @wiki_provider.destroy!
- flash[:notice] = I18n.t(:notice_successful_delete)
+ service_result = Wikis::XWikiProviders::DeleteService
+ .new(user: current_user, model: @wiki_provider)
+ .call
+
+ service_result.on_failure do
+ flash[:error] = service_result.errors.full_messages
+ end
+
+ service_result.on_success do
+ flash[:notice] = I18n.t(:notice_successful_delete)
+ end
+
redirect_to admin_settings_wiki_providers_path
end
diff --git a/modules/wikis/app/forms/wikis/admin/name_input_form.rb b/modules/wikis/app/forms/wikis/admin/name_input_form.rb
index 08a1d255013..b54b9408062 100644
--- a/modules/wikis/app/forms/wikis/admin/name_input_form.rb
+++ b/modules/wikis/app/forms/wikis/admin/name_input_form.rb
@@ -23,7 +23,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See COPYRIGHT and LICENSE files for more details.
#++
diff --git a/modules/wikis/app/forms/wikis/admin/submit_or_cancel_form.rb b/modules/wikis/app/forms/wikis/admin/submit_or_cancel_form.rb
index 22f466f6305..c3e07e9fffc 100644
--- a/modules/wikis/app/forms/wikis/admin/submit_or_cancel_form.rb
+++ b/modules/wikis/app/forms/wikis/admin/submit_or_cancel_form.rb
@@ -23,7 +23,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See COPYRIGHT and LICENSE files for more details.
#++
diff --git a/modules/wikis/app/forms/wikis/admin/url_input_form.rb b/modules/wikis/app/forms/wikis/admin/url_input_form.rb
index 45533a7526d..aab6e39f7dc 100644
--- a/modules/wikis/app/forms/wikis/admin/url_input_form.rb
+++ b/modules/wikis/app/forms/wikis/admin/url_input_form.rb
@@ -23,7 +23,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See COPYRIGHT and LICENSE files for more details.
#++
diff --git a/modules/wikis/app/services/wikis/xwiki_providers/create_service.rb b/modules/wikis/app/services/wikis/xwiki_providers/create_service.rb
new file mode 100644
index 00000000000..ae4b52bad2d
--- /dev/null
+++ b/modules/wikis/app/services/wikis/xwiki_providers/create_service.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+#-- copyright
+# OpenProject is an open source project management software.
+# Copyright (C) the OpenProject GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License version 3.
+#
+# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
+# Copyright (C) 2006-2013 Jean-Philippe Lang
+# Copyright (C) 2010-2013 the ChiliProject Team
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# See COPYRIGHT and LICENSE files for more details.
+#++
+
+module Wikis
+ module XWikiProviders
+ class CreateService < ::BaseServices::Create
+ end
+ end
+end
diff --git a/modules/wikis/app/services/wikis/xwiki_providers/delete_service.rb b/modules/wikis/app/services/wikis/xwiki_providers/delete_service.rb
new file mode 100644
index 00000000000..a3e6817085b
--- /dev/null
+++ b/modules/wikis/app/services/wikis/xwiki_providers/delete_service.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+#-- copyright
+# OpenProject is an open source project management software.
+# Copyright (C) the OpenProject GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License version 3.
+#
+# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
+# Copyright (C) 2006-2013 Jean-Philippe Lang
+# Copyright (C) 2010-2013 the ChiliProject Team
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# See COPYRIGHT and LICENSE files for more details.
+#++
+
+module Wikis
+ module XWikiProviders
+ class DeleteService < ::BaseServices::Delete
+ end
+ end
+end
diff --git a/modules/wikis/app/services/wikis/xwiki_providers/set_attributes_service.rb b/modules/wikis/app/services/wikis/xwiki_providers/set_attributes_service.rb
new file mode 100644
index 00000000000..7d14423fc92
--- /dev/null
+++ b/modules/wikis/app/services/wikis/xwiki_providers/set_attributes_service.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+#-- copyright
+# OpenProject is an open source project management software.
+# Copyright (C) the OpenProject GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License version 3.
+#
+# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
+# Copyright (C) 2006-2013 Jean-Philippe Lang
+# Copyright (C) 2010-2013 the ChiliProject Team
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# See COPYRIGHT and LICENSE files for more details.
+#++
+
+module Wikis
+ module XWikiProviders
+ class SetAttributesService < ::BaseServices::SetAttributes
+ end
+ end
+end
diff --git a/modules/wikis/app/services/wikis/xwiki_providers/update_service.rb b/modules/wikis/app/services/wikis/xwiki_providers/update_service.rb
new file mode 100644
index 00000000000..3232d5a9e5b
--- /dev/null
+++ b/modules/wikis/app/services/wikis/xwiki_providers/update_service.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+#-- copyright
+# OpenProject is an open source project management software.
+# Copyright (C) the OpenProject GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License version 3.
+#
+# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
+# Copyright (C) 2006-2013 Jean-Philippe Lang
+# Copyright (C) 2010-2013 the ChiliProject Team
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# See COPYRIGHT and LICENSE files for more details.
+#++
+
+module Wikis
+ module XWikiProviders
+ class UpdateService < ::BaseServices::Update
+ end
+ end
+end
diff --git a/modules/wikis/app/views/wikis/admin/wiki_providers/edit.html.erb b/modules/wikis/app/views/wikis/admin/wiki_providers/edit.html.erb
index 0e14bc59175..79b5293696e 100644
--- a/modules/wikis/app/views/wikis/admin/wiki_providers/edit.html.erb
+++ b/modules/wikis/app/views/wikis/admin/wiki_providers/edit.html.erb
@@ -21,7 +21,7 @@ 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.
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
See COPYRIGHT and LICENSE files for more details.
diff --git a/modules/wikis/app/views/wikis/admin/wiki_providers/new.html.erb b/modules/wikis/app/views/wikis/admin/wiki_providers/new.html.erb
index 56aab75efa4..704780291bf 100644
--- a/modules/wikis/app/views/wikis/admin/wiki_providers/new.html.erb
+++ b/modules/wikis/app/views/wikis/admin/wiki_providers/new.html.erb
@@ -21,7 +21,7 @@ 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.
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
See COPYRIGHT and LICENSE files for more details.
diff --git a/modules/wikis/config/locales/crowdin/es.yml b/modules/wikis/config/locales/crowdin/es.yml
index 17f1deb0ea3..77cd2baa6ef 100644
--- a/modules/wikis/config/locales/crowdin/es.yml
+++ b/modules/wikis/config/locales/crowdin/es.yml
@@ -3,7 +3,7 @@ es:
activerecord:
attributes:
wikis/xwiki_provider:
- name: Name
+ name: Nombre
url: Instance URL
authentication_method: Authentication method
authentication_methods:
@@ -28,26 +28,26 @@ es:
admin:
wiki_providers:
index_description: Add an external wiki service to link work packages to existing wiki pages or create new ones directly from OpenProject.
- label_wiki_platform: Wiki provider
- label_add_new: Add new wiki provider
- label_new_xwiki_instance: New XWiki provider
- no_results_title: You don't have any wiki providers set up yet.
- no_results_description: Add a wiki provider to see them here.
- label_edit: Edit XWiki provider
- name_placeholder: XWiki knowledge base
- name_caption: Give your storage a name so that users can differentiate between multiple wiki platforms.
- url_caption: Please add the host address of your wiki platform including the https://. It should not be longer than 255 characters.
- xwiki_instance: XWiki Instance
- xwiki_instance_description: Please make sure you have administration privileges in your XWiki instance before doing the setup.
- new_provider_html: Read our documentation on [setting up an XWiki integration](docs_url) for more information.
+ label_wiki_platform: Proveedor Wiki
+ label_add_new: Añadir nuevo proveedor de wiki
+ label_new_xwiki_instance: Nuevo proveedor XWiki
+ no_results_title: Aún no tienes ningún proveedor de wiki configurado.
+ no_results_description: Añade un proveedor wiki para verlos aquí.
+ label_edit: Editar proveedor XWiki
+ name_placeholder: Base de conocimientos XWiki
+ name_caption: Ponle un nombre a tu almacenamiento para que los usuarios puedan distinguir entre las distintas plataformas wiki.
+ url_caption: Por favor, añade la dirección host de tu plataforma wiki, incluyendo el https://. No debe superar los 255 caracteres.
+ xwiki_instance: Instancia XWiki
+ xwiki_instance_description: Asegúrate de tener privilegios de administrador en tu instancia de XWiki antes de realizar la configuración.
+ new_provider_html: Lee nuestra documentación sobre [configuración de una integración XWiki](docs_url) para obtener más información.
sections:
- basic_details: Basic details
- oauth_applications: OAuth applications
+ basic_details: Detalles básicos
+ oauth_applications: Aplicaciones OAuth
oauth:
openproject_oauth: OpenProject OAuth
- openproject_oauth_description: Allow XWiki to access OpenProject data using an OAuth.
+ openproject_oauth_description: Permitir que XWiki acceda a los datos de OpenProject utilizando un OAuth.
xwiki_oauth: XWiki OAuth
- xwiki_oauth_description: Allow OpenProject to access XWiki data using an OAuth.
+ xwiki_oauth_description: Permite que OpenProject acceda a los datos de XWiki mediante OAuth.
delete:
- title: Delete wiki provider
- warning_html: You are about to delete %{wiki_provider}. This action is irreversible.
+ title: Eliminar proveedor wiki
+ warning_html: Estás a punto de borrar %{wiki_provider}. Esta acción es irreversible.
diff --git a/modules/wikis/config/locales/crowdin/fr.yml b/modules/wikis/config/locales/crowdin/fr.yml
index 1e3cf4cc439..b6010565b27 100644
--- a/modules/wikis/config/locales/crowdin/fr.yml
+++ b/modules/wikis/config/locales/crowdin/fr.yml
@@ -3,51 +3,51 @@ fr:
activerecord:
attributes:
wikis/xwiki_provider:
- name: Name
+ name: Nom
url: URL de l'instance
authentication_method: Méthode d'authentification
authentication_methods:
oauth2_sso: Authentification unique via le fournisseur d'identité OpenID Connect
two_way_oauth2: Flux d'autorisation OAuth 2.0 bidirectionnel par code d'autorisation
- token_exchange_scope: XWiki Scope
+ token_exchange_scope: Portée XWiki
wiki_audience: Audience de XWiki
errors: {}
models:
wikis/inline_page_link:
- one: Inline page link
- other: Inline page links
+ one: Lien de page en ligne
+ other: Liens de page en ligne
wikis/internal_provider: Wiki interne
wikis/relation_page_link:
- one: Relation page link
- other: Relation page links
+ one: Lien de la page de relation
+ other: Liens de la page de relation
wikis/xwiki_provider: Fournisseur XWiki
- project_module_wiki_platforms: Wiki providers
+ project_module_wiki_platforms: Fournisseurs de wiki
wikis:
buttons:
- save_and_continue: Save and continue
+ save_and_continue: Enregistrer et continuer
admin:
wiki_providers:
- index_description: Add an external wiki service to link work packages to existing wiki pages or create new ones directly from OpenProject.
- label_wiki_platform: Wiki provider
- label_add_new: Add new wiki provider
- label_new_xwiki_instance: New XWiki provider
- no_results_title: You don't have any wiki providers set up yet.
- no_results_description: Add a wiki provider to see them here.
- label_edit: Edit XWiki provider
- name_placeholder: XWiki knowledge base
- name_caption: Give your storage a name so that users can differentiate between multiple wiki platforms.
- url_caption: Please add the host address of your wiki platform including the https://. It should not be longer than 255 characters.
- xwiki_instance: XWiki Instance
- xwiki_instance_description: Please make sure you have administration privileges in your XWiki instance before doing the setup.
- new_provider_html: Read our documentation on [setting up an XWiki integration](docs_url) for more information.
+ index_description: Ajoutez un service wiki externe pour lier les lots de travaux à des pages wiki existantes ou en créer de nouvelles directement à partir d'OpenProject.
+ label_wiki_platform: Fournisseur de wiki
+ label_add_new: Ajouter un nouveau fournisseur de wiki
+ label_new_xwiki_instance: Nouveau fournisseur XWiki
+ no_results_title: Vous n'avez pas encore de fournisseur de wiki.
+ no_results_description: Ajouter un fournisseur de wiki pour les voir ici.
+ label_edit: Modifier le fournisseur XWiki
+ name_placeholder: Base de connaissances XWiki
+ name_caption: Donnez à votre espace de stockage un nom pour permettre aux utilisateurs de le différencier des autres plateformes de wiki.
+ url_caption: Veuillez ajouter l'adresse d'hôte de votre plateforme wiki, y compris le https://. Elle ne doit pas dépasser 255 caractères.
+ xwiki_instance: Instance XWiki
+ xwiki_instance_description: Veuillez vous assurer que vous disposez des privilèges d'administration dans votre instance XWiki avant de procéder à l'installation.
+ new_provider_html: Lisez notre documentation sur [la configuration d'une intégration XWiki](docs_url) pour en savoir plus.
sections:
- basic_details: Basic details
- oauth_applications: OAuth applications
+ basic_details: Informations de base
+ oauth_applications: Applications OAuth
oauth:
- openproject_oauth: OpenProject OAuth
- openproject_oauth_description: Allow XWiki to access OpenProject data using an OAuth.
- xwiki_oauth: XWiki OAuth
- xwiki_oauth_description: Allow OpenProject to access XWiki data using an OAuth.
+ openproject_oauth: OAuth OpenProject
+ openproject_oauth_description: Autoriser XWiki à accéder aux données d'OpenProject en utilisant un OAuth.
+ xwiki_oauth: OAuth XWiki
+ xwiki_oauth_description: Autoriser OpenProject à accéder aux données XWiki en utilisant un OAuth.
delete:
- title: Delete wiki provider
- warning_html: You are about to delete %{wiki_provider}. This action is irreversible.
+ title: Supprimer le fournisseur de wiki
+ warning_html: Vous êtes sur le point de supprimer %{wiki_provider}. Cette action est irréversible.
diff --git a/modules/wikis/config/locales/crowdin/it.yml b/modules/wikis/config/locales/crowdin/it.yml
index 3a92c6f82d9..9eafa9859c6 100644
--- a/modules/wikis/config/locales/crowdin/it.yml
+++ b/modules/wikis/config/locales/crowdin/it.yml
@@ -3,51 +3,51 @@ it:
activerecord:
attributes:
wikis/xwiki_provider:
- name: Name
- url: Instance URL
- authentication_method: Authentication method
+ name: Nome
+ url: URL istanza
+ authentication_method: Metodo di autenticazione
authentication_methods:
- oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider
- two_way_oauth2: Two-way OAuth 2.0 authorization code flow
- token_exchange_scope: XWiki Scope
- wiki_audience: XWiki Audience
+ oauth2_sso: Single-Sign-On tramite OpenID Connect Identity Provider
+ two_way_oauth2: Flusso del codice di autorizzazione OAuth 2.0 bidirezionale
+ token_exchange_scope: Ambito XWiki
+ wiki_audience: Pubblico XWiki
errors: {}
models:
wikis/inline_page_link:
- one: Inline page link
- other: Inline page links
- wikis/internal_provider: Internal wiki
+ one: Collegamento pagina inline
+ other: Collegamenti alle pagine inline
+ wikis/internal_provider: Wiki interno
wikis/relation_page_link:
- one: Relation page link
- other: Relation page links
- wikis/xwiki_provider: XWiki provider
- project_module_wiki_platforms: Wiki providers
+ one: Link alla pagina delle relazioni
+ other: Link alle pagine delle relazioni
+ wikis/xwiki_provider: Fornitore XWiki
+ project_module_wiki_platforms: Fornitori Wiki
wikis:
buttons:
- save_and_continue: Save and continue
+ save_and_continue: Salva e continua
admin:
wiki_providers:
- index_description: Add an external wiki service to link work packages to existing wiki pages or create new ones directly from OpenProject.
- label_wiki_platform: Wiki provider
- label_add_new: Add new wiki provider
- label_new_xwiki_instance: New XWiki provider
- no_results_title: You don't have any wiki providers set up yet.
- no_results_description: Add a wiki provider to see them here.
- label_edit: Edit XWiki provider
- name_placeholder: XWiki knowledge base
- name_caption: Give your storage a name so that users can differentiate between multiple wiki platforms.
- url_caption: Please add the host address of your wiki platform including the https://. It should not be longer than 255 characters.
- xwiki_instance: XWiki Instance
- xwiki_instance_description: Please make sure you have administration privileges in your XWiki instance before doing the setup.
- new_provider_html: Read our documentation on [setting up an XWiki integration](docs_url) for more information.
+ index_description: Aggiungi un servizio wiki esterno per collegare le macro-attività a pagine wiki esistenti o crearne di nuove direttamente da OpenProject.
+ label_wiki_platform: Fornitore Wiki
+ label_add_new: Aggiungi nuovo fornitore wiki
+ label_new_xwiki_instance: Nuovo fornitore XWiki
+ no_results_title: Non ha ancora configurato alcun fornitore di wiki.
+ no_results_description: Aggiungi fornitori wiki per vederli qui.
+ label_edit: Modifica fornitore XWiki
+ name_placeholder: Base di conoscenza XWiki
+ name_caption: Assegna un nome all'archivio in modo che gli utenti possano distinguere tra più piattaforme wiki.
+ url_caption: Inserisci l'indirizzo host della tua piattaforma wiki, includendo https://. Non deve superare i 255 caratteri.
+ xwiki_instance: Istanza XWiki
+ xwiki_instance_description: Assicurati di avere privilegi di amministrazione nella tua istanza XWiki prima di procedere con la configurazione.
+ new_provider_html: Consulta la nostra documentazione su come [configurare un'integrazione con XWiki](docs_url) per maggiori informazioni.
sections:
- basic_details: Basic details
- oauth_applications: OAuth applications
+ basic_details: Informazioni base
+ oauth_applications: Applicazioni OAuth
oauth:
openproject_oauth: OpenProject OAuth
- openproject_oauth_description: Allow XWiki to access OpenProject data using an OAuth.
+ openproject_oauth_description: Consenti a XWiki di accedere ai dati di OpenProject utilizzando un OAuth.
xwiki_oauth: XWiki OAuth
- xwiki_oauth_description: Allow OpenProject to access XWiki data using an OAuth.
+ xwiki_oauth_description: Consenti a OpenProject di accedere ai dati XWiki utilizzando OAuth.
delete:
- title: Delete wiki provider
- warning_html: You are about to delete %{wiki_provider}. This action is irreversible.
+ title: Elimina fornitore wiki
+ warning_html: Stai per eliminare %{wiki_provider}. Questa azione è irreversibile.
diff --git a/modules/wikis/config/locales/crowdin/js-it.yml b/modules/wikis/config/locales/crowdin/js-it.yml
index 850feb7dd38..5589e49cd89 100644
--- a/modules/wikis/config/locales/crowdin/js-it.yml
+++ b/modules/wikis/config/locales/crowdin/js-it.yml
@@ -24,4 +24,4 @@ it:
js:
work_packages:
tabs:
- wikis: Wikis
+ wikis: Wiki
diff --git a/modules/wikis/config/locales/crowdin/js-ko.yml b/modules/wikis/config/locales/crowdin/js-ko.yml
index 44edd574f1b..405f2230c66 100644
--- a/modules/wikis/config/locales/crowdin/js-ko.yml
+++ b/modules/wikis/config/locales/crowdin/js-ko.yml
@@ -24,4 +24,4 @@ ko:
js:
work_packages:
tabs:
- wikis: Wikis
+ wikis: 위키
diff --git a/modules/wikis/config/locales/crowdin/js-uk.yml b/modules/wikis/config/locales/crowdin/js-uk.yml
index a498d58f1dd..ea9f2455957 100644
--- a/modules/wikis/config/locales/crowdin/js-uk.yml
+++ b/modules/wikis/config/locales/crowdin/js-uk.yml
@@ -24,4 +24,4 @@ uk:
js:
work_packages:
tabs:
- wikis: Wikis
+ wikis: Wiki-сторінки
diff --git a/modules/wikis/config/locales/crowdin/js-zh-CN.yml b/modules/wikis/config/locales/crowdin/js-zh-CN.yml
index 5ef4d4a345e..49a1189eb75 100644
--- a/modules/wikis/config/locales/crowdin/js-zh-CN.yml
+++ b/modules/wikis/config/locales/crowdin/js-zh-CN.yml
@@ -24,4 +24,4 @@ zh-CN:
js:
work_packages:
tabs:
- wikis: Wikis
+ wikis: Wiki
diff --git a/modules/wikis/config/locales/crowdin/ko.yml b/modules/wikis/config/locales/crowdin/ko.yml
index 06954b01fca..ce50746d18c 100644
--- a/modules/wikis/config/locales/crowdin/ko.yml
+++ b/modules/wikis/config/locales/crowdin/ko.yml
@@ -3,49 +3,49 @@ ko:
activerecord:
attributes:
wikis/xwiki_provider:
- name: Name
- url: Instance URL
- authentication_method: Authentication method
+ name: 이름
+ url: 인스턴스 URL
+ authentication_method: 인증 방법
authentication_methods:
- oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider
- two_way_oauth2: Two-way OAuth 2.0 authorization code flow
- token_exchange_scope: XWiki Scope
- wiki_audience: XWiki Audience
+ oauth2_sso: OpenID Connect ID 공급자를 통한 Single-Sign-On
+ two_way_oauth2: 양방향 OAuth 2.0 인증 코드 흐름
+ token_exchange_scope: XWiki 범위
+ wiki_audience: XWiki 오디언스
errors: {}
models:
wikis/inline_page_link:
- other: Inline page links
- wikis/internal_provider: Internal wiki
+ other: 인라인 페이지 링크
+ wikis/internal_provider: 내부 위키
wikis/relation_page_link:
- other: Relation page links
- wikis/xwiki_provider: XWiki provider
- project_module_wiki_platforms: Wiki providers
+ other: 관련 페이지 링크
+ wikis/xwiki_provider: XWiki 공급자
+ project_module_wiki_platforms: 위키 공급자
wikis:
buttons:
- save_and_continue: Save and continue
+ save_and_continue: 저장 및 계속
admin:
wiki_providers:
- index_description: Add an external wiki service to link work packages to existing wiki pages or create new ones directly from OpenProject.
- label_wiki_platform: Wiki provider
- label_add_new: Add new wiki provider
- label_new_xwiki_instance: New XWiki provider
- no_results_title: You don't have any wiki providers set up yet.
- no_results_description: Add a wiki provider to see them here.
- label_edit: Edit XWiki provider
- name_placeholder: XWiki knowledge base
- name_caption: Give your storage a name so that users can differentiate between multiple wiki platforms.
- url_caption: Please add the host address of your wiki platform including the https://. It should not be longer than 255 characters.
- xwiki_instance: XWiki Instance
- xwiki_instance_description: Please make sure you have administration privileges in your XWiki instance before doing the setup.
- new_provider_html: Read our documentation on [setting up an XWiki integration](docs_url) for more information.
+ index_description: 외부 위키 서비스를 추가하여 작업 패키지를 기존 위키 페이지에 링크하거나 OpenProject에서 직접 새로운 위키 페이지를 만듭니다.
+ label_wiki_platform: 위키 공급자
+ label_add_new: 새로운 위키 공급자 추가
+ label_new_xwiki_instance: 새로운 XWiki 공급자
+ no_results_title: 아직 설정한 위키 공급자가 없습니다.
+ no_results_description: 여기에서 보려면 위키 공급자를 추가합니다.
+ label_edit: XWiki 공급자 편집
+ name_placeholder: XWiki 지식 베이스
+ name_caption: 사용자가 여러 위키 플랫폼 간에 구분할 수 있도록 저장소에 이름을 지정하세요.
+ url_caption: https://를 포함하여 위키 플랫폼의 호스트 주소를 추가하세요. 255자 이하여야 합니다.
+ xwiki_instance: XWiki 인스턴스
+ xwiki_instance_description: 설정을 수행하기 전에 XWiki 인스턴스에 관리 권한이 있는지 확인하세요.
+ new_provider_html: 자세한 내용은 [XWiki 통합 설정] 관련 문서(docs_url)를 참조하세요.
sections:
- basic_details: Basic details
- oauth_applications: OAuth applications
+ basic_details: 기본 세부 정보
+ oauth_applications: OAuth 애플리케이션
oauth:
openproject_oauth: OpenProject OAuth
- openproject_oauth_description: Allow XWiki to access OpenProject data using an OAuth.
+ openproject_oauth_description: XWiki가 OAuth를 사용하여 OpenProject 데이터에 액세스하도록 허용합니다.
xwiki_oauth: XWiki OAuth
- xwiki_oauth_description: Allow OpenProject to access XWiki data using an OAuth.
+ xwiki_oauth_description: OpenProject가 OAuth를 사용하여 XWiki 데이터에 액세스하도록 허용합니다.
delete:
- title: Delete wiki provider
- warning_html: You are about to delete %{wiki_provider}. This action is irreversible.
+ title: 위키 공급자 삭제
+ warning_html: "%{wiki_provider}을(를) 삭제하려고 합니다. 이 작업은 되돌릴 수 없습니다."
diff --git a/modules/wikis/config/locales/crowdin/pt-BR.yml b/modules/wikis/config/locales/crowdin/pt-BR.yml
index 5d4c018fd31..d8d1ba9fbff 100644
--- a/modules/wikis/config/locales/crowdin/pt-BR.yml
+++ b/modules/wikis/config/locales/crowdin/pt-BR.yml
@@ -4,50 +4,50 @@ pt-BR:
attributes:
wikis/xwiki_provider:
name: Nome
- url: Instance URL
- authentication_method: Authentication method
+ url: URL da Instância
+ authentication_method: Método de autenticação
authentication_methods:
- oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider
- two_way_oauth2: Two-way OAuth 2.0 authorization code flow
+ oauth2_sso: Single-Sign-On por meio de provedor de identidade OpenID Connect
+ two_way_oauth2: Fluxo de código de autorização OAuth 2.0 bidirecional
token_exchange_scope: XWiki Scope
- wiki_audience: XWiki Audience
+ wiki_audience: Audiência XWiki
errors: {}
models:
wikis/inline_page_link:
- one: Inline page link
- other: Inline page links
- wikis/internal_provider: Internal wiki
+ one: Link de página em linha
+ other: Links de página em linha
+ wikis/internal_provider: Wiki interna
wikis/relation_page_link:
- one: Relation page link
- other: Relation page links
- wikis/xwiki_provider: XWiki provider
- project_module_wiki_platforms: Wiki providers
+ one: Link de página de relação
+ other: Links de página de relação
+ wikis/xwiki_provider: Provedor XWiki
+ project_module_wiki_platforms: Provedores de wiki
wikis:
buttons:
- save_and_continue: Save and continue
+ save_and_continue: Salvar e continuar
admin:
wiki_providers:
- index_description: Add an external wiki service to link work packages to existing wiki pages or create new ones directly from OpenProject.
- label_wiki_platform: Wiki provider
- label_add_new: Add new wiki provider
- label_new_xwiki_instance: New XWiki provider
- no_results_title: You don't have any wiki providers set up yet.
- no_results_description: Add a wiki provider to see them here.
- label_edit: Edit XWiki provider
- name_placeholder: XWiki knowledge base
- name_caption: Give your storage a name so that users can differentiate between multiple wiki platforms.
- url_caption: Please add the host address of your wiki platform including the https://. It should not be longer than 255 characters.
- xwiki_instance: XWiki Instance
- xwiki_instance_description: Please make sure you have administration privileges in your XWiki instance before doing the setup.
- new_provider_html: Read our documentation on [setting up an XWiki integration](docs_url) for more information.
+ index_description: Adicione um serviço de wiki externo para vincular pacotes de trabalho a páginas de wiki existentes ou criar novas diretamente a partir do OpenProject.
+ label_wiki_platform: Provedor de wiki
+ label_add_new: Adicionar novo provedor de wiki
+ label_new_xwiki_instance: Novo provedor XWiki
+ no_results_title: Você ainda não tem nenhum provedor de wiki configurado.
+ no_results_description: Adicione um provedor de wiki para visualizá-los aqui.
+ label_edit: Editar provedor XWiki
+ name_placeholder: Base de conhecimento XWiki
+ name_caption: Dê um nome ao seu armazenamento para que os usuários possam diferenciar entre múltiplas plataformas de wiki.
+ url_caption: Informe o endereço do host da sua plataforma de wiki, incluindo o https://. O endereço não deve ter mais de 255 caracteres.
+ xwiki_instance: Instância XWiki
+ xwiki_instance_description: Certifique-se de que você tem privilégios de administração na sua instância XWiki antes de realizar a configuração.
+ new_provider_html: Leia nossa documentação sobre [configuração de uma integração com o XWiki](docs_url) para mais informações.
sections:
- basic_details: Basic details
- oauth_applications: OAuth applications
+ basic_details: Detalhes básicos
+ oauth_applications: Aplicações OAuth
oauth:
- openproject_oauth: OpenProject OAuth
- openproject_oauth_description: Allow XWiki to access OpenProject data using an OAuth.
- xwiki_oauth: XWiki OAuth
- xwiki_oauth_description: Allow OpenProject to access XWiki data using an OAuth.
+ openproject_oauth: OAuth do OpenProject
+ openproject_oauth_description: Permitir que o XWiki acesse dados do OpenProject usando OAuth.
+ xwiki_oauth: OAuth do XWiki
+ xwiki_oauth_description: Permitir que o OpenProject acesse dados do XWiki usando OAuth.
delete:
- title: Delete wiki provider
- warning_html: You are about to delete %{wiki_provider}. This action is irreversible.
+ title: Excluir provedor wiki
+ warning_html: Você está prestes a excluir %{wiki_provider}. Esta ação é irreversível.
diff --git a/modules/wikis/config/locales/crowdin/uk.yml b/modules/wikis/config/locales/crowdin/uk.yml
index b0ca7841d5e..0c23ddb1545 100644
--- a/modules/wikis/config/locales/crowdin/uk.yml
+++ b/modules/wikis/config/locales/crowdin/uk.yml
@@ -4,54 +4,54 @@ uk:
attributes:
wikis/xwiki_provider:
name: Назва
- url: Instance URL
+ url: URL-адреса екземпляра
authentication_method: Метод автентифікації
authentication_methods:
oauth2_sso: Єдиний вхід через постачальника ідентифікаційних даних OpenID Connect
two_way_oauth2: Потік коду двосторонньої авторизації OAuth 2.0
- token_exchange_scope: XWiki Scope
- wiki_audience: XWiki Audience
+ token_exchange_scope: Область XWiki
+ wiki_audience: Аудиторія XWiki
errors: {}
models:
wikis/inline_page_link:
- one: Inline page link
- few: Inline page links
- many: Inline page links
- other: Inline page links
- wikis/internal_provider: Internal wiki
+ one: Вставлене посилання на сторінку
+ few: Вставлені посилання на сторінку
+ many: Вставлені посилання на сторінку
+ other: Вставлені посилання на сторінку
+ wikis/internal_provider: Внутрішній модуль Wiki
wikis/relation_page_link:
- one: Relation page link
- few: Relation page links
- many: Relation page links
- other: Relation page links
- wikis/xwiki_provider: XWiki provider
- project_module_wiki_platforms: Wiki providers
+ one: Посилання на пов’язану сторінку
+ few: Посилання на пов’язані сторінки
+ many: Посилання на пов’язані сторінки
+ other: Посилання на пов’язані сторінки
+ wikis/xwiki_provider: Постачальник XWiki
+ project_module_wiki_platforms: Постачальники Wiki
wikis:
buttons:
save_and_continue: Зберегти та продовжити
admin:
wiki_providers:
- index_description: Add an external wiki service to link work packages to existing wiki pages or create new ones directly from OpenProject.
- label_wiki_platform: Wiki provider
- label_add_new: Add new wiki provider
- label_new_xwiki_instance: New XWiki provider
- no_results_title: You don't have any wiki providers set up yet.
- no_results_description: Add a wiki provider to see them here.
- label_edit: Edit XWiki provider
- name_placeholder: XWiki knowledge base
- name_caption: Give your storage a name so that users can differentiate between multiple wiki platforms.
- url_caption: Please add the host address of your wiki platform including the https://. It should not be longer than 255 characters.
- xwiki_instance: XWiki Instance
- xwiki_instance_description: Please make sure you have administration privileges in your XWiki instance before doing the setup.
- new_provider_html: Read our documentation on [setting up an XWiki integration](docs_url) for more information.
+ index_description: Додайте зовнішній сервіс Wiki, щоб зв’язувати пакети робіт із наявними сторінками Wiki або створювати нові безпосередньо в OpenProject.
+ label_wiki_platform: Постачальник Wiki
+ label_add_new: Додати нового постачальника Wiki
+ label_new_xwiki_instance: Новий постачальник XWiki
+ no_results_title: Ви ще не налаштували жодного постачальника Wiki.
+ no_results_description: Додайте постачальника Wiki, і він з’явиться тут.
+ label_edit: Редагувати постачальника XWiki
+ name_placeholder: База знань XWiki
+ name_caption: Назвіть своє сховище, щоб користувачі могли відрізняти його від інших платформ Wiki.
+ url_caption: Додайте адресу хосту вашої платформи Wiki, не випускаючи https://. Її довжина не може перевищувати 255 символів.
+ xwiki_instance: Екземпляр XWiki
+ xwiki_instance_description: Переконайтеся, що ви маєте права адміністратора у своєму екземплярі XWiki, перш ніж виконувати налаштування.
+ new_provider_html: Щоб дізнатися більше, перегляньте документацію про [налаштування інтеграції з XWiki](docs_url).
sections:
basic_details: Основна інформація
oauth_applications: Програми OAuth
oauth:
openproject_oauth: OpenProject OAuth
- openproject_oauth_description: Allow XWiki to access OpenProject data using an OAuth.
- xwiki_oauth: XWiki OAuth
- xwiki_oauth_description: Allow OpenProject to access XWiki data using an OAuth.
+ openproject_oauth_description: Надайте XWiki доступ до даних OpenProject за допомогою OAuth.
+ xwiki_oauth: OAuth для XWiki
+ xwiki_oauth_description: Надайте OpenProject доступ до даних XWiki за допомогою OAuth.
delete:
- title: Delete wiki provider
- warning_html: You are about to delete %{wiki_provider}. This action is irreversible.
+ title: Видалити постачальника Wiki
+ warning_html: Ви збираєтеся видалити %{wiki_provider}. Ця дія є незворотною.
diff --git a/modules/wikis/config/locales/crowdin/zh-CN.yml b/modules/wikis/config/locales/crowdin/zh-CN.yml
index 6f2dd5abe8f..630ee99ad15 100644
--- a/modules/wikis/config/locales/crowdin/zh-CN.yml
+++ b/modules/wikis/config/locales/crowdin/zh-CN.yml
@@ -3,49 +3,57 @@ zh-CN:
activerecord:
attributes:
wikis/xwiki_provider:
- name: Name
- url: Instance URL
- authentication_method: Authentication method
+ name: 名称
+ url: 实例 URL
+ authentication_method: 身份验证方式
authentication_methods:
- oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider
- two_way_oauth2: Two-way OAuth 2.0 authorization code flow
- token_exchange_scope: XWiki Scope
- wiki_audience: XWiki Audience
+ oauth2_sso: 通过 OpenID Connect 身份提供程序进行单点登录
+ two_way_oauth2: 双向 OAuth 2.0 授权代码流
+ token_exchange_scope: XWiki 范围
+ wiki_audience: XWiki 受众
errors: {}
models:
wikis/inline_page_link:
- other: Inline page links
- wikis/internal_provider: Internal wiki
+ other: |-
+ One
+ 内联页面链接
+ Other
+ 内联页面链接
+ wikis/internal_provider: 内部 wiki
wikis/relation_page_link:
- other: Relation page links
- wikis/xwiki_provider: XWiki provider
- project_module_wiki_platforms: Wiki providers
+ other: |-
+ One
+ 关联页面链接
+ Other
+ 关联页面链接
+ wikis/xwiki_provider: XWiki 提供程序
+ project_module_wiki_platforms: Wiki 提供程序
wikis:
buttons:
- save_and_continue: Save and continue
+ save_and_continue: 保存并继续
admin:
wiki_providers:
- index_description: Add an external wiki service to link work packages to existing wiki pages or create new ones directly from OpenProject.
- label_wiki_platform: Wiki provider
- label_add_new: Add new wiki provider
- label_new_xwiki_instance: New XWiki provider
- no_results_title: You don't have any wiki providers set up yet.
- no_results_description: Add a wiki provider to see them here.
- label_edit: Edit XWiki provider
- name_placeholder: XWiki knowledge base
- name_caption: Give your storage a name so that users can differentiate between multiple wiki platforms.
- url_caption: Please add the host address of your wiki platform including the https://. It should not be longer than 255 characters.
- xwiki_instance: XWiki Instance
- xwiki_instance_description: Please make sure you have administration privileges in your XWiki instance before doing the setup.
- new_provider_html: Read our documentation on [setting up an XWiki integration](docs_url) for more information.
+ index_description: 添加外部 wiki 服务,以将工作包链接到现有 wiki 页面,或直接从 OpenProject 创建新页面。
+ label_wiki_platform: Wiki 提供程序
+ label_add_new: 添加新 wiki 提供程序
+ label_new_xwiki_instance: 新建 XWiki 提供程序
+ no_results_title: 您尚未设置任何 wiki 提供程序。
+ no_results_description: 添加 wiki 提供程序,以在此处查看相关内容。
+ label_edit: 编辑 XWiki 提供程序
+ name_placeholder: XWiki 知识库
+ name_caption: 为您的存储命名,以便用户可以区分多个 wiki 平台。
+ url_caption: 请添加 wiki 平台的主机地址(包含 https://)。该地址的长度不应超过 255 个字符。
+ xwiki_instance: XWiki 实例
+ xwiki_instance_description: 在进行设置之前,请确保您在 XWiki 实例中具有管理权限。
+ new_provider_html: 请阅读我们关于[设置 XWiki 注册](docs_url)的文档,以获取更多信息。
sections:
- basic_details: Basic details
- oauth_applications: OAuth applications
+ basic_details: 基本详细信息
+ oauth_applications: OAuth 应用程序
oauth:
openproject_oauth: OpenProject OAuth
- openproject_oauth_description: Allow XWiki to access OpenProject data using an OAuth.
+ openproject_oauth_description: 允许 XWiki 使用 OAuth 访问 OpenProject 数据。
xwiki_oauth: XWiki OAuth
- xwiki_oauth_description: Allow OpenProject to access XWiki data using an OAuth.
+ xwiki_oauth_description: 允许 OpenProject 使用 OAuth 访问 XWiki 数据。
delete:
- title: Delete wiki provider
- warning_html: You are about to delete %{wiki_provider}. This action is irreversible.
+ title: 删除 wiki 提供程序
+ warning_html: 您即将删除 %{wiki_provider}。此操作不可逆。
diff --git a/modules/wikis/config/locales/en.yml b/modules/wikis/config/locales/en.yml
index 4334e0244be..4a6c4e3067a 100644
--- a/modules/wikis/config/locales/en.yml
+++ b/modules/wikis/config/locales/en.yml
@@ -5,6 +5,7 @@ en:
wikis/xwiki_provider:
name: Name
url: Instance URL
+ universal_identifier: Universal identifier
authentication_method: Authentication method
authentication_methods:
oauth2_sso: Single-Sign-On through OpenID Connect Identity Provider
diff --git a/modules/wikis/frontend/module/main.ts b/modules/wikis/frontend/module/main.ts
index 7a4f3d22d88..f4f5ebbd8e6 100644
--- a/modules/wikis/frontend/module/main.ts
+++ b/modules/wikis/frontend/module/main.ts
@@ -25,14 +25,16 @@
// See COPYRIGHT and LICENSE files for more details.
import { CUSTOM_ELEMENTS_SCHEMA, Injector, NgModule } from '@angular/core';
+
+import { I18nService } from 'core-app/core/i18n/i18n.service';
import { OpSharedModule } from 'core-app/shared/shared.module';
-import { OpenprojectTabsModule } from 'core-app/shared/components/tabs/openproject-tabs.module';
import { ConfigurationService } from 'core-app/core/config/configuration.service';
+import { OpenprojectTabsModule } from 'core-app/shared/components/tabs/openproject-tabs.module';
import {
WorkPackageTabsService,
} from 'core-app/features/work-packages/components/wp-tabs/services/wp-tabs/wp-tabs.service';
+
import { WikisTabComponent } from './wikis-tab/wikis-tab.component';
-import { I18nService } from 'core-app/core/i18n/i18n.service';
export function initializeWikiPlugin(injector:Injector) {
const wpTabService = injector.get(WorkPackageTabsService);
diff --git a/modules/wikis/frontend/module/wikis-tab/wikis-tab.component.ts b/modules/wikis/frontend/module/wikis-tab/wikis-tab.component.ts
index 2912db3e6d8..6a40bfdc7cf 100644
--- a/modules/wikis/frontend/module/wikis-tab/wikis-tab.component.ts
+++ b/modules/wikis/frontend/module/wikis-tab/wikis-tab.component.ts
@@ -27,6 +27,7 @@
//++
import { ChangeDetectionStrategy, Component, ElementRef, Input, OnInit } from '@angular/core';
+
import { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';
import { TabComponent } from 'core-app/features/work-packages/components/wp-tabs/components/wp-tab-wrapper/tab';
import { I18nService } from 'core-app/core/i18n/i18n.service';
diff --git a/modules/wikis/frontend/tsconfig.json b/modules/wikis/frontend/tsconfig.json
new file mode 100644
index 00000000000..1336a3012d1
--- /dev/null
+++ b/modules/wikis/frontend/tsconfig.json
@@ -0,0 +1,13 @@
+{
+ "extends": "../../../frontend/tsconfig.json",
+ "compilerOptions": {
+ "baseUrl": "../../../frontend",
+ "typeRoots": [
+ "../../../frontend/node_modules/@types",
+ "../../../frontend/node_modules"
+ ]
+ },
+ "include": [
+ "**/*.ts"
+ ]
+}
diff --git a/modules/wikis/spec/contracts/wikis/xwiki_providers/base_contract_spec.rb b/modules/wikis/spec/contracts/wikis/xwiki_providers/base_contract_spec.rb
new file mode 100644
index 00000000000..61f1395d593
--- /dev/null
+++ b/modules/wikis/spec/contracts/wikis/xwiki_providers/base_contract_spec.rb
@@ -0,0 +1,79 @@
+# frozen_string_literal: true
+
+#-- copyright
+# OpenProject is an open source project management software.
+# Copyright (C) the OpenProject GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License version 3.
+#
+# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
+# Copyright (C) 2006-2013 Jean-Philippe Lang
+# Copyright (C) 2010-2013 the ChiliProject Team
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# See COPYRIGHT and LICENSE files for more details.
+#++
+
+require "spec_helper"
+require "contracts/shared/model_contract_shared_context"
+
+RSpec.describe Wikis::XWikiProviders::BaseContract do
+ include_context "ModelContract shared context"
+
+ let(:wiki_provider) { build_stubbed(:xwiki_provider) }
+ let(:contract) { described_class.new(wiki_provider, current_user) }
+
+ it_behaves_like "contract is valid for active admins and invalid for regular users"
+
+ describe "name" do
+ let(:current_user) { build_stubbed(:admin) }
+
+ context "when blank" do
+ let(:wiki_provider) { build_stubbed(:xwiki_provider, name: "") }
+
+ include_examples "contract is invalid", name: :blank
+ end
+
+ context "when too long" do
+ let(:wiki_provider) { build_stubbed(:xwiki_provider, name: "x" * 256) }
+
+ include_examples "contract is invalid", name: :too_long
+ end
+ end
+
+ describe "url" do
+ let(:current_user) { build_stubbed(:admin) }
+
+ context "when blank" do
+ let(:wiki_provider) { build_stubbed(:xwiki_provider, url: "") }
+
+ include_examples "contract is invalid", url: :blank
+ end
+
+ context "when not https" do
+ let(:wiki_provider) { build_stubbed(:xwiki_provider, url: "http://xwiki.example.com") }
+
+ include_examples "contract is invalid", url: :url_not_secure_context
+ end
+
+ context "when too long" do
+ let(:wiki_provider) { build_stubbed(:xwiki_provider, url: "https://#{'x' * 250}.com") }
+
+ include_examples "contract is invalid", url: :too_long
+ end
+ end
+end
diff --git a/modules/wikis/spec/contracts/wikis/xwiki_providers/create_contract_spec.rb b/modules/wikis/spec/contracts/wikis/xwiki_providers/create_contract_spec.rb
new file mode 100644
index 00000000000..e9f9ac6f016
--- /dev/null
+++ b/modules/wikis/spec/contracts/wikis/xwiki_providers/create_contract_spec.rb
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+#-- copyright
+# OpenProject is an open source project management software.
+# Copyright (C) the OpenProject GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License version 3.
+#
+# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
+# Copyright (C) 2006-2013 Jean-Philippe Lang
+# Copyright (C) 2010-2013 the ChiliProject Team
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# See COPYRIGHT and LICENSE files for more details.
+#++
+
+require "spec_helper"
+require "contracts/shared/model_contract_shared_context"
+
+RSpec.describe Wikis::XWikiProviders::CreateContract do
+ include_context "ModelContract shared context"
+
+ let(:wiki_provider) { build_stubbed(:xwiki_provider) }
+ let(:contract) { described_class.new(wiki_provider, current_user) }
+
+ it_behaves_like "contract is valid for active admins and invalid for regular users"
+end
diff --git a/modules/wikis/spec/contracts/wikis/xwiki_providers/delete_contract_spec.rb b/modules/wikis/spec/contracts/wikis/xwiki_providers/delete_contract_spec.rb
new file mode 100644
index 00000000000..5b1ead70068
--- /dev/null
+++ b/modules/wikis/spec/contracts/wikis/xwiki_providers/delete_contract_spec.rb
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+#-- copyright
+# OpenProject is an open source project management software.
+# Copyright (C) the OpenProject GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License version 3.
+#
+# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
+# Copyright (C) 2006-2013 Jean-Philippe Lang
+# Copyright (C) 2010-2013 the ChiliProject Team
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# See COPYRIGHT and LICENSE files for more details.
+#++
+
+require "spec_helper"
+require "contracts/shared/model_contract_shared_context"
+
+RSpec.describe Wikis::XWikiProviders::DeleteContract do
+ include_context "ModelContract shared context"
+
+ let(:wiki_provider) { build_stubbed(:xwiki_provider) }
+ let(:contract) { described_class.new(wiki_provider, current_user) }
+
+ it_behaves_like "contract is valid for active admins and invalid for regular users"
+end
diff --git a/modules/wikis/spec/contracts/wikis/xwiki_providers/update_contract_spec.rb b/modules/wikis/spec/contracts/wikis/xwiki_providers/update_contract_spec.rb
new file mode 100644
index 00000000000..75364dcbaab
--- /dev/null
+++ b/modules/wikis/spec/contracts/wikis/xwiki_providers/update_contract_spec.rb
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+#-- copyright
+# OpenProject is an open source project management software.
+# Copyright (C) the OpenProject GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License version 3.
+#
+# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
+# Copyright (C) 2006-2013 Jean-Philippe Lang
+# Copyright (C) 2010-2013 the ChiliProject Team
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# See COPYRIGHT and LICENSE files for more details.
+#++
+
+require "spec_helper"
+require "contracts/shared/model_contract_shared_context"
+
+RSpec.describe Wikis::XWikiProviders::UpdateContract do
+ include_context "ModelContract shared context"
+
+ let(:wiki_provider) { build_stubbed(:xwiki_provider) }
+ let(:contract) { described_class.new(wiki_provider, current_user) }
+
+ it_behaves_like "contract is valid for active admins and invalid for regular users"
+end
diff --git a/modules/wikis/spec/controllers/wikis/admin/wiki_providers_controller_spec.rb b/modules/wikis/spec/controllers/wikis/admin/wiki_providers_controller_spec.rb
index 2a2ef47000c..40a8f46a2ea 100644
--- a/modules/wikis/spec/controllers/wikis/admin/wiki_providers_controller_spec.rb
+++ b/modules/wikis/spec/controllers/wikis/admin/wiki_providers_controller_spec.rb
@@ -23,7 +23,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See COPYRIGHT and LICENSE files for more details.
#++
diff --git a/modules/wikis/spec/services/wikis/xwiki_providers/create_service_spec.rb b/modules/wikis/spec/services/wikis/xwiki_providers/create_service_spec.rb
new file mode 100644
index 00000000000..9c30d9d08c4
--- /dev/null
+++ b/modules/wikis/spec/services/wikis/xwiki_providers/create_service_spec.rb
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+#-- copyright
+# OpenProject is an open source project management software.
+# Copyright (C) the OpenProject GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License version 3.
+#
+# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
+# Copyright (C) 2006-2013 Jean-Philippe Lang
+# Copyright (C) 2010-2013 the ChiliProject Team
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# See COPYRIGHT and LICENSE files for more details.
+#++
+
+require "spec_helper"
+
+require "services/base_services/behaves_like_create_service"
+
+RSpec.describe Wikis::XWikiProviders::CreateService, type: :model do
+ it_behaves_like "BaseServices create service" do
+ let(:factory) { :xwiki_provider }
+ let(:call_attributes) { { name: "My XWiki", url: "https://xwiki.example.com" } }
+ let!(:model_instance) { build_stubbed(factory, name: "My XWiki", url: "https://xwiki.example.com") }
+ end
+end
diff --git a/modules/wikis/spec/services/wikis/xwiki_providers/delete_service_spec.rb b/modules/wikis/spec/services/wikis/xwiki_providers/delete_service_spec.rb
new file mode 100644
index 00000000000..72cd9511406
--- /dev/null
+++ b/modules/wikis/spec/services/wikis/xwiki_providers/delete_service_spec.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+#-- copyright
+# OpenProject is an open source project management software.
+# Copyright (C) the OpenProject GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License version 3.
+#
+# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
+# Copyright (C) 2006-2013 Jean-Philippe Lang
+# Copyright (C) 2010-2013 the ChiliProject Team
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# See COPYRIGHT and LICENSE files for more details.
+#++
+
+require "spec_helper"
+
+require "services/base_services/behaves_like_delete_service"
+
+RSpec.describe Wikis::XWikiProviders::DeleteService, type: :model do
+ it_behaves_like "BaseServices delete service" do
+ let(:factory) { :xwiki_provider }
+ end
+end
diff --git a/modules/wikis/spec/services/wikis/xwiki_providers/update_service_spec.rb b/modules/wikis/spec/services/wikis/xwiki_providers/update_service_spec.rb
new file mode 100644
index 00000000000..f560e84041a
--- /dev/null
+++ b/modules/wikis/spec/services/wikis/xwiki_providers/update_service_spec.rb
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+#-- copyright
+# OpenProject is an open source project management software.
+# Copyright (C) the OpenProject GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License version 3.
+#
+# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
+# Copyright (C) 2006-2013 Jean-Philippe Lang
+# Copyright (C) 2010-2013 the ChiliProject Team
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# See COPYRIGHT and LICENSE files for more details.
+#++
+
+require "spec_helper"
+
+require "services/base_services/behaves_like_update_service"
+
+RSpec.describe Wikis::XWikiProviders::UpdateService, type: :model do
+ it_behaves_like "BaseServices update service" do
+ let(:factory) { :xwiki_provider }
+ let(:call_attributes) { { name: "Updated XWiki" } }
+ let!(:model_instance) { build_stubbed(factory, name: "My XWiki", url: "https://xwiki.example.com") }
+ end
+end
diff --git a/spec/.rubocop.yml b/spec/.rubocop.yml
deleted file mode 100644
index ff1f8b1ad6d..00000000000
--- a/spec/.rubocop.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-inherit_from: ../.rubocop.yml
-
-Style/RescueModifier:
- Enabled: false
-
-Rails/FindEach:
- Enabled: false
-
-Rails/SaveBang:
- Enabled: false
diff --git a/spec/features/work_packages/tabs/relations_children_spec.rb b/spec/features/work_packages/tabs/relations_children_spec.rb
index 2c75c4c267b..917d1dec05c 100644
--- a/spec/features/work_packages/tabs/relations_children_spec.rb
+++ b/spec/features/work_packages/tabs/relations_children_spec.rb
@@ -58,6 +58,8 @@ RSpec.describe "Relations children tab", :js, :with_cuprite do
wait_for_network_idle
+ expect_and_dismiss_flash type: :success, exact_message: "New work package created and added as a child"
+
page.within("#work-package-relations-tab-content") do
expect(page).to have_content("Hello there")
expect(page).to have_content("RISK")
@@ -83,6 +85,8 @@ RSpec.describe "Relations children tab", :js, :with_cuprite do
wait_for_network_idle
+ expect_and_dismiss_flash type: :success, exact_message: "New work package created and added as a child"
+
page.within("#work-package-relations-tab-content") do
expect(page).to have_content("Hello there")
expect(page).to have_content("RISK")
@@ -136,6 +140,8 @@ RSpec.describe "Relations children tab", :js, :with_cuprite do
wait_for_network_idle
+ expect_and_dismiss_flash type: :success, exact_message: "New work package created and added as a child"
+
page.within("#work-package-relations-tab-content") do
expect(page).to have_content("Hello there")
expect(page).to have_content("TASK")
diff --git a/spec/models/import/jira_import_spec.rb b/spec/models/import/jira_import_spec.rb
index ebe66e48053..c0453639631 100644
--- a/spec/models/import/jira_import_spec.rb
+++ b/spec/models/import/jira_import_spec.rb
@@ -32,7 +32,8 @@ require "spec_helper"
RSpec.describe Import::JiraImport do
let(:jira) { create(:jira) }
- let(:author) { create(:user) }
+ let(:author_password) { OpenProject::Passwords::Generator.random_password }
+ let(:author) { create(:user, password: author_password, password_confirmation: author_password) }
subject(:jira_import) { create(:jira_import, jira:, author:) }
@@ -132,4 +133,332 @@ RSpec.describe Import::JiraImport do
expect(Import::JiraField.exists?(other_field.id)).to be true
end
end
+
+ describe "#import_users", with_settings: {
+ password_active_rules: %w(lowercase uppercase numeric special),
+ password_min_length: 4,
+ password_min_adhered_rules: 4
+ } do
+ def jira_user_payload(name:, display_name:, email:, groups: [], key: "JIRAUSER10000", active: true)
+ {
+ "key" => key,
+ "name" => name,
+ "self" => "https://jira-dc.openproject.org/rest/api/2/user?username=#{name}",
+ "active" => active,
+ "expand" => "groups,applicationRoles",
+ "groups" => {
+ "size" => groups.size,
+ "items" => groups.map { |g| { "name" => g, "self" => "https://jira-dc.openproject.org/rest/api/2/group?groupname=#{g}" } }
+ },
+ "locale" => "en_US",
+ "deleted" => false,
+ "timeZone" => "Europe/Berlin",
+ "avatarUrls" => {
+ "16x16" => "https://www.gravatar.com/avatar/abc?d=mm&s=16",
+ "24x24" => "https://www.gravatar.com/avatar/abc?d=mm&s=24",
+ "32x32" => "https://www.gravatar.com/avatar/abc?d=mm&s=32",
+ "48x48" => "https://www.gravatar.com/avatar/abc?d=mm&s=48"
+ },
+ "displayName" => display_name,
+ "emailAddress" => email,
+ "lastLoginTime" => "2026-03-26T08:49:31+0000",
+ "applicationRoles" => { "size" => 1, "items" => [] }
+ }
+ end
+
+ let(:email) { "jdoe@example.com" }
+ let(:existing_user_password) { OpenProject::Passwords::Generator.random_password }
+
+ # creates system user proactively. so, next coming User.count change cases don't count
+ # this one as created during #import_users call.
+ before { User.system }
+
+ context "when importing a new user without groups" do
+ let!(:jira_user) do
+ create(:jira_user,
+ jira:,
+ jira_import:,
+ payload: jira_user_payload(
+ key: "JIRAUSER10100",
+ name: "jdoe@example.com",
+ display_name: "John Doe",
+ email:,
+ groups: []
+ ))
+ end
+
+ it "creates a new OpenProject user" do
+ expect { jira_import.import_users }.to change(User, :count).by(1)
+ end
+
+ it "creates the user with correct attributes" do
+ jira_import.import_users
+
+ user = User.find_by(login: email)
+ expect(user).to have_attributes(
+ firstname: "John",
+ lastname: "Doe",
+ mail: email,
+ status: "locked"
+ )
+ end
+
+ it "creates a reference between Jira user and OpenProject user" do
+ expect { jira_import.import_users }.to change(Import::JiraOpenProjectReference, :count).by(1)
+
+ reference = Import::JiraOpenProjectReference.last
+ expect(reference).to have_attributes(
+ jira_entity_id: jira_user.id.to_s,
+ jira_entity_class: "Import::JiraUser",
+ op_entity_class: "User",
+ uses_existing: false
+ )
+ end
+ end
+
+ context "when importing a user that already exists by email" do
+ let!(:existing_user) do
+ create(:user,
+ mail: email,
+ password: existing_user_password,
+ password_confirmation: existing_user_password,
+ login: "login")
+ end
+ let!(:jira_user) do
+ create(:jira_user,
+ jira:,
+ jira_import:,
+ payload: jira_user_payload(
+ key: "JIRAUSER10101",
+ name: "jdoe@example.com",
+ display_name: "John Doe",
+ email:,
+ groups: []
+ ))
+ end
+
+ it "does not create a new user" do
+ expect { jira_import.import_users }.not_to change(User, :count)
+ end
+
+ it "creates a reference to the existing user with uses_existing flag" do
+ jira_import.import_users
+
+ reference = Import::JiraOpenProjectReference.find_by(jira_entity_id: jira_user.id)
+ expect(reference).to have_attributes(
+ jira_entity_id: jira_user.id.to_s,
+ jira_entity_class: "Import::JiraUser",
+ op_entity_id: existing_user.id.to_s,
+ op_entity_class: "User",
+ uses_existing: true
+ )
+ end
+ end
+
+ context "when importing a user that already exists by login" do
+ let(:login) { "login" }
+ let!(:existing_user) do
+ create(:user,
+ mail: "other@example.com",
+ password_confirmation: existing_user_password,
+ password: existing_user_password,
+ login:)
+ end
+ let!(:jira_user) do
+ create(:jira_user,
+ jira:,
+ jira_import:,
+ payload: jira_user_payload(
+ key: "JIRAUSER10102",
+ name: login,
+ display_name: "John Doe",
+ email:,
+ groups: []
+ ))
+ end
+
+ it "does not create a new user" do
+ expect { jira_import.import_users }.not_to change(User, :count)
+ end
+
+ it "creates a reference to the existing user with uses_existing flag" do
+ jira_import.import_users
+
+ reference = Import::JiraOpenProjectReference.find_by(jira_entity_id: jira_user.id)
+ expect(reference).to have_attributes(
+ jira_entity_id: jira_user.id.to_s,
+ jira_entity_class: "Import::JiraUser",
+ op_entity_id: existing_user.id.to_s,
+ op_entity_class: "User",
+ uses_existing: true
+ )
+ end
+ end
+
+ context "when importing a user with groups" do
+ let!(:jira_user) do
+ create(:jira_user,
+ jira:,
+ jira_import:,
+ payload: jira_user_payload(
+ key: "JIRAUSER10103",
+ name: "j.roth@openproject.com",
+ display_name: "Judith Roth",
+ email: "j.roth@openproject.com",
+ groups: ["jira-administrators", "jira-software-users"]
+ ))
+ end
+
+ it "creates the groups" do
+ expect { jira_import.import_users }.to change(Group, :count).by(2)
+
+ expect(Group.exists?(name: "jira-administrators")).to be true
+ expect(Group.exists?(name: "jira-software-users")).to be true
+ end
+
+ it "adds the user to the groups" do
+ jira_import.import_users
+
+ user = User.find_by(login: "j.roth@openproject.com")
+ expect(user.groups.pluck(:name)).to contain_exactly("jira-administrators", "jira-software-users")
+ end
+
+ it "creates references for the groups" do
+ jira_import.import_users
+
+ group_references = Import::JiraOpenProjectReference.where(op_entity_class: "Group")
+ expect(group_references.count).to eq(2)
+ expect(group_references.pluck(:uses_existing)).to all(be false)
+ end
+ end
+
+ context "when importing a user with an existing group" do
+ let!(:existing_group) { create(:group, name: "jira-administrators") }
+ let!(:jira_user) do
+ create(:jira_user,
+ jira:,
+ jira_import:,
+ payload: jira_user_payload(
+ key: "JIRAUSER10104",
+ name: "j.roth@openproject.com",
+ display_name: "Judith Roth",
+ email: "j.roth@openproject.com",
+ groups: ["jira-administrators"]
+ ))
+ end
+
+ it "does not create a duplicate group" do
+ expect { jira_import.import_users }.not_to change(Group, :count)
+ end
+
+ it "adds the user to the existing group" do
+ jira_import.import_users
+
+ user = User.find_by(login: "j.roth@openproject.com")
+ expect(user.groups).to include(existing_group)
+ end
+
+ it "creates a reference with uses_existing flag for the group" do
+ jira_import.import_users
+
+ group_reference = Import::JiraOpenProjectReference.find_by(
+ op_entity_class: "Group",
+ op_entity_id: existing_group.id
+ )
+ expect(group_reference.uses_existing).to be true
+ end
+ end
+
+ context "when importing multiple users" do
+ let!(:jira_user1) do
+ create(:jira_user,
+ jira:,
+ jira_import:,
+ payload: jira_user_payload(
+ key: "JIRAUSER10105",
+ name: "jdoe@example.com",
+ display_name: "John Doe",
+ email: "jdoe@example.com",
+ groups: ["jira-software-users"]
+ ))
+ end
+ let!(:jira_user2) do
+ create(:jira_user,
+ jira:,
+ jira_import:,
+ payload: jira_user_payload(
+ key: "JIRAUSER10106",
+ name: "jsmith@example.com",
+ display_name: "Jane Smith",
+ email: "jsmith@example.com",
+ groups: ["jira-software-users"]
+ ))
+ end
+
+ it "creates all users" do
+ expect { jira_import.import_users }.to change(User, :count).by(2)
+ end
+
+ it "creates the shared group only once" do
+ expect { jira_import.import_users }.to change(Group, :count).by(1)
+ end
+
+ it "adds both users to the shared group" do
+ jira_import.import_users
+
+ group = Group.find_by(name: "jira-software-users")
+ expect(group.users.pluck(:login)).to contain_exactly("jdoe@example.com", "jsmith@example.com")
+ end
+ end
+
+ context "when user has a single-word display name" do
+ let!(:jira_user) do
+ create(:jira_user,
+ jira:,
+ jira_import:,
+ payload: jira_user_payload(
+ key: "JIRAUSER10108",
+ name: "admin@example.com",
+ display_name: "Administrator",
+ email: "admin@example.com",
+ groups: []
+ ))
+ end
+
+ it "uses the name for both firstname and lastname" do
+ jira_import.import_users
+
+ user = User.find_by(login: "admin@example.com")
+ expect(user).to have_attributes(
+ firstname: "Administrator",
+ lastname: "Administrator"
+ )
+ end
+ end
+
+ context "when user has a multi-part display name" do
+ let!(:jira_user) do
+ create(:jira_user,
+ jira:,
+ jira_import:,
+ payload: jira_user_payload(
+ key: "JIRAUSER10109",
+ name: "jvd@example.com",
+ display_name: "Jean Van Der Berg",
+ email: "jvd@example.com",
+ groups: []
+ ))
+ end
+
+ it "uses all but last word as firstname and last word as lastname" do
+ jira_import.import_users
+
+ user = User.find_by(login: "jvd@example.com")
+ expect(user).to have_attributes(
+ firstname: "Jean Van Der",
+ lastname: "Berg"
+ )
+ end
+ end
+ end
end
diff --git a/spec/support/components/work_packages/create_dialog.rb b/spec/support/components/work_packages/create_dialog.rb
index b6a6be96acf..39d33c5fdec 100644
--- a/spec/support/components/work_packages/create_dialog.rb
+++ b/spec/support/components/work_packages/create_dialog.rb
@@ -47,6 +47,8 @@ module Components
in_dialog do
select_combo_box_option value, from: "Type"
end
+
+ wait_for_network_idle # form is updated
end
def set_subject(value)
diff --git a/spec/support/components/work_packages/relations.rb b/spec/support/components/work_packages/relations.rb
index 4f6431e4840..3f120a49bf8 100644
--- a/spec/support/components/work_packages/relations.rb
+++ b/spec/support/components/work_packages/relations.rb
@@ -62,13 +62,13 @@ module Components
# Search the current window in order to avoid within scope restrictions
within_window(page.current_window) do
within("wp-relations-tab") do
- expect(page).to have_no_css("op-content-loader")
+ expect(page).to have_no_css("op-content-loader", wait: 10)
end
end
end
def expect_add_relation_button
- expect(page).to have_test_selector("add-relation-action-menu")
+ expect(page).to have_test_selector("add-relation-action-menu", wait: 10)
end
def expect_no_add_relation_button
@@ -145,7 +145,7 @@ module Components
end
def new_relation_button
- page.find(id: "add-relation-action-menu-button")
+ page.find(id: "add-relation-action-menu-button", wait: 10)
end
def new_relation_sub_menu_button
diff --git a/spec/support/flash/expectations.rb b/spec/support/flash/expectations.rb
index 5e9e8c154e4..c94e61f9097 100644
--- a/spec/support/flash/expectations.rb
+++ b/spec/support/flash/expectations.rb
@@ -2,9 +2,9 @@
module Flash
module Expectations
- def expect_flash(message:, type: :success, wait: 20)
+ def expect_flash(message: nil, exact_message: nil, type: :success, wait: 20)
expected_css = expected_flash_css(type)
- expect(page).to have_css(expected_css, text: message, wait:)
+ expect(page).to have_css(expected_css, wait:, **{ text: message, exact_text: exact_message }.compact)
end
def find_flash_element(type:)
@@ -12,29 +12,29 @@ module Flash
page.find(expected_css)
end
- def expect_and_dismiss_flash(message: nil, type: :success, wait: 20)
- expect_flash(type:, message:, wait:)
+ def expect_and_dismiss_flash(message: nil, exact_message: nil, type: :success, wait: 20)
+ expect_flash(type:, message:, exact_message:, wait:)
dismiss_flash!
- expect_no_flash(type:, message:, wait: 0.1)
+ expect_no_flash(type:, message:, exact_message:, wait: 0.1)
end
def dismiss_flash!
page.find(".Banner-close button").click # rubocop:disable Capybara/SpecificActions
end
- def expect_no_flash(type: :success, message: nil, wait: 10)
+ def expect_no_flash(type: :success, message: nil, exact_message: nil, wait: 10)
if type.nil?
expect(page).not_to have_test_selector("op-primer-flash-message")
else
expected_css = expected_flash_css(type)
- expect(page).to have_no_css(expected_css, text: message, wait:)
+ expect(page).to have_no_css(expected_css, wait:, **{ text: message, exact_text: exact_message }.compact)
end
end
def expected_flash_css(type)
scheme = mapped_flash_type(type)
- case scheme
- when :default
+
+ if scheme == :default
%{[data-test-selector="op-primer-flash-message"].Banner}
else
%{[data-test-selector="op-primer-flash-message"].Banner--#{scheme}}
@@ -43,11 +43,9 @@ module Flash
def mapped_flash_type(type)
case type
- when :error
- :error # The class is error, but the scheme is danger
- when :warning
- :warning
- when :success, :notice
+ when :error, :warning, :success
+ type
+ when :notice
:success
else
:default