From b88ce396d5d91c2c9bb787aef1955ea786853453 Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Wed, 21 Aug 2024 03:15:45 +0000 Subject: [PATCH 1/6] update locales from crowdin [ci skip] --- config/locales/crowdin/js-ro.yml | 14 +-- config/locales/crowdin/js-zh-TW.yml | 6 +- config/locales/crowdin/ro.seeders.yml | 4 +- config/locales/crowdin/ro.yml | 86 +++++++++---------- config/locales/crowdin/zh-TW.yml | 20 ++--- .../backlogs/config/locales/crowdin/ro.yml | 4 +- .../bim/config/locales/crowdin/bg.seeders.yml | 76 ++++++++-------- .../bim/config/locales/crowdin/fr.seeders.yml | 4 +- .../bim/config/locales/crowdin/ro.seeders.yml | 2 +- modules/boards/config/locales/crowdin/ro.yml | 8 +- modules/budgets/config/locales/crowdin/ro.yml | 6 +- modules/costs/config/locales/crowdin/ro.yml | 4 +- .../gantt/config/locales/crowdin/js-bg.yml | 2 +- .../config/locales/crowdin/js-ro.yml | 2 +- .../grids/config/locales/crowdin/js-ro.yml | 2 +- .../ldap_groups/config/locales/crowdin/ro.yml | 2 +- .../config/locales/crowdin/zh-TW.yml | 20 ++--- modules/meeting/config/locales/crowdin/ro.yml | 22 ++--- .../config/locales/crowdin/js-ro.yml | 2 +- .../overviews/config/locales/crowdin/ro.yml | 4 +- .../recaptcha/config/locales/crowdin/ro.yml | 2 +- 21 files changed, 146 insertions(+), 146 deletions(-) diff --git a/config/locales/crowdin/js-ro.yml b/config/locales/crowdin/js-ro.yml index a74dfd78b027..0086d2554976 100644 --- a/config/locales/crowdin/js-ro.yml +++ b/config/locales/crowdin/js-ro.yml @@ -77,7 +77,7 @@ ro: button_copy_to_other_project: "Copiază în alt proiect" button_custom-fields: "Câmpuri personalizate" button_delete: "Șterge" - button_delete_watcher: "Şterge observator" + button_delete_watcher: "Șterge observator" button_details_view: "Vizualizare detaliată" button_duplicate: "Duplicare" button_edit: "Editare" @@ -377,7 +377,7 @@ ro: token_name_label: "Where will you be using this?" token_name_placeholder: 'Type a name, e.g. "Phone"' token_name_description_text: 'If you subscribe to this calendar from multiple devices, this name will help you distinguish between them in your access tokens list.' - copy_url_label: "Copiază URL-ul" + copy_url_label: "Copiază URL" ical_generation_error_text: "An error occured while generating the calendar URL." success_message: 'The URL "%{name}" was successfully copied to your clipboard. Paste it in your calendar client to complete the subscription.' label_activate: "Activare" @@ -558,7 +558,7 @@ ro: label_formattable_attachment_hint: "Atașați și legați fișiere prin plasarea în acest câmp sau prin lipirea din clipboard." label_remove_file: "Ştergere %{fileName}" label_remove_watcher: "Eliminare observator %{name}" - label_remove_all_files: Şterge toate fişierele + label_remove_all_files: Șterge toate fișierele label_add_description: "Adăugați o descriere pentru %{file}" label_upload_notification: "Se încarcă fișierele..." label_work_package_upload_notification: "Fişierele pentru pachetul de lucru #%{id}: %{subject} sunt în curs de încărcare" @@ -768,7 +768,7 @@ ro: label: "Întrerupeți temporar memento-urile zilnice prin e-mail" first_day: "Prima zi" last_day: "Ultima zi" - text_are_you_sure: "Sunteți sigur?" + text_are_you_sure: "Ești sigur?" text_data_lost: "Toate datele introduse vor fi pierdute." text_user_wrote: "%{value} a scris:" types: @@ -960,7 +960,7 @@ ro: header_with_parent: "Nou %{type} (copilul %{parent_type} #%{id})" button: "Creare" copy: - title: "Copiză pachet de lucru" + title: "Copiază pachet de lucru" hierarchy: show: "Afișați modul ierarhic" hide: "Ascundeți modul ierarhic" @@ -1103,7 +1103,7 @@ ro: relation_filters: filter_work_packages_by_relation_type: "Filtrare pachete de lucru" tabs: - overview: Vedere de ansamblu + overview: Prezentare generală activity: Activitate relations: Relații watchers: Observatori @@ -1134,7 +1134,7 @@ ro: search_query_label: "Căutați vizualizări salvate" modals: label_name: "Nume" - label_delete_page: "Şterge pagina curentă" + label_delete_page: "Șterge pagina curentă" button_apply: "Salvare" button_save: "Salvare" button_submit: "Trimitere" diff --git a/config/locales/crowdin/js-zh-TW.yml b/config/locales/crowdin/js-zh-TW.yml index 44537da4adbd..58e4b757239a 100644 --- a/config/locales/crowdin/js-zh-TW.yml +++ b/config/locales/crowdin/js-zh-TW.yml @@ -849,7 +849,7 @@ zh-TW: abort: "捨棄" relations_autocomplete: placeholder: "搜尋" - parent_placeholder: "選擇新父級,或按 Escape 鍵來取消。" + parent_placeholder: "選擇新上層工作項目,或按 Escape 鍵來取消。" autocompleter: placeholder: "搜尋" notFoundText: "找不到任何項目" @@ -1001,7 +1001,7 @@ zh-TW: subproject: "子專案" title: "標題" type: "類型" - updatedAt: "更新於" + updatedAt: "最後更新" versionName: "版本" version: "版本" work: "工時" @@ -1017,7 +1017,7 @@ zh-TW: overdue: "逾期" summary: "總覽" shared_with_users: "分配給成員" - shared_with_me: "共享給我的" + shared_with_me: "我共用之工作項目" jump_marks: pagination: "跳轉至表格分頁" label_pagination: "點擊此處跳過工作項目表並轉到分頁" diff --git a/config/locales/crowdin/ro.seeders.yml b/config/locales/crowdin/ro.seeders.yml index 14c0e6f3ea9e..d30a1063be4c 100644 --- a/config/locales/crowdin/ro.seeders.yml +++ b/config/locales/crowdin/ro.seeders.yml @@ -107,7 +107,7 @@ ro: name: Tablă de bază lists: item_0: - name: Listă dorinţe + name: Listă dorințe item_1: name: Listă scurtă item_2: @@ -123,7 +123,7 @@ ro: name: Welcome item_1: options: - name: Noţiuni de bază + name: Începe text: | We are glad you joined! We suggest to try a few things to get started in OpenProject. diff --git a/config/locales/crowdin/ro.yml b/config/locales/crowdin/ro.yml index 0af7db23e9a3..77da7fbfc3ed 100644 --- a/config/locales/crowdin/ro.yml +++ b/config/locales/crowdin/ro.yml @@ -184,7 +184,7 @@ ro: label_new_color: "Culoare nouă" label_edit_color: "Editare culoare" label_no_color: "Nicio culoare" - label_properties: "Proprietăţi" + label_properties: "Proprietăți" label_really_delete_color: > Sunteţi sigur că doriţi să ştergeţi următoarea culoare? Tipurile care folosesc această culoare nu vor fi şterse. custom_actions: @@ -242,8 +242,8 @@ ro: projects: copy: #Contains custom strings for options when copying a project that cannot be found elsewhere. - members: "Membri ai proiectului" - overviews: "Prezentare generală a proiectului" + members: "Membrii proiectului" + overviews: "Prezentare generală proiect" queries: "Pachete de lucru: vizualizări salvate" wiki_page_attachments: "Pagini wiki: atașamente" work_package_attachments: "Pachete de lucru: anexe" @@ -608,7 +608,7 @@ ro: changeset: repository: "Repo" color: - hexcode: "Cod hexa" + hexcode: "Cod hex" comment: commented: "Cu comentarii" #an object that this comment belongs to custom_action: @@ -668,7 +668,7 @@ ro: hexcode: Cod hexa project: active_value: - true: "nearhivat" + true: "dezarhivat" false: "arhivat" identifier: "Identificator" latest_activity_at: "Ultima activitate la" @@ -691,12 +691,12 @@ ro: templated: "Proiect șablon" templated_value: true: "marcat ca șablon" - false: "nemarcat ca șablon" + false: "demarcat ca șablon" types: "Tipuri" versions: "Versiuni" work_packages: "Pachete de lucru" project_custom_field: - custom_field_section: Sectiune + custom_field_section: Secțiune query: column_names: "Coloane" relations_to_type_column: "Relații cu %{type}" @@ -1110,9 +1110,9 @@ ro: status: invalid_on_create: "nu este un statut valabil pentru utilizatorii noi." ldap_auth_source: - error_not_found: "%s nu a fost găsit" + error_not_found: "nu a fost găsit" auth_source: - error_not_found: "%s nu a fost găsit" + error_not_found: "nu a fost găsit" member: principal_blank: "Trebuie să alegeţi cel puţin un utilizator sau grup." role_blank: "trebuie să fie atribuite." @@ -1218,10 +1218,10 @@ ro: changeset: "Seturi de modificări" message: "Forumuri" news: "Noutăţi" - project_attribute: "Atributele proiectului" + project_attribute: "Atribute proiect" subproject: "Include subproiecte" - time_entry: "Timp alocat" - wiki_edit: "Spaţiu" + time_entry: "Spent time" + wiki_edit: "Wiki" work_package: "Pachete de lucru" #common attributes of all models attributes: @@ -1240,14 +1240,14 @@ ro: created_at: "Creat pe" custom_options: "Valori posibile" custom_values: "Câmpuri personalizate" - date: "Dată" + date: "Data" default_columns: "Coloane implicite" description: "Descriere" derived_due_date: "Data finală derivată" derived_estimated_hours: "Total work" derived_start_date: "fără dată început" display_sums: "Afişare totaluri" - due_date: "Data de finalizare" + due_date: "Data finalizare" estimated_hours: "Work" estimated_time: "Work" expires_at: "Expiră la" @@ -1318,7 +1318,7 @@ ro: button_add_watcher: "Adăugare observator" button_annotate: "Adnotare" button_apply: "Salvare" - button_archive: "Arhivare" + button_archive: "Arhivează" button_back: "Înapoi" button_cancel: "Anulare" button_change: "Modificare" @@ -1337,7 +1337,7 @@ ro: button_copy_and_follow: "Copiere și continuare" button_create: "Creare" button_create_and_continue: "Creare și continuare" - button_delete: "Ștergere" + button_delete: "Șterge" button_decline: "Refuză" button_delete_watcher: "Ștergere observator %{name}" button_download: "Descărcare" @@ -1383,11 +1383,11 @@ ro: button_manage_menu_entry: "Configurare meniu" button_add_menu_entry: "Adăugare meniu" button_configure_menu_entry: "Configurare meniu" - button_delete_menu_entry: "Ștergere meniu" + button_delete_menu_entry: "Șterge element meniu" button_view_shared_work_packages: "Vezi pachetele de lucru partajate" button_manage_roles: "Gestionează rolurile" button_remove_member: "Elimină membru" - button_remove_member_and_shares: "Elimină membrul și partajările" + button_remove_member_and_shares: "Elimină membru și partajări" button_revoke_work_package_shares: "Revoke work package shares" button_revoke_access: "Revocă acces" button_revoke_all: "Revocă tot" @@ -1483,17 +1483,17 @@ ro: datetime: distance_in_words: about_x_hours: - one: "cam o oră" - few: "cam %{count} ore" - other: "cam %{count} ore" + one: "aproximativ o oră" + few: "aproximativ %{count} ore" + other: "aproximativ %{count} ore" about_x_months: - one: "cam o lună" - few: "cam %{count} luni" - other: "cam %{count} luni" + one: "aproximativ o lună" + few: "aproximativ %{count} luni" + other: "aproximativ %{count} luni" about_x_years: - one: "cam un an" - few: "cam %{count} ani" - other: "cam %{count} ani" + one: "aproximativ un an" + few: "aproximativ %{count} ani" + other: "aproximativ %{count} ani" almost_x_years: one: "aproape un an" few: "aproape %{count} ani" @@ -1520,20 +1520,20 @@ ro: few: "%{count} minute" other: "%{count} minute" x_minutes_abbreviated: - one: "1 minut" - few: "%{count} mins" - other: "%{count} minute" + one: "1 min" + few: "%{count} min" + other: "%{count} min" x_hours: one: "1 oră" few: "%{count} ore" other: "%{count} ore" x_hours_abbreviated: - one: "1 hr" - few: "%{count} hrs" - other: "%{count} ore" + one: "1 h" + few: "%{count} h" + other: "%{count} h" x_weeks: - one: "1 week" - few: "%{count} weeks" + one: "1 săptămână" + few: "%{count} săptămâni" other: "%{count} săptămâni" x_months: one: "o lună" @@ -1541,7 +1541,7 @@ ro: other: "%{count} luni" x_years: one: "1 an" - few: "%{count} years" + few: "%{count} ani" other: "%{count} ani" x_seconds: one: "o secundă" @@ -1550,7 +1550,7 @@ ro: x_seconds_abbreviated: one: "1 s" few: "%{count} s" - other: "%{count} secunde" + other: "%{count} s" units: hour: one: "oră" @@ -2011,7 +2011,7 @@ ro: label_duplicated_by: "dublat de" label_duplicate: "duplicat" label_duplicates: "dublează" - label_edit: "Editare" + label_edit: "Editează" label_edit_x: "Editare: %{x}" label_enable_multi_select: "Comutare selecție multiplă" label_enabled_project_custom_fields: "Câmpuri personalizate activate" @@ -2266,7 +2266,7 @@ ro: label_project_storage_plural: "File Storages" label_project_storage_project_folder: "File Storages: Project folders" label_projects_disk_usage_information: "%{count} projects using %{used_disk_space} disk space" - label_project_view_all: "Vizualizare toate proiectele" + label_project_view_all: "Vizualizează toate proiectele" label_project_show_details: "Arată detaliile proietului" label_project_hide_details: "Ascunde detaliile proiectului" label_public_projects: "Proiecte publice" @@ -2393,7 +2393,7 @@ ro: label_version_plural: "Versiuni" label_version_sharing_descendants: "Cu subproiecte" label_version_sharing_hierarchy: "Cu ierarhia de proiect" - label_version_sharing_none: "Nu este publică" + label_version_sharing_none: "Nepartajat" label_version_sharing_system: "Cu toate proiectele" label_version_sharing_tree: "Cu arborele proiectelor" label_videos: "Videoclipuri" @@ -2700,7 +2700,7 @@ ro: notice_successful_update_custom_fields_added_to_type: | Actualizare reușită. Câmpurile personalizate active sunt activate automat pentru proiectele asociate de acest tip. - notice_to_many_principals_to_display: "Există prea multe rezultate. Restrângeți căutarea prin tastarea numelui noului membru (sau grup)." + notice_to_many_principals_to_display: "Există prea multe rezultate. Restrânge căutarea prin tastarea numelui noului membru (sau grup)." notice_user_missing_authentication_method: Utilizatorul nu a ales încă o parolă sau un alt mod de autentificare. notice_user_invitation_resent: A fost trimisă o invitație către %{email}. present_access_key_value: "%{key_name} tău/ta este: %{value}" @@ -2732,7 +2732,7 @@ ro: mb: "MB" tb: "TB" onboarding: - heading_getting_started: "Obțineți o prezentare generală" + heading_getting_started: "Urmărește prezentarea generală" text_getting_started_description: "Obțineți o imagine de ansamblu rapidă a gestionării proiectelor și a colaborării în echipă cu OpenProject. Puteți reporni acest videoclip din meniul de ajutor." welcome: "Bun venit la %{app_title}" select_language: "Vă rugăm să selectați limba dvs" @@ -2850,7 +2850,7 @@ ro: copying: > Proiectul dumneavoastră este creat din proiectul șablon selectat. Veți fi notificat prin e-mail imediat ce proiectul va fi disponibil. use_template: "Utilizează șablon" - make_template: "Setați ca șablon" + make_template: "Setează ca șablon" remove_from_templates: "Eliminați din șabloane" archive: are_you_sure: "Sunteţi sigur că doriţi să arhivaţi proiectul '%{name}'?" diff --git a/config/locales/crowdin/zh-TW.yml b/config/locales/crowdin/zh-TW.yml index f405d71da03c..527cf20bdf35 100644 --- a/config/locales/crowdin/zh-TW.yml +++ b/config/locales/crowdin/zh-TW.yml @@ -369,7 +369,7 @@ zh-TW: other: "%{all_shared_work_packages_link} 已與該組共享。" shared_with_permission_html: other: "只有 %{shared_work_packages_link} 共享了 %{shared_role_name} 權限。" - revoke_all_or_with_role: "您想撤銷對所有共享工作包的訪問權限,還是只撤銷對具有 %{shared_role_name} 權限的工作包的訪問權限?" + revoke_all_or_with_role: "您想撤銷對所有共用工作項目的存取權限,還是只撤銷 %{shared_role_name} 的相關權限?" will_not_affect_inherited_shares: "(這不會影響與其群組共用的工作包)。" cannot_remove_inherited: "無法刪除通過群組共享的工作包共享。" cannot_remove_inherited_with_role: "與角色 %{shared_role_name} 共享的工作包是通過群組共享的,不能刪除。" @@ -493,7 +493,7 @@ zh-TW: 所選顏色區分甘特圖或工作項目中的不同類型。因此建議使用濃烈的顏色。 versions: overview: - work_packages_in_archived_projects: "該版本與歸檔項目共享,這些項目仍然有分配給此版本的工作包。雖然這些工作包被計算在內,但不會顯示在鏈接視圖中。" + work_packages_in_archived_projects: "該版本與歸檔項目共用,這些專案仍然有分配給此版本的工作項目。雖然這些工作項目被計算在內,但不會顯示在視圖中。" no_results_title_text: 目前沒有分配給此版本的工作項目。 wiki: page_not_editable_index: 本頁不存在,重新導至wiki目錄頁。 @@ -761,14 +761,14 @@ zh-TW: true: "包含非工作日" notify: "通知" #used in custom actions parent: "上層目錄:" - parent_issue: "上層目錄:" - parent_work_package: "上層目錄:" + parent_issue: "上層工作項目:" + parent_work_package: "上層工作項目:" priority: "優先等級" progress: "完成度(%)" readonly: "唯讀" remaining_hours: "剩餘工作" remaining_time: "剩餘工作" - shared_with_users: "共用對象" + shared_with_users: "參與成員" schedule_manually: "手動排程" spent_hours: "耗時" spent_time: "耗時" @@ -1033,7 +1033,7 @@ zh-TW: not_available_for_milestones: "不適用於里程碑類型的工作項目。" cannot_be_null: "無法設置為 null,因為開始日期和結束日期已知。" parent: - cannot_be_milestone: "不可以成為一個里程碑" + cannot_be_milestone: "不能是里程碑" cannot_be_self_assigned: "不能指派給自己" cannot_be_in_another_project: "不能在另一個專案中" not_a_valid_parent: "不正確。" @@ -1530,8 +1530,8 @@ zh-TW: error_can_not_archive_project: "這個專案無法封存:%{errors}" error_can_not_delete_entry: "無法刪除項目" error_can_not_delete_custom_field: "無法刪除客製欄位" - error_can_not_delete_in_use_archived_undisclosed: "歸檔專案中也有工作套件。您需要請管理員執行刪除,才能看到哪些專案會受到影響。" - error_can_not_delete_in_use_archived_work_packages: "已歸檔的專案中也有工作套件。您需要先重新啟動下列專案,才能變更各工作套件的屬性: %{archived_projects_urls}" + error_can_not_delete_in_use_archived_undisclosed: "歸檔專案中也有工作項目。您需要請管理員執行刪除,才能看到哪些專案會受到影響。" + error_can_not_delete_in_use_archived_work_packages: "已歸檔的專案中也有工作項目。您需要先重新啟動下列專案,才能變更各工作項目屬性: %{archived_projects_urls}" error_can_not_delete_type: explanation: '此類型包含工作套件,且無法刪除。您可以在此檢視中看到所有受影響的工作套件。' error_can_not_delete_standard_type: "標準類型無法刪除" @@ -2775,7 +2775,7 @@ zh-TW: make_template: "設為範本" remove_from_templates: "從範本中移除" archive: - are_you_sure: "是否確定要 archive 專案 '%{name}'?" + are_you_sure: "是否確定要封存專案 '%{name}'?" archived: "封存" count: zero: "0 個專案" @@ -3047,7 +3047,7 @@ zh-TW: setting_welcome_title: "歡迎區塊標題" setting_welcome_on_homescreen: "在主頁面上顯示歡迎區塊" setting_work_package_list_default_highlighting_mode: "預設顯示模式" - setting_work_package_list_default_highlighted_attributes: "預設強調的屬性" + setting_work_package_list_default_highlighted_attributes: "預設顯眼屬性" setting_working_days: "工作日" settings: attachments: diff --git a/modules/backlogs/config/locales/crowdin/ro.yml b/modules/backlogs/config/locales/crowdin/ro.yml index c2a5b4cd27dd..dc06ee404cd4 100644 --- a/modules/backlogs/config/locales/crowdin/ro.yml +++ b/modules/backlogs/config/locales/crowdin/ro.yml @@ -26,7 +26,7 @@ ro: activerecord: attributes: work_package: - position: "Poziţie" + position: "Poziție" story_points: "Puncte" backlogs_work_package_type: "Tipul de restante" errors: @@ -61,7 +61,7 @@ ro: points: "Puncte" positions_could_not_be_rebuilt: "Pozițiile nu au putut fi reconstruite." positions_rebuilt_successfully: "Toate elementele au fost șterse cu succes" - properties: "Proprietăţi" + properties: "Proprietăți" rebuild: "Reconstruiți" rebuild_positions: "Reconstruiți" remaining_hours: "Muncă rămasă" diff --git a/modules/bim/config/locales/crowdin/bg.seeders.yml b/modules/bim/config/locales/crowdin/bg.seeders.yml index 689ec78441a6..4cce05caa17b 100644 --- a/modules/bim/config/locales/crowdin/bg.seeders.yml +++ b/modules/bim/config/locales/crowdin/bg.seeders.yml @@ -13,14 +13,14 @@ bg: item_2: name: Висок item_3: - name: Critical + name: Критичен statuses: item_0: name: Нов item_1: name: В изпълнение item_2: - name: Resolved + name: Разрешен item_3: name: Затворен time_entry_activities: @@ -40,14 +40,14 @@ bg: item_3: name: Проблем item_4: - name: Remark + name: Бележки item_5: - name: Request + name: Заявка item_6: - name: Clash + name: Сблъсък global_queries: item_0: - name: 'Embedded table: Children' + name: 'Вградена таблица: Деца' type_configuration: item_0: form_configuration: @@ -55,23 +55,23 @@ bg: group_name: Деца groups: item_0: - name: Architects + name: Архитекти item_1: - name: BIM Coordinators + name: БИМ Кординатори item_2: - name: BIM Managers + name: Бим Мениджъри item_3: - name: BIM Modellers + name: БИМ Моделисти item_4: - name: Lead BIM Coordinators + name: Водещи БИМ координатори item_5: - name: MEP Engineers + name: МЕП инженери item_6: - name: Planners + name: Планьри item_7: - name: Structural Engineers + name: Структурни инженери welcome: - title: Welcome to OpenProject BIM edition! + title: Добре дошли в изданието OpenProject БИМ! text: | Checkout the demo projects to get started with some examples. @@ -101,21 +101,21 @@ bg: item_0: Category 1 (to be changed in Project settings) queries: item_0: - name: Project plan + name: План на проекта item_1: - name: Milestones + 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: Първи стъпки @@ -147,34 +147,34 @@ bg: name: Работни пакети item_6: options: - name: Milestones + name: Етапи demo-planning-constructing-project: - name: "(Demo) Planning & constructing" - status_explanation: All tasks are on schedule. The people involved know their tasks. The system is completely set up. - description: This is a short summary of the goals of this demo planning and constructing project. + name: "(Демо) Планиране и конструиране" + status_explanation: Всички задачи са по график. Участниците си знаят задачите. Системата е напълно настроена. + description: Това е кратко резюме на целите на този демонстрационен проект за планиране и конструиране. 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 + Радваме се, че се присъединихте. + В този модул можете да съобщавате новини за проекта на членовете на вашия екип. + description: Актуалните новини categories: - item_0: Category 1 (to be changed in Project settings) + item_0: Категория 1 (да се промени в настройките на проекта) queries: item_0: - name: Project plan + name: План на проекта item_1: - name: Milestones + name: Етапи item_2: - name: Tasks + name: Задачи item_3: name: Екипен плановик project-overview: widgets: item_0: options: - name: Welcome + name: Добре дошли item_1: options: name: Първи стъпки @@ -202,20 +202,20 @@ bg: name: Работни пакети item_6: options: - name: Milestones + name: Етапи work_packages: item_0: - subject: Project kick off construction project + subject: Проект за стартиране на строителен проект description: |- The project kick off initializes the start of the project in your company. Everybody being part of this project should be invited to the kick off for a first briefing. The next step could be checking out the timetable and adjusting the appointments, by looking at the [Gantt chart]({{opSetting:base_url}}/projects/demo-construction-project/work_packages?query_props=%7B%22c%22%3A%5B%22id%22%2C%22subject%22%2C%22startDate%22%2C%22dueDate%22%5D%2C%22tv%22%3Atrue%2C%22tzl%22%3A%22weeks%22%2C%22hi%22%3Atrue%2C%22g%22%3A%22%22%2C%22t%22%3A%22startDate%3Aasc%22%2C%22f%22%3A%5B%7B%22n%22%3A%22status%22%2C%22o%22%3A%22o%22%2C%22v%22%3A%5B%5D%7D%5D%2C%22pa%22%3A1%2C%22pp%22%3A100%7D). item_1: - subject: Basic evaluation + subject: Основна оценка description: This type is hierarchically a parent of the types "Clash" and "Request", thus represents a general note. children: item_0: - subject: Gathering first project information + subject: Събиране на първа информация за проекта description: |- ## Goal @@ -228,7 +228,7 @@ bg: * Each need shall represent a task with its corresponding work packages * Derive the cost estimation and time frame item_1: - subject: Summarize the results + subject: Обобщете резултатите description: |- ## Goal diff --git a/modules/bim/config/locales/crowdin/fr.seeders.yml b/modules/bim/config/locales/crowdin/fr.seeders.yml index fbbea4a3cfa5..bd941ab39c28 100644 --- a/modules/bim/config/locales/crowdin/fr.seeders.yml +++ b/modules/bim/config/locales/crowdin/fr.seeders.yml @@ -16,7 +16,7 @@ fr: name: Critique statuses: item_0: - name: nouveau + name: Nouveau item_1: name: En cours item_2: @@ -682,7 +682,7 @@ fr: item_0: Catégorie 1 (à modifier dans les paramètres du projet) queries: item_0: - name: Problèmes + name: Tickets item_1: name: Conflits item_2: diff --git a/modules/bim/config/locales/crowdin/ro.seeders.yml b/modules/bim/config/locales/crowdin/ro.seeders.yml index 236a46913a68..22c156ed7e44 100644 --- a/modules/bim/config/locales/crowdin/ro.seeders.yml +++ b/modules/bim/config/locales/crowdin/ro.seeders.yml @@ -118,7 +118,7 @@ ro: name: Welcome item_1: options: - name: Noţiuni de bază + name: Începe text: | We are glad you joined! We suggest to try a few things to get started in OpenProject. diff --git a/modules/boards/config/locales/crowdin/ro.yml b/modules/boards/config/locales/crowdin/ro.yml index 6b5c2fbfca31..a420f7f9e02b 100644 --- a/modules/boards/config/locales/crowdin/ro.yml +++ b/modules/boards/config/locales/crowdin/ro.yml @@ -7,13 +7,13 @@ ro: permission_manage_board_views: "Gestionați plăcile" project_module_board_view: "Panouri" boards: - label_board: "Tablă" + label_board: "Panou" label_boards: "Panouri" - label_create_new_board: "Creează un nou panou" - label_board_type: "Tipul de placă" + label_create_new_board: "Creează panou nou" + label_board_type: "Tip panou" board_types: free: De bază - action: "Tablă de acțiune (%{attribute})" + action: "Panou acțiune (%{attribute})" board_type_attributes: assignee: Executant status: Stare diff --git a/modules/budgets/config/locales/crowdin/ro.yml b/modules/budgets/config/locales/crowdin/ro.yml index 081064ac4009..033aadf692c7 100644 --- a/modules/budgets/config/locales/crowdin/ro.yml +++ b/modules/budgets/config/locales/crowdin/ro.yml @@ -26,7 +26,7 @@ ro: attributes: budget: author: "Autor" - available: "Disponibile" + available: "Disponibil" budget: "Planificat" budget_ratio: "Cheltuit (raport)" description: "Descriere" @@ -47,7 +47,7 @@ ro: attributes: budget: "Buget" button_add_budget_item: "Adăugați costurile planificate" - button_add_budget: "Adăugați bugetul" + button_add_budget: "Adaugă bugetul" button_add_cost_type: "Adaugați acest câmp la un pachet de lucru" button_cancel_edit_budget: "Anularea bugetului de editare" button_cancel_edit_costs: "Anularea costurilor de editare" @@ -70,7 +70,7 @@ ro: label_yes: "Da" notice_budget_conflict: "Pachetele de lucru trebuie să fie din același proiect." notice_no_budgets_available: "Nu există bugete disponibile." - permission_edit_budgets: "Editarea bugetelor" + permission_edit_budgets: "Editare bugete" permission_view_budgets: "Vezi bugete" project_module_budgets: "Bugetele" text_budget_reassign_to: "Reatribuiți-le acestui buget:" diff --git a/modules/costs/config/locales/crowdin/ro.yml b/modules/costs/config/locales/crowdin/ro.yml index c93b9bf625b2..167435d6a43b 100644 --- a/modules/costs/config/locales/crowdin/ro.yml +++ b/modules/costs/config/locales/crowdin/ro.yml @@ -95,7 +95,7 @@ ro: label_display_cost_entries: "Afișarea costurilor unitare" label_display_time_entries: "Afișarea orelor raportate" label_display_types: "Tipuri de afișare" - label_edit: "Editare" + label_edit: "Editează" label_generic_user: "Utilizator generic" label_greater_or_equal: ">=" label_group_by: "Grupare după" @@ -143,4 +143,4 @@ ro: text_warning_hidden_elements: "Este posibil ca unele intrări să fi fost excluse din agregare." week: "săptămână" js: - text_are_you_sure: "Sunteți sigur?" + text_are_you_sure: "Ești sigur?" diff --git a/modules/gantt/config/locales/crowdin/js-bg.yml b/modules/gantt/config/locales/crowdin/js-bg.yml index fe5496d86af7..55bc47d92b1c 100644 --- a/modules/gantt/config/locales/crowdin/js-bg.yml +++ b/modules/gantt/config/locales/crowdin/js-bg.yml @@ -2,4 +2,4 @@ bg: js: work_packages: default_queries: - milestones: 'Milestones' + milestones: 'Етап' diff --git a/modules/github_integration/config/locales/crowdin/js-ro.yml b/modules/github_integration/config/locales/crowdin/js-ro.yml index 04d0f0ecfa9c..155dec78b765 100644 --- a/modules/github_integration/config/locales/crowdin/js-ro.yml +++ b/modules/github_integration/config/locales/crowdin/js-ro.yml @@ -28,7 +28,7 @@ ro: title: "Cereri de extragere" copy_menu: label: Git fragmente - description: Copiză fragmente git în clipboard + description: Copiază fragmente git în clipboard git_actions: branch_name: Nume sucursală commit_message: Mesajul commit-ului diff --git a/modules/grids/config/locales/crowdin/js-ro.yml b/modules/grids/config/locales/crowdin/js-ro.yml index cc8c090cfe9f..3e6809f478bf 100644 --- a/modules/grids/config/locales/crowdin/js-ro.yml +++ b/modules/grids/config/locales/crowdin/js-ro.yml @@ -66,5 +66,5 @@ ro: work_packages_calendar: title: 'Calendar' work_packages_overview: - title: 'Prezentare generală a pachetelor de lucru' + title: 'Prezentare generală pachete de lucru' placeholder: 'Dă clic pentru a edita acest meniu.' diff --git a/modules/ldap_groups/config/locales/crowdin/ro.yml b/modules/ldap_groups/config/locales/crowdin/ro.yml index c963a939ba95..cac477bd99f4 100644 --- a/modules/ldap_groups/config/locales/crowdin/ro.yml +++ b/modules/ldap_groups/config/locales/crowdin/ro.yml @@ -12,7 +12,7 @@ ro: filter_string: 'Filtru LDAP' ldap_auth_source: 'Conexiune LDAP' group_name_attribute: "Atributul nume de grup" - sync_users: 'Sincronizați utilizatorii' + sync_users: 'Sincronizează utilizatorii' base_dn: "Baza de căutare DN" models: ldap_groups/synchronized_group: 'Grup LDAP sincronizat' diff --git a/modules/ldap_groups/config/locales/crowdin/zh-TW.yml b/modules/ldap_groups/config/locales/crowdin/zh-TW.yml index d58def656a81..d7227e6063ba 100644 --- a/modules/ldap_groups/config/locales/crowdin/zh-TW.yml +++ b/modules/ldap_groups/config/locales/crowdin/zh-TW.yml @@ -5,7 +5,7 @@ zh-TW: activerecord: attributes: ldap_groups/synchronized_group: - dn: '獨特名' + dn: '識別名稱(DN)' ldap_auth_source: 'LDAP 連線' sync_users: '同步使用者' ldap_groups/synchronized_filter: @@ -15,7 +15,7 @@ zh-TW: sync_users: '同步使用者' base_dn: "搜尋基礎 DN" models: - ldap_groups/synchronized_group: '同步的 LDAP 群組' + ldap_groups/synchronized_group: 'LDAP 同步群組' ldap_groups/synchronized_filter: 'LDAP群組同步篩選' errors: models: @@ -47,27 +47,27 @@ zh-TW: base_dn_text: > 輸入用於此篩選器的搜尋基礎 DN,它必須在所選的 LDAP 連接的基礎 DN 之下。將此選項留空以使用連接的基礎 DN synchronized_groups: - add_new: '新增同步的 LDAP 群組' + add_new: '新增 LDAP 同步群組' destroy: - title: '移除同步的群組 %{name}' + title: '移除同步群組 %{name}' confirmation: "如繼續,將移除同步的群組 %{name} 和所有透過該群組同步的全部 %{users_count} 個用戶。" info: "注意:OpenProject 群組本身以及在 LDAP 同步之外添加的成員將不會被移除。" verification: "輸入專案的名稱 %{name} 來確認刪除" help_text_html: | - 此模塊允許您在 LDAP 與 OpenProject 群組之間設置同步。 + 此模組允許您在 LDAP 與 OpenProject 群組之間設置同步。 它要求 LDAP 群組使用 groupOfNames / memberOf 屬性集才能與 OpenProject 一起使用。
群組通過 Cron 作業每小時同步。 請參閱我們關於此主題的文檔。 no_results: '找不到同步的群組。' no_members: '這個群組還沒有同步的成員。' - plural: '同步的 LDAP 群組' - singular: '同步的 LDAP 群組' + plural: 'LDAP 同步群組' + singular: 'LDAP 同步群組' form: auth_source_text: '選擇應使用的 LDAP 連接。' sync_users_text: > 如果啓用此選項,找到的使用者會自動新增到OpenProject系統。如果不啓用,只有 OpenProject 現有帳戶會加到群組中。 - dn_text: '輸入 LDAP 中群組的完成 DN' - group_text: '選擇 LDAP 群組的成員應與其同步的現有 OpenProject 群組' + dn_text: '輸入 LDAP 群組完整DN' + group_text: '選擇 LDAP 群組同步至現有 OpenProject 群組' upsale: - description: '利用同步的 LDAP 群組來管理用戶、更改其權限並促進跨群組的用戶管理。' + description: '利用 LDAP 同步群組來管理用戶、更改其權限並促進跨群組的用戶管理。' diff --git a/modules/meeting/config/locales/crowdin/ro.yml b/modules/meeting/config/locales/crowdin/ro.yml index f81eba429099..aa4610e5786f 100644 --- a/modules/meeting/config/locales/crowdin/ro.yml +++ b/modules/meeting/config/locales/crowdin/ro.yml @@ -40,7 +40,7 @@ ro: participants_attended: "Participanți" participants_invited: "Invitaţi" project: "Proiect" - start_date: "Dată" + start_date: "Data" start_time: "Start time" start_time_hour: "Start time" meeting_agenda_item: @@ -58,7 +58,7 @@ ro: structured_meeting: "Meeting (dynamic)" meeting_agenda_item: "Agenda item" meeting_agenda: "Agendă" - meeting_minutes: "Concluzii" + meeting_minutes: "Minute" meeting_section: "Section" activity: filter: @@ -91,7 +91,7 @@ ro: label_meeting_new: "Noua întâlnire" label_meeting_edit: "Editare Întâlnire" label_meeting_agenda: "Agendă" - label_meeting_minutes: "Concluzii" + label_meeting_minutes: "Minute" label_meeting_close: "Închide" label_meeting_open: "Deschis" label_meeting_agenda_close: "Închideți ordinea de zi pentru a începe procesul-verbal" @@ -105,13 +105,13 @@ ro: label_upcoming_invitations: "Upcoming invitations" label_past_invitations: "Past invitations" label_attendee: "Attendee" - label_author: "Creator" + label_author: "Autor" label_notify: "Trimiteți pentru revizuire" label_icalendar: "Trimiteți iCalendar" label_icalendar_download: "Download iCalendar event" label_version: "Versiune" label_time_zone: "Fus orar" - label_start_date: "Data de început" + label_start_date: "Dată început" meeting: attachments: text: "Attached files are available to all meeting participants. You can also drag and drop these into agenda item notes." @@ -154,7 +154,7 @@ ro: permission_view_meetings: "Vezi întâlniri" permission_create_meeting_agendas: "Create meeting agendas" permission_create_meeting_agendas_explanation: "Allows editing the Classic Meeting's agenda content." - permission_manage_agendas: "Gestionați agendele" + permission_manage_agendas: "Gestionează agendele" permission_manage_agendas_explanation: "Allows managing the Dynamic Meeting's agenda items." permission_close_meeting_agendas: "Închideți agendele" permission_send_meeting_agendas_notification: "Trimiteți o notificare de revizuire pentru agende" @@ -189,18 +189,18 @@ ro: label_agenda_item_move_to_bottom: "Mută jos" label_agenda_item_move_up: "Mută în sus" label_agenda_item_move_down: "Mută în jos" - label_agenda_item_add_notes: "Adăugare note" + label_agenda_item_add_notes: "Adaugă note" label_agenda_item_work_package: "Agenda item work package" text_agenda_item_title: 'Agenda item "%{title}"' text_agenda_work_package_deleted: 'Agenda item for deleted work package' text_deleted_agenda_item: 'Deleted agenda item' - label_initial_meeting_details: "ID Întâlnire" + label_initial_meeting_details: "ID întâlnire" label_meeting_details: "Meeting details" label_meeting_details_edit: "Edit meeting details" label_meeting_state: "Meeting status" - label_meeting_state_open: "Deschis" + label_meeting_state_open: "Deschisă" label_meeting_state_open_html: "Open" - label_meeting_state_closed: "Închis" + label_meeting_state_closed: "Închisă" label_meeting_state_closed_html: "Closed" label_meeting_reopen_action: "Reopen meeting" label_meeting_close_action: "Close meeting" @@ -209,7 +209,7 @@ ro: label_meeting_manage_participants: "Manage participants" label_meeting_no_participants: "No participants" label_meeting_show_hide_participants: "Show/hide %{count} more" - label_meeting_show_all_participants: "Afișare completă" + label_meeting_show_all_participants: "Afișează tot" label_meeting_add_participants: "Add participants" text_meeting_not_editable_anymore: "This meeting is not editable anymore." text_meeting_not_present_anymore: "This meeting was deleted. Please select another meeting." diff --git a/modules/overviews/config/locales/crowdin/js-ro.yml b/modules/overviews/config/locales/crowdin/js-ro.yml index 5aae691ac001..9b78f649dedb 100644 --- a/modules/overviews/config/locales/crowdin/js-ro.yml +++ b/modules/overviews/config/locales/crowdin/js-ro.yml @@ -1,4 +1,4 @@ ro: js: overviews: - label: 'Vedere de ansamblu' + label: 'Prezentare generală' diff --git a/modules/overviews/config/locales/crowdin/ro.yml b/modules/overviews/config/locales/crowdin/ro.yml index 797952fa5356..bc2d8391ea81 100644 --- a/modules/overviews/config/locales/crowdin/ro.yml +++ b/modules/overviews/config/locales/crowdin/ro.yml @@ -1,4 +1,4 @@ ro: overviews: - label: 'Vedere de ansamblu' - permission_manage_overview: 'Gestionați pagina de prezentare generală' + label: 'Prezentare generală' + permission_manage_overview: 'Gestionează pagina de prezentare generală' diff --git a/modules/recaptcha/config/locales/crowdin/ro.yml b/modules/recaptcha/config/locales/crowdin/ro.yml index 7ddd41105468..82828b68b283 100644 --- a/modules/recaptcha/config/locales/crowdin/ro.yml +++ b/modules/recaptcha/config/locales/crowdin/ro.yml @@ -13,7 +13,7 @@ ro: response_limit: 'Response limit for HCaptcha' response_limit_text: 'The maximum number of characters to treat the HCaptcha response as valid.' website_key_text: 'Introduceți cheia site-ului web pe care ați creat-o în consola de administrare reCAPTCHA pentru acest domeniu.' - secret_key: 'Testați cheia secretă' + secret_key: 'Cheie secretă' secret_key_text: 'Introduceți cheia secretă pe care ați creat-o în consola de administrare reCAPTCHA.' type: 'Utilizați reCAPTCHA' type_disabled: 'Dezactivați reCAPTCHA' From c407e9a4b8b4166f2358ef6200fb68d552cc79f2 Mon Sep 17 00:00:00 2001 From: Dombi Attila <83396+dombesz@users.noreply.github.com> Date: Tue, 20 Aug 2024 13:21:10 +0300 Subject: [PATCH 2/6] [#57298] Custom field filter in project list causes internal server error when opening it https://community.openproject.org/work_packages/57298 --- .../queries/filters/shared/custom_fields/base.rb | 2 +- .../projects/filters/custom_field_context.rb | 4 ++-- .../work_packages/filter/custom_field_context.rb | 2 +- spec/features/projects/persisted_lists_spec.rb | 14 +++++++++++++- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/app/models/queries/filters/shared/custom_fields/base.rb b/app/models/queries/filters/shared/custom_fields/base.rb index fb3f7fba60cd..3128557f134a 100644 --- a/app/models/queries/filters/shared/custom_fields/base.rb +++ b/app/models/queries/filters/shared/custom_fields/base.rb @@ -117,7 +117,7 @@ def error_messages def condition [ - custom_field_context.where_subselect_conditions(custom_field, context), + custom_field_context.where_subselect_conditions, operator_strategy.sql_for_field(values_replaced, CustomValue.table_name, "value") ].compact.join(" AND ") end diff --git a/app/models/queries/projects/filters/custom_field_context.rb b/app/models/queries/projects/filters/custom_field_context.rb index 0adf043ca07d..f93f86deab51 100644 --- a/app/models/queries/projects/filters/custom_field_context.rb +++ b/app/models/queries/projects/filters/custom_field_context.rb @@ -52,9 +52,9 @@ def where_subselect_joins(custom_field) SQL end - def where_subselect_conditions(_custom_field, context) + def where_subselect_conditions # Allow searching projects only with :view_project_attributes permission - allowed_project_ids = Project.allowed_to(context.user, :view_project_attributes) + allowed_project_ids = Project.allowed_to(User.current, :view_project_attributes) .select(:id) <<~SQL.squish #{project_db_table}.id IN (#{allowed_project_ids.to_sql}) diff --git a/app/models/queries/work_packages/filter/custom_field_context.rb b/app/models/queries/work_packages/filter/custom_field_context.rb index b28eef722d81..58e9374498c1 100644 --- a/app/models/queries/work_packages/filter/custom_field_context.rb +++ b/app/models/queries/work_packages/filter/custom_field_context.rb @@ -74,7 +74,7 @@ def where_subselect_joins(custom_field) joins end - def where_subselect_conditions(_custom_field, _context) + def where_subselect_conditions nil end end diff --git a/spec/features/projects/persisted_lists_spec.rb b/spec/features/projects/persisted_lists_spec.rb index 8355faca8846..4e13d3631986 100644 --- a/spec/features/projects/persisted_lists_spec.rb +++ b/spec/features/projects/persisted_lists_spec.rb @@ -31,6 +31,7 @@ RSpec.describe "Persisted lists on projects index page", :js, :with_cuprite do + shared_let(:non_member) { create(:non_member, permissions: %i(view_project_attributes)) } shared_let(:admin) { create(:admin) } shared_let(:user) { create(:user) } @@ -50,7 +51,10 @@ name: "Public project", identifier: "public-project", public: true) - project.custom_field_values = { invisible_custom_field.id => "Secret CF" } + project.custom_field_values = { + invisible_custom_field.id => "Secret CF", + custom_field.id => "Visible CF" + } project.save project end @@ -216,6 +220,7 @@ let!(:persisted_query) do build(:project_query, user:, name: "Persisted query") .where("active", "=", "t") + .where("cf_#{custom_field.id}", "~", ["Visible"]) .select("name") .save! end @@ -398,6 +403,13 @@ projects_page.unmark_query_favorite projects_page.expect_sidebar_filter("Persisted query", selected: true, favored: false) end + + it "loads the query with a custom field filter (Regression#57298)" do + projects_page.set_sidebar_filter("Persisted query") + + projects_page.expect_filters_container_hidden + projects_page.expect_filter_set "cf_#{custom_field.id}" + end end describe "persisted query access" do From 952c8b53be14257dbad9e89fcd29dd63ec2dafe4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20G=C3=BCnther?= Date: Wed, 21 Aug 2024 11:03:06 +0200 Subject: [PATCH 3/6] Add note on disabling google auth --- .../authentication/authentication-faq/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/system-admin-guide/authentication/authentication-faq/README.md b/docs/system-admin-guide/authentication/authentication-faq/README.md index f542cce5fe9c..d3a010a9b7d7 100644 --- a/docs/system-admin-guide/authentication/authentication-faq/README.md +++ b/docs/system-admin-guide/authentication/authentication-faq/README.md @@ -16,7 +16,7 @@ The authentication via Google is already activated in the Enterprise cloud. User ## How can I disable the Google authentication? -Disabling the Google based authentication is currently not possible for cloud based installations. +Disabling the Google based authentication currently requires you to reach to [support[at]openproject.com](mailto:support@openproject.com). We will disable the Google login option for you. For on premises installations the functionality can be deactivated the same way it was activated. From 1c6a142006a02ac48148cadb197ee73080ba75b3 Mon Sep 17 00:00:00 2001 From: Andrej Sandorf <77627197+as-op@users.noreply.github.com> Date: Wed, 21 Aug 2024 11:32:38 +0200 Subject: [PATCH 4/6] [#57361] 14.4.0 release notes repeat itself (#16494) + fix typos https://community.openproject.org/work_packages/57361 --- docs/getting-started/my-account/README.md | 2 +- docs/release-notes/14-4-0/README.md | 141 +----------------- .../system-settings/README.md | 2 +- 3 files changed, 6 insertions(+), 139 deletions(-) diff --git a/docs/getting-started/my-account/README.md b/docs/getting-started/my-account/README.md index 3f23bb144d07..953490a28720 100644 --- a/docs/getting-started/my-account/README.md +++ b/docs/getting-started/my-account/README.md @@ -81,7 +81,7 @@ This mode is recommended for users with visuals impairment. In the dropdown menu **Mode** you can pick the color mode. The default setting is the **Light mode**. You can also select the **Dark mode**, which will change the color theme of the OpenProject instance for you. > [!NOTE] -> The dark mode ignores parts of the configured design. Top header and side menu colors are entirely overriden for this mode. Only the accent color and the primary button color are kept, but are calculated to brighter variants. +> The dark mode ignores parts of the configured design. Top header and side menu colors are entirely overridden for this mode. Only the accent color and the primary button color are kept, but are calculated to brighter variants. ![Dark mode in OpenProject](openproject_my_account_dark_mode.png) diff --git a/docs/release-notes/14-4-0/README.md b/docs/release-notes/14-4-0/README.md index 9a1b591c253b..550b292dca5d 100644 --- a/docs/release-notes/14-4-0/README.md +++ b/docs/release-notes/14-4-0/README.md @@ -136,140 +136,7 @@ Clicking on the "Details" link will take the user to the diff view, which is als - Bugfix: Project custom field set to searchable is not searchable \[[#34363](https://community.openproject.org/wp/34363)\] - Bugfix: Unclear that status cannot be updated when required custom field is set \[[#35556](https://community.openproject.org/wp/35556)\] - Bugfix: Missing property in the response of api/v3/work\_packages/{id} JSON (path: \_links/copy) \[[#41053](https://community.openproject.org/wp/41053)\] -- Bugfix: undefined method --- -title: OpenProject 14.4.0 -sidebar_navigation: - title: 14.4.0 -release_version: 14.4.0 -release_date: 2024-08-14 ---- - -# OpenProject 14.4.0 - -Release date: 2024-08-14 - -We released [OpenProject 14.4.0](https://community.openproject.org/versions/2063). The release contains several bug fixes and we recommend updating to the newest version. - -In these Release Notes, we will give an overview of important technical updates as well as important feature changes. At the end, you will find a complete list of all changes and bug fixes. - -## Important technical updates - -### Extend API authentication to accept JWT issued by OpenID provider to other client - -OpenProject 14.4 introduces a new feature that allows OpenID clients, such as Nextcloud servers, to use access tokens obtained from an OpenID provider, like Keycloak, as an authentication mechanism for the OpenProject API. This enhancement **enables users to skip the OAuth grant flow**, streamlining the authentication process. - -With this feature, the OpenProject API will validate access tokens issued by the OpenID provider (Keycloak) by checking the token's signature and authenticating the user using the sub claim value. This integration ensures secure and efficient API authentication for OpenID clients. - -For more details, take a look at our [API documentation](../../api/introduction/#oidc-provider-generated-jwt-as-a-bearer-token). - -### Improve error messages and logs of automatically managed project folders synchronization services/jobs - -OpenProject 14.4 introduces significant enhancements to logging, debugging, and error messages for automatically managed project folders synchronization services and jobs. These improvements aim to provide clearer messages and more detailed logs for both administrators and users. - -Up to now, the system faced issues such as unclear error messages, insufficient log details, and a lack of localized error messages. To address these problems, **the system now provides context-specific error messages** instead of vague ones. For example, instead of "Outbound request destination not found," the system will now display messages like 'The file #{file_link.origin_name} was not found on #{storage_name}', which will also be localized to improve clarity. - -Additionally, the logging structure has been enhanced to provide more detailed, tagged entries for better traceability. - -For more details, see https://community.openproject.org/wp/56861. - -## Important feature changes - -### Personal settings: Dark mode - -Dark mode for OpenProject is finally here! In the '[My account](../../getting-started/my-account/#profile-settings)' section under 'Settings', there is an **option labeled 'Mode' where users can now select 'Dark (Beta).'** – as an alternative to the light mode. When the dark mode is selected, the change applies only to that user, not to the entire instance. - -![News setting for dark mode in OpenProject, displayed in dark mode](openproject-14-4-dark-mode.png) - -Please note that this feature has been tested extensively, and we believe it works well. However, users might encounter issues that we haven't seen. Therefore, it will remain in beta for now, until we resolve all potential errors and ensure there are no issues. - -For more details, see https://community.openproject.org/wp/36233. - -### Project attributes: Separate permissions for viewing and editing - -In OpenProject 14.4, new permissions for managing [project attributes](../../user-guide/projects/project-settings/project-attributes/) provide project admins with more control over who can view and edit these attributes. - -The update adds **two new permissions: 'View project attributes' and 'Edit project attributes'**. 'View project attributes' is added to all roles, while 'Edit project attributes' is added to roles with the 'Edit project' permission. - -![Screenshot showing the two newly added permissions for project attributes](openproject-14-4-project-attributes-permissions-highlighted.png) - -Permissions are now independent, so users with 'Edit project' can lack the new permissions. Users without 'View project attributes' cannot see or search project attributes in the overview, settings, list, exports, API, or Schema API. Users without 'Edit project attributes' cannot modify these attributes but can view them if they have view permission. - -For more details, see https://community.openproject.org/wp/50844. - -### Status-based progress reporting: Freely input % complete values for statuses - -We have improved the status-based progress indicator in OpenProject. As requested by some users, you can now **enter any percentage value in the "% Complete" field**, e.g. 9% or 73%, instead of being limited to 10% increments. Please note that only integer values between 1 and 100 are allowed, so decimal values or non-numeric inputs will not be accepted. - -Here is an example of a new status that triggers a % Complete of 73%: - -![Screenshot showing the OpenProject administration for a new status with % Complete 73%](openproject-14-4-status-percentage-complete.png) - -For more details on status-based progress reporting, see our [system admin guide](../../system-admin-guide/manage-work-packages/work-package-status/). - -### Nextcloud storages: Connection validation - -Last month, we already released a connection validation feature for OneDrive/SharePoint storages. With OpenProject 14.4, we added a connection validation for Nextcloud storages. This feature allows administrators to **verify if the storage works as expected and provides helpful feedback if issues arise**. A new button enables the manual triggering of a connection test and validation of the Nextcloud storage settings. If an error occurs during the test, it will be displayed along with an explanation and helpful information. - -![Screenshot of OpenProject's Connection validation for Nextcloud](openproject_file_storages_recheck_connection_nextcloud.png) - -The validations include checking if the external storage server is reachable, verifying for SSL errors, ensuring the server is accessible, confirming that necessary apps are activated on Nextcloud and that their versions are compatible, and validating the app password. - -Read more about connection validation for Nextcloud in our [system admin guide](../../system-admin-guide/files/external-file-storages/health-status/#connection-validation-for-nextcloud). - -### Project lists: Select/Exclude projects in project list explicitly via filter - -In OpenProject 14.4, users can now **explicitly select or exclude individual projects in the project list, using a filter**. This feature allows users to limit and refine their project lists more precisely. Within the filter section of the project list, there is a new filter called "Project." This filter supports the "is (OR)" and "is not" operators and allows selecting projects via an autocompleter with multiselect capability. - -For example, you can filter your active projects by excluding certain projects: - -![Screenshot of OpenProject 14.4, filtering project lists with 'Project' 'is not'](openproject-14-4-project-lists-filter.png) - -For more details, see https://community.openproject.org/wp/55233. - -### Meetings: Saving a new agenda item does not automatically add another empty one - -In the past, when working with the meeting module in OpenProject, a new agenda item was automatically created as soon as a previous one was saved. This was originally built so that new items could be added to a meeting in quick succession. However, working with it has shown that often no new agenda item was needed at all - but, for example, a work package should be added or another change made. For this reason, OpenProject 14.4 has virtually reversed this feature: **saving a new agenda item no longer creates a new empty one**. - -### Meetings tab on work packages: Display related meetings chronologically - -In OpenProject 14.4, the **meetings tab within work packages now displays related meetings in chronological order**. This feature is designed for users who organize meetings and connect work packages with dynamic meetings, making it easier to see when a work package has been discussed. - -For upcoming meetings, the tab will display them in chronological order with the nearest occurrence first and the most distant last. For past meetings, the tab will display them in reverse chronological order, with the most recent occurrence first and the oldest last. - -### Design: Improve avatar color generation so that users with same names are distinguishable - -Some users share the same name or create several accounts with the same name. To be able to tell them apart, e.g. when looking through search results for that name, we improved the avatar color generation, so that **users with the same name are displayed with different colors**. We recommend uploading an avatar image so that the distinction is even more obvious. - -### Dropdown menu on work packages: Move "Copy link to clipboard" up - -To avoid confusion with the "copy" or "copy to another project" actions, we have moved the "copy link to clipboard" action upwards in the drop-down menu for work packages. This action is now in third place in the work package table view. In the work package detail view, the action is now in first position. - -![Detailed view of a work package, drop down menu with highlighted 'Copy link to clipboard'](openproject-14-4-copy-link.png) - -### Add link to storage provider in storage edit view - -To improve efficiency and access to file storages, OpenProject 14.4 allows administrators to click on a **direct link to the storage provider in the edit view of the storage**. - -In the "General information" section, there is now a link that opens in a new window and leads to the root folder of the storage. For Nextcloud, this link refers to the root folder of the Nextcloud instance. For OneDrive/SharePoint, the link refers to the root folder of the drive ID and also works with "OneDrive Business". - -See https://community.openproject.org/wp/56045 for more information on this feature. - -### Show changes of long text custom fields in the activity similar to changes in the description - -To keep the activity view cleaner when multiple changes are made to long text custom fields, OpenProject 14.4 now **displays updates to long custom fields in a similar format to description updates**. As a user watching the activity, you will see an indication of changes to long text custom fields, making it easier to manage and review activities. - -In the activity tab, updates to long text custom fields will be displayed as in the following example – 'Remarks' being a custom field: - -![Example screenshot showing how changes on a custom field will now look like in the work package activity tab](Custom_field__long_text__changed.png) - -Clicking on the "Details" link will take the user to the diff view, which is also used for work package descriptions and project status explanations. See our [user guide on custom fields](../../user-guide/projects/project-settings/custom-fields/) for more information. - - - -## Bug fixes and changes - - -path' for nil:NilClass when click attanchment \[[#41852](https://community.openproject.org/wp/41852)\] +- Bugfix: 'undefined method path' for nil:NilClass when click attachment \[[#41852](https://community.openproject.org/wp/41852)\] - Bugfix: Required user fields of type Boolean missing asterisk \[[#42325](https://community.openproject.org/wp/42325)\] - Bugfix: Breadcrumb and menu structure is inconsistent for user administration \[[#50109](https://community.openproject.org/wp/50109)\] - Bugfix: "Time 1" label in Email reminders truncated when language=FR \[[#50607](https://community.openproject.org/wp/50607)\] @@ -313,7 +180,7 @@ path' for nil:NilClass when click attanchment \[[#41852](https://community.openp - Bugfix: Some pages of Administration/Projects are missing a breadcrumb \[[#56586](https://community.openproject.org/wp/56586)\] - Bugfix: Some administration pages are missing breadcrumbs and html titles \[[#56587](https://community.openproject.org/wp/56587)\] - Bugfix: Community edition demo videos do not render \[[#56602](https://community.openproject.org/wp/56602)\] -- Bugfix: Background of login screen is inconistent \[[#56608](https://community.openproject.org/wp/56608)\] +- Bugfix: Background of login screen is inconsistent \[[#56608](https://community.openproject.org/wp/56608)\] - Bugfix: \[AppSignal\] TypeError Further errors for other hooks with missing information \[[#56609](https://community.openproject.org/wp/56609)\] - Bugfix: Breadcrumb and menu structure is inconsistent for Email administration \[[#56614](https://community.openproject.org/wp/56614)\] - Bugfix: Breadcrumb and menu structure is inconsistent for Authentication administration \[[#56615](https://community.openproject.org/wp/56615)\] @@ -325,10 +192,10 @@ path' for nil:NilClass when click attanchment \[[#41852](https://community.openp - Bugfix: Dark mode: Wrong text color in Member selection \[[#56805](https://community.openproject.org/wp/56805)\] - Bugfix: Slack Integration page in Admin doesn't have Save button \[[#56813](https://community.openproject.org/wp/56813)\] - Bugfix: Don't blink custom fields form when hiding parts depending on field format \[[#56842](https://community.openproject.org/wp/56842)\] -- Bugfix: Round corners on notification seperator lines \[[#56913](https://community.openproject.org/wp/56913)\] +- Bugfix: Round corners on notification separator lines \[[#56913](https://community.openproject.org/wp/56913)\] - Bugfix: WebAuthn fails on initial registration with activated 2FA security policy \[[#56988](https://community.openproject.org/wp/56988)\] - Bugfix: File names with url-unsafe characters not working \[[#56997](https://community.openproject.org/wp/56997)\] -- Bugfix: OpenProject Dark Mode: selection colour of table rows \[[#57003](https://community.openproject.org/wp/57003)\] +- Bugfix: OpenProject Dark Mode: selection color of table rows \[[#57003](https://community.openproject.org/wp/57003)\] - Bugfix: Impossible to link/create a work package from Nextcloud \[[#57210](https://community.openproject.org/wp/57210)\] - Feature: Dark Mode for OpenProject \[[#36233](https://community.openproject.org/wp/36233)\] - Feature: Theming plugin for Nextcloud Hub integration \[[#55841](https://community.openproject.org/wp/55841)\] diff --git a/docs/system-admin-guide/system-settings/README.md b/docs/system-admin-guide/system-settings/README.md index 776e6124218e..574113031be3 100644 --- a/docs/system-admin-guide/system-settings/README.md +++ b/docs/system-admin-guide/system-settings/README.md @@ -11,7 +11,7 @@ System settings allow you to configure a number of options concerning your OpenP To modify these settings, navigate to **Administration → System settings**. -![System settings in OpenProject adminisration](openproject_system_guide_system_settings.png) +![System settings in OpenProject administration](openproject_system_guide_system_settings.png) ## Overview From eb78ac0abd908327476b38d1f5f989773c702f34 Mon Sep 17 00:00:00 2001 From: Dombi Attila <83396+dombesz@users.noreply.github.com> Date: Wed, 21 Aug 2024 10:42:43 +0300 Subject: [PATCH 5/6] Fix specs --- spec/features/projects/persisted_lists_spec.rb | 3 ++- .../queries/projects/filters/custom_field_filter_spec.rb | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/spec/features/projects/persisted_lists_spec.rb b/spec/features/projects/persisted_lists_spec.rb index 4e13d3631986..826104e26077 100644 --- a/spec/features/projects/persisted_lists_spec.rb +++ b/spec/features/projects/persisted_lists_spec.rb @@ -404,7 +404,8 @@ projects_page.expect_sidebar_filter("Persisted query", selected: true, favored: false) end - it "loads the query with a custom field filter (Regression#57298)" do + it "loads the query with a custom field filter (Regression#57298)", + with_ee: %i[custom_fields_in_projects_list] do projects_page.set_sidebar_filter("Persisted query") projects_page.expect_filters_container_hidden diff --git a/spec/models/queries/projects/filters/custom_field_filter_spec.rb b/spec/models/queries/projects/filters/custom_field_filter_spec.rb index 58dcb804c9e2..f9731f95682e 100644 --- a/spec/models/queries/projects/filters/custom_field_filter_spec.rb +++ b/spec/models/queries/projects/filters/custom_field_filter_spec.rb @@ -319,6 +319,7 @@ describe "#apply_to" do describe "permissions" do let(:user) { build_stubbed(:user) } + current_user { user } it "includes the check for view_project_attributes permission" do projects_query = Project.allowed_to(user, :view_project_attributes) From 8a7a9203e960dc2cdd9050eacb5efb014630da80 Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Thu, 22 Aug 2024 03:08:24 +0000 Subject: [PATCH 6/6] update locales from crowdin [ci skip] --- config/locales/crowdin/fr.seeders.yml | 16 ++++---- config/locales/crowdin/fr.yml | 38 +++++++++---------- config/locales/crowdin/js-fr.yml | 14 +++---- config/locales/crowdin/zh-TW.yml | 2 +- .../storages/config/locales/crowdin/fr.yml | 6 +-- .../storages/config/locales/crowdin/js-fr.yml | 8 ++-- .../config/locales/crowdin/js-fr.yml | 4 +- 7 files changed, 44 insertions(+), 44 deletions(-) diff --git a/config/locales/crowdin/fr.seeders.yml b/config/locales/crowdin/fr.seeders.yml index a783241b5b27..d4e3564dbdfd 100644 --- a/config/locales/crowdin/fr.seeders.yml +++ b/config/locales/crowdin/fr.seeders.yml @@ -74,9 +74,9 @@ fr: item_1: name: Normal item_2: - name: Haut + name: Haute item_3: - name: Immédiat + name: Immédiate projects: demo-project: name: Projet de démonstration @@ -142,7 +142,7 @@ fr: Si vous avez des questions ou si avez besoin d'aide, n'hésitez pas à nous contacter : [support[at]openproject.com](mailto:support@openproject.com). item_5: options: - name: Lots de Travaux + name: Lots de travaux item_6: options: name: Étapes @@ -312,7 +312,7 @@ fr: N'hésitez pas à nous contacter si vous avez des questions ou si vous avez besoin d'aide. N'hésitez pas à nous contacter : [support[at]openproject.com(mailto:support@openproject.com). item_5: options: - name: Lots de Travaux + name: Lots de travaux item_6: options: name: Plan de projet @@ -414,7 +414,7 @@ fr: * L'équipe discute du sprint : ce qui s'est bien passé, ce qui doit être amélioré pour améliorer la productivité pour le prochain sprint ou même avoir plus de plaisir. statuses: item_0: - name: nouveau + name: Nouveau item_1: name: En cous de spécification item_2: @@ -440,7 +440,7 @@ fr: item_12: name: En attente item_13: - name: rejeté + name: Rejeté time_entry_activities: item_0: name: Gestion @@ -449,7 +449,7 @@ fr: item_2: name: Développement item_3: - name: Test + name: En test item_4: name: Support item_5: @@ -466,7 +466,7 @@ fr: item_4: name: Epic item_5: - name: Récit utilisateur + name: User story item_6: name: Bug welcome: diff --git a/config/locales/crowdin/fr.yml b/config/locales/crowdin/fr.yml index 8d016ac34b6e..1ced59d48262 100644 --- a/config/locales/crowdin/fr.yml +++ b/config/locales/crowdin/fr.yml @@ -88,7 +88,7 @@ fr: is_active: actuellement affiché is_inactive: actuellement non affiché antivirus_scan: - not_processed_yet_message: "Le téléchargement est bloqué, car le fichier n'a pas encore été scanné par l'anti-virus. Veuillez réessayer plus tard." + not_processed_yet_message: "Le téléchargement est bloqué, car le fichier n'a pas encore été vérifié par l'anti-virus. Veuillez réessayer plus tard." quarantined_message: "Un virus a été détecté dans le fichier '%{filename}'. Il a été mis en quarantaine et ne peut être téléchargé." deleted_message: "Un virus a été détecté dans le fichier '%{filename}'. Le fichier a été supprimé." deleted_by_admin: "Le fichier en quarantaine '%{filename}' a été supprimé par un administrateur." @@ -244,11 +244,11 @@ fr: #Contains custom strings for options when copying a project that cannot be found elsewhere. members: "Membres du projet" overviews: "Vue d'ensemble du projet" - queries: "Lots de Travaux : vues enregistrées" - wiki_page_attachments: "Pages Wiki : pièces jointes" + queries: "Lots de travaux : vues enregistrées" + wiki_page_attachments: "Pages wiki : pièces jointes" work_package_attachments: "Lots de Travaux : pièces jointes" work_package_categories: "Lots de travaux : catégories" - work_package_file_links: "Lots de Travaux : liens vers des fichiers" + work_package_file_links: "Lots de travaux : liens vers des fichiers" work_package_shares: "Lots de travaux : partages" delete: scheduled: "La suppression a été planifiée et est effectuée en arrière-plan. Vous serez notifié du résultat." @@ -336,10 +336,10 @@ fr: filters: all_shares: "Tous les partages" menu: - all: "Tout" + all: "Tous" invited: "Invité" locked: "Verrouillé" - project_roles: "Rôle du projet" + project_roles: "Rôles du projet" wp_shares: "Partages du lot des travaux" groups: "Groupes" delete_member_dialog: @@ -974,11 +974,11 @@ fr: circular_dependency: "La relation créée un cercle de relations." attributes: to: - error_not_found: "lot de travaux dans la position `à` introuvable ou invisible" - error_readonly: "impossible de modifier le lien d'une relation existante `à`" + error_not_found: "lot de travaux dans la position 'à' introuvable ou invisible" + error_readonly: "impossible de modifier le lien d'une relation existante 'vers'" from: - error_not_found: "lot de travaux dans la position `de` introuvable ou invisible" - error_readonly: "impossible de modifier le lien d'une relation existante `de`" + error_not_found: "lot de travaux dans la position 'depuis' introuvable ou invisible" + error_readonly: "impossible de modifier le lien d'une relation existante 'depuis'" repository: not_available: "Le fournisseur de gestion de contrôle de sources n'est pas disponible" not_whitelisted: "n'est pas autorisé par la configuration." @@ -1034,12 +1034,12 @@ fr: format: "%{message}" due_date: not_start_date: "n'est pas identique à la date de début, bien que cela soit requis pour les jalons." - cannot_be_null: "ne peut pas être défini à NULL car la date de début et la durée sont connues." + cannot_be_null: "ne peut pas être définie à NULL car la date de début et la durée sont connues." duration: larger_than_dates: "est plus grand que l'intervalle entre la date de début et la date de fin." smaller_than_dates: "est plus petit que l'intervalle entre la date de début et la date de fin." not_available_for_milestones: "n'est pas disponible pour les lots de travaux de type jalon." - cannot_be_null: "ne peut pas être défini à NULL car la date de début et la date de fin sont connues." + cannot_be_null: "ne peut pas être définie à NULL car la date de début et la date de fin sont connues." parent: cannot_be_milestone: "ne peut pas être un jalon." cannot_be_self_assigned: "ne peut pas être assigné à lui-même." @@ -1047,7 +1047,7 @@ fr: not_a_valid_parent: "est invalide." start_date: violates_relationships: "peut uniquement valoir %{soonest_start} ou une date ultérieure afin de ne pas violer les relations du lot de travaux." - cannot_be_null: "ne peut pas être défini à NULL car la date de fin et la durée sont connues." + cannot_be_null: "ne peut pas être définie à NULL car la date de fin et la durée sont connues." status_id: status_transition_invalid: "n'est pas valide, car aucune transition valide n'existe de l'ancien vers le nouveau statut pour les rôles de l'utilisateur actuel." status_invalid_in_type: "est invalide car le statut actuel n’existe pas dans ce type." @@ -1093,8 +1093,8 @@ fr: numeric: "numérique (e.g. « 1 »)" special: "spécial (e.g. « % »)" reused: - one: "a déjà été utilisé auparavant. S'il vous plaît, veuillez en choisir un différent." - other: "a déjà été utilisé auparavant. Veuillez faire un choix qui diffère de vos %{count} choix précédents." + one: "a déjà été utilisé. Veuillez choisir un mot de passe différent du précédent." + other: "a déjà été utilisé. Veuillez choisir un mot de passe différent des %{count} précédents." match: confirm: "Confirmez le nouveau mot de passe." description: "La confirmation du mot de passe doit correspondre à celui saisi dans le champ “Nouveau mot de passe”." @@ -1989,7 +1989,7 @@ fr: label_enterprise: "Entreprise" label_enterprise_active_users: "%{current}/%{limit} utilisateurs actifs inscrits" label_enterprise_edition: "Version Entreprise" - label_enterprise_support: "Assistance Enterprise" + label_enterprise_support: "Support Enterprise" label_enterprise_addon: "add-on Enterprise" label_environment: "Environement" label_estimates_and_progress: "Estimations et progression" @@ -2140,7 +2140,7 @@ fr: label_my_queries: "Mes requêtes personnalisées" label_name: "Nom" label_never: "Jamais" - label_new: "nouveau" + label_new: "Nouveau" label_new_features: "Nouvelles fonctionnalités" label_new_statuses_allowed: "Nouveaux statuts autorisés" label_news_singular: "Actualités" @@ -2168,7 +2168,7 @@ fr: label_operator_none: "est vide" label_operator_equals_or: "est (OU)" label_operator_equals_all: "est (ET)" - label_operator_shared_with_user_any: "tout" + label_operator_shared_with_user_any: "tous" label_open_menu: "Ouvrir le menu" label_open_work_packages: "ouverts" label_open_work_packages_plural: "ouverts" @@ -3375,7 +3375,7 @@ fr: unlock_and_reset_failed_logins: "Déverrouiller et réinitialiser les échecs de connexion" version_status_closed: "clôturé" version_status_locked: "verrouillé" - version_status_open: "ouverts" + version_status_open: "ouvert" note: Note note_password_login_disabled: "L'authentification via mot de passe a été désactivé par %{configuration}." warning: Attention diff --git a/config/locales/crowdin/js-fr.yml b/config/locales/crowdin/js-fr.yml index 2a1dcb33c8d7..6ec445696b4a 100644 --- a/config/locales/crowdin/js-fr.yml +++ b/config/locales/crowdin/js-fr.yml @@ -130,17 +130,17 @@ fr: polar_area: "Aire polaire" tabs: graph_settings: "Général" - dataset: "Ensemble de données %{number}%" + dataset: "Ensemble de données %{number}" errors: - could_not_load: "Les données à afficher le graphique n'ont pas pu être chargées. Les permissions nécessaires peuvent être manquantes." + could_not_load: "Les données pour afficher le graphique n'ont pas pu être chargées. Les permissions nécessaires peuvent être manquantes." description_available_columns: "Colonnes disponibles" - description_current_position: "Vous êtes ici :" + description_current_position: "Vous êtes ici : " description_select_work_package: "Sélectionner le lot de travaux #%{id}" description_subwork_package: "Enfant du lot de travaux #%{id}" editor: preview: "Basculer en mode aperçu" source_code: "Basculer en mode source Markdown" - error_saving_failed: "L'enregistrement du document a échoué en raison de l'erreur suivante: %{error}" + error_saving_failed: "L'enregistrement du document a échoué en raison de l'erreur suivante : %{error}" ckeditor_error: "Une erreur s'est produite dans CKEditor" mode: manual: "Basculer en mode source Markdown" @@ -159,7 +159,7 @@ fr: page: "Page du wiki" this_page: "cette page" hint: | - Laissez ce champ vide pour répertorier toutes les pages enfants de la page actuelle. Si vous souhaitez référencer une page différente, indiquez son titre ou slug. + Laissez ce champ vide pour répertorier toutes les pages enfants de la page actuelle. Si vous souhaitez référencer une page différente, indiquez son titre ou son slug. code_block: button: "Insérer le fragment de code" title: "Insérer/modifier le fragment de code" @@ -174,9 +174,9 @@ fr: button: "Inclure le contenu d’une autre page wiki" text: "[Placeholder] Page wiki inclue de" page: "Page du wiki" - not_set: "(page pas encore définie)" + not_set: "(page non encore définie)" hint: | - Incluez le contenu d’une autre page du wiki en indiquant son titre ou slug. + Incluez le contenu d’une autre page du wiki en indiquant son titre ou son slug. Vous pouvez inclure la page wiki d'un autre projet en les séparant par un point-virgule comme dans l’exemple suivant. work_package_button: button: "Insérer un bouton pour créer un lot de travaux" diff --git a/config/locales/crowdin/zh-TW.yml b/config/locales/crowdin/zh-TW.yml index 527cf20bdf35..04f31e8a1bfa 100644 --- a/config/locales/crowdin/zh-TW.yml +++ b/config/locales/crowdin/zh-TW.yml @@ -3013,7 +3013,7 @@ zh-TW: setting_password_days_valid: "在經過多少天後強制執行密碼變更" setting_password_min_length: "最小長度" setting_password_min_adhered_rules: "必要類別的最小數目" - setting_per_page_options: "每頁顯示項目個數的設置" + setting_per_page_options: "設置每頁顯示個數" setting_plain_text_mail: "純文字郵件(不含 HTML)" setting_protocol: "Protocol" setting_project_gantt_query: "專案含甘特圖檢視" diff --git a/modules/storages/config/locales/crowdin/fr.yml b/modules/storages/config/locales/crowdin/fr.yml index d76db41fdb24..1d452f43a02c 100644 --- a/modules/storages/config/locales/crowdin/fr.yml +++ b/modules/storages/config/locales/crowdin/fr.yml @@ -159,7 +159,7 @@ fr: project_storage: 'Voulez-vous vraiment supprimer %{file_storage} de ce projet ? Pour confirmer cette action, veuillez introduire le nom de l''espace de stockage dans le champ ci-dessous, cela permettra de :' project_storage_delete_result_1: Supprimer tous les liens des lots de travaux de ce projet vers les fichiers et dossiers de cet espace de stockage. project_storage_delete_result_2: Si cet espace de stockage a un dossier de projet géré automatiquement, lui et ses fichiers seront définitivement supprimés. - storage: 'Voulez-vous vraiment supprimer %{file_storage} de ce projet ? Pour confirmer cette action, veuillez saisir le nom de l''espace de stockage dans le champ ci-dessous. Cela va :' + storage: 'Êtes-vous sûr de vouloir supprimer %{file_storage} ? Pour confirmer cette action, veuillez introduire le nom du stockage dans le champ ci-dessous :' storage_delete_result_1: Supprimer toutes les configurations de stockage pour tous les projets utilisant ce stockage. storage_delete_result_2: Supprimer tous les liens des lots de travaux de ce projet vers les fichiers et dossiers dans cet espace de stockage. storage_delete_result_3: Si ce stockage contient des dossiers de projet gérés automatiquement, ceux-ci et les fichiers qu'ils contiennent seront supprimés définitivement. @@ -184,7 +184,7 @@ fr: oauth_applications: Applications OAuth one_drive_oauth: OAuth Azure openproject_oauth: OAuth OpenProject - project_folders: Dossier du projet + project_folders: Dossiers du projet redirect_uri: URI de redirection storage_provider: Fournisseur de stockage health: @@ -269,7 +269,7 @@ fr: label_delete_storage: Supprimer le stockage label_edit_storage: Modifier le stockage label_edit_storage_access_management: Modifier la gestion de l'accès à l'espace de stockage - label_edit_storage_automatically_managed_folders: Editer les dossiers automatiquement gérés + label_edit_storage_automatically_managed_folders: Modifier les dossiers automatiquement gérés label_edit_storage_host: Modifier l'hôte de stockage label_existing_manual_folder: Répertoire existant avec permissions gérées manuellement label_file_storage: Stockage de fichiers diff --git a/modules/storages/config/locales/crowdin/js-fr.yml b/modules/storages/config/locales/crowdin/js-fr.yml index 5bd4e2e5ab88..488bd23401a8 100644 --- a/modules/storages/config/locales/crowdin/js-fr.yml +++ b/modules/storages/config/locales/crowdin/js-fr.yml @@ -11,7 +11,7 @@ fr: login_to: "Connexion à %{storageType}" no_connection: "Aucune connexion à %{storageType}" open_storage: "Ouvrir %{storageType}" - select_location: "Sélectionnez la localisation" + select_location: "Sélectionnez l'emplacement" choose_location: "Choisir emplacement" types: nextcloud: "Nextcloud" @@ -31,7 +31,7 @@ fr: already_existing_body: > Un fichier avec le nom « %{fileName} » existe déjà à l'emplacement où vous essayez de téléverser ce fichier. Que voulez-vous faire ? directory_not_writeable: "Vous n'avez pas la permission d'ajouter des fichiers à ce dossier." - dragging_many_files: "Le téléversement vers %{storageType} ne supporte qu'un seul fichier à la fois." + dragging_many_files: "Le dépôt vers %{storageType} ne supporte qu'un seul fichier à la fois." dragging_folder: "Le téléversement vers %{storageType} ne prend pas en charge les dossiers." empty_folder: "Ce dossier est vide." empty_folder_location_hint: "Cliquez sur le bouton ci-dessous pour téléverser le fichier à cet endroit." @@ -52,7 +52,7 @@ fr: open_location: "Ouvrir le fichier à l'emplacement" remove: "Supprimer le lien de fichier" remove_confirmation: > - Êtes-vous sûr de vouloir dissocier le fichier de ce lot de travaux ? Unlinking n'affecte pas le fichier original et supprime seulement la connexion à ce lot de travaux. + Êtes-vous sûr de vouloir dissocier le fichier de ce lot de travaux ? La suppression du lien n'affecte pas le fichier original et supprime seulement la connexion à ce lot de travaux. remove_short: "Supprimer le lien" select: "Sélectionner les fichiers" select_all: "Tout sélectionner" @@ -76,7 +76,7 @@ fr: nextcloud: > Veuillez vérifier que la dernière version de l'application Nextcloud "OpenProject Integration" est installée et contactez votre administrateur pour plus d'informations. link_uploaded_file_error: > - Une erreur s'est produite lors de la liaison du fichier '%{fileName}' récemment téléversé au lot de travaux %{workPackageId}. + Une erreur s'est produite lors de la liaison du fichier '%{fileName}' récemment déposé sur le lot de travaux %{workPackageId}. tooltip: not_logged_in: "Veuillez vous connecter au stockage pour accéder à ce fichier." view_not_allowed: "Vous n'avez pas la permission de voir ce fichier." diff --git a/modules/team_planner/config/locales/crowdin/js-fr.yml b/modules/team_planner/config/locales/crowdin/js-fr.yml index 666bed3adabe..658122291596 100644 --- a/modules/team_planner/config/locales/crowdin/js-fr.yml +++ b/modules/team_planner/config/locales/crowdin/js-fr.yml @@ -7,9 +7,9 @@ fr: create_label: 'Planificateur d''équipe' create_title: 'Créer un nouveau planificateur d''équipe' unsaved_title: 'Planificateur d''équipe sans nom' - no_data: 'Ajouter des personnes pour configurer votre planificateur d''équipe.' + no_data: 'Ajoutez des personnes pour configurer votre planificateur d''équipe.' add_assignee: 'Ajouter quelqu''un' - remove_assignee: 'Retiré l''assigné' + remove_assignee: 'Retirer l''assigné' two_weeks: '2 semaines' one_week: '1 semaine' four_weeks: '4 semaines'