From a99b034b28923d498252d2b82f47899e8a7880d9 Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Wed, 6 Oct 2021 03:14:26 +0000 Subject: [PATCH 01/28] update locales from crowdin [ci skip] --- config/locales/crowdin/js-lt.yml | 8 ++++---- modules/boards/config/locales/crowdin/js-lt.yml | 6 +++--- modules/grids/config/locales/crowdin/js-lt.yml | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/config/locales/crowdin/js-lt.yml b/config/locales/crowdin/js-lt.yml index 36e3eafbe68..526f899aaac 100644 --- a/config/locales/crowdin/js-lt.yml +++ b/config/locales/crowdin/js-lt.yml @@ -224,19 +224,19 @@ lt: description: "Kokie yra Enterprise on-premises Edition privalumai?" high_security: "Saugumo funkcijos" high_security_text: "Vienas prisijungimas (naudojant SAML, OpenID Connect, CAS), dviejų lygių autentifikacija ir automatinis LDAP grupių sinchronizavimas." - installation: "Instaliavimo pagalba" - installation_text: "Patyręs programų inžinierius ves jus per visą instaliavimo ir nustatymo procesą naudojant jūsų pačių infrastruktūrą." + installation: "Diegimo pagalba" + installation_text: "Patyręs programų inžinierius ves jus per visą diegimo ir nustatymo procesą naudojant jūsų pačių infrastruktūrą." premium_features: "„Premium“ funkcijos" premium_features_text: "Agile lentos, savo tema ir logotipas, grafai, protingi darbo scenarijai su apibrėžtais veiksmais, pilna teksto paieška darbo paketų prieduose ir galimybė pasirinkti daugiau nei vieną reikšmę pritaikytuose laukuose." professional_support: "Profesionali pagalba" - professional_support_text: "Gaukite patikimą, artimą pagalbą iš vyresnių pagalbos inžinierių su ekspertinėmis žiniomis apie OpenProject naudojimą verslui kritinėse aplinkose." + professional_support_text: "Gaukite patikimą, artimą pagalbą iš patyrusių pagalbos inžinierių su ekspertinėmis žiniomis apie OpenProject naudojimą verslui kritinėse aplinkose." button_start_trial: "Pradėti bandomąjį laikotarpį" button_book_now: "Užsakyti dabar" confidence: > Mes duodame patikrintos ir palaikomas korporacijos-lygio projektų valdymo programos užtikrintumą -- su atviru kodu ir plačiomis pažiūromis. link_quote: "Gauti pasiūlymą" text: > - OpenProject Enterprise Edition yra pastatyta virš Community Edition. Papildomai įdėta „premium“ savybės ir profesionalus aptarnavimas, pagrindinai orientuotas į organizacijas su daugiau nei 10 vartotojų, kurie naudodami OpenProject valdo verslui kritinius projektus. + OpenProject Enterprise Edition yra pastatyta virš Community Edition. Papildomai įdėta „premium“ savybės ir profesionalus aptarnavimas, pagrinde orientuotas į organizacijas su daugiau nei 10 vartotojų, kurie naudodami OpenProject valdo verslui kritinius projektus. unlimited: "Neribota" you_contribute: "Kūrėjams taip pat reikia apmokėti savo sąskaitas. Su „Enterprise Edition“ jūs iš esmės prisidėsite prie atviro kodo bendruomenės darbo." custom_actions: diff --git a/modules/boards/config/locales/crowdin/js-lt.yml b/modules/boards/config/locales/crowdin/js-lt.yml index 87f99147a50..64ec814f11c 100644 --- a/modules/boards/config/locales/crowdin/js-lt.yml +++ b/modules/boards/config/locales/crowdin/js-lt.yml @@ -17,9 +17,9 @@ lt: is_closed: 'Versija uždaryta. Papildymas negalimas.' close_version: 'Uždaryti versiją' open_version: 'Atidaryti versiją' - lock_version: 'Užrakinti veriją' - unlock_version: 'Atrakinti verisiją' - edit_version: 'Redaguoti veriją' + lock_version: 'Užrakinti versiją' + unlock_version: 'Atrakinti versiją' + edit_version: 'Redaguoti versiją' show_version: 'Parodyti versiją' locked: 'Užrakinta' closed: 'Uždaryta' diff --git a/modules/grids/config/locales/crowdin/js-lt.yml b/modules/grids/config/locales/crowdin/js-lt.yml index 4246c793429..8c561cf56b6 100644 --- a/modules/grids/config/locales/crowdin/js-lt.yml +++ b/modules/grids/config/locales/crowdin/js-lt.yml @@ -37,7 +37,7 @@ lt: not_set: 'Nenustatyta' subprojects: title: 'Sub-projektai' - no_results: 'Nėra su-projektų.' + no_results: 'Nėra subprojektų.' time_entries_current_user: title: 'Mano sugaištas laikas' displayed_days: 'Valdiklyje rodomos dienos:' From 37ed42d6be89d4c24192bc9a910fc5fbcaf4fc55 Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Fri, 8 Oct 2021 03:02:36 +0000 Subject: [PATCH 02/28] update locales from crowdin [ci skip] --- config/locales/crowdin/js-lt.yml | 2 +- config/locales/crowdin/lt.yml | 12 ++++++------ modules/meeting/config/locales/crowdin/lt.yml | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/config/locales/crowdin/js-lt.yml b/config/locales/crowdin/js-lt.yml index 526f899aaac..d4590c4e527 100644 --- a/config/locales/crowdin/js-lt.yml +++ b/config/locales/crowdin/js-lt.yml @@ -302,7 +302,7 @@ lt: label_add_row_before: "Pridėti eilutę prieš" label_add_selected_columns: "Pridėti pažymėtus stulpelius" label_added_by: "pridėta" - label_added_time_by: "Pridėjo %{author} prieš %{age}" + label_added_time_by: "%{author} pridėjo prieš %{age}" label_ago: "dienų prieš" label_all: "visi" label_all_work_packages: "visi darbų paketai" diff --git a/config/locales/crowdin/lt.yml b/config/locales/crowdin/lt.yml index 74267e53c6e..f8df32fd111 100644 --- a/config/locales/crowdin/lt.yml +++ b/config/locales/crowdin/lt.yml @@ -113,10 +113,10 @@ lt: OpenProject ieškos naudotojų tik šio submedžio ribose. Pavyzdys: ou=users,dc=example,dc=com filter_string: | - Pridėkite nebūtiną RFC4515 filtrą, kuris bus naudojamas riboti perduodamų iš LDAP vartotojų sąrašą. - Jis gali būti naudojamas norint sumažinti aibę vartotojų, kuriuos OpenProject ras ir galės naudoti autentifikavimui ir grupių sinchronizavimui. + Pridėkite nebūtiną RFC4515 filtrą, kuris bus naudojamas riboti perduodamų iš LDAP naudotojų sąrašą. + Jis gali būti naudojamas norint sumažinti aibę naudotojų, kuriuos OpenProject ras ir galės naudoti autentifikavimui ir grupių sinchronizavimui. filter_string_concat: | - OpenProject įrašų identifikavimui visada naudos login atributą su vartotojo pateiktais duomenimis. Jei jūs čia nurodysite filtrą, jis prie kitų filtrų bus prijungtas naudojant AND. Nenurodžius, bus naudojamas viską apimantis filtras (objectClass=*). + OpenProject įrašų identifikavimui visada naudos login atributą su naudotojo pateiktais duomenimis. Jei jūs čia nurodysite filtrą, jis prie kitų filtrų bus prijungtas naudojant AND. Nenurodžius, bus naudojamas viską apimantis filtras (objectClass=*). onthefly_register: | Jei pažymėsite šį lauką, OpenProject automatiškai sukurs naujus naudotojus pagal LDAP informaciją, kai tik šie vartotojai pirmą kartą prisijungs prie OpenProject. Nežymėkite šio lauko, jei norite, kad tik jau sukurti naudotojai galėtų prisijungti pasinaudodami LDAP! @@ -241,8 +241,8 @@ lt: no_results_content_text: Pridėti kaip naujieną users: groups: - member_in_these_groups: 'Šis vartotojas šiuo metu yra narys šiose grupėse:' - no_results_title_text: Šis vartotojas nėra jokios grupės narys. + member_in_these_groups: 'Šis naudotojas šiuo metu yra šių grupių narys:' + no_results_title_text: Šis naudotojas nėra jokios grupės narys. memberships: no_results_title_text: Šis vartotojas šiuo metu nėra projekto narys. placeholder_users: @@ -386,7 +386,7 @@ lt: attr_mail: "El. paštos atributas" base_dn: "Bazinis DN" host: "Hostas" - onthefly: "Automatinis vartotojų kūrimas" + onthefly: "Automatinis naudotojų kūrimas" port: "Jungtis" changeset: repository: "Repozitorija" diff --git a/modules/meeting/config/locales/crowdin/lt.yml b/modules/meeting/config/locales/crowdin/lt.yml index 0a19df686e2..368aac12890 100644 --- a/modules/meeting/config/locales/crowdin/lt.yml +++ b/modules/meeting/config/locales/crowdin/lt.yml @@ -75,7 +75,7 @@ lt: permission_create_meeting_minutes: "Valdyti minutes" permission_send_meeting_minutes_notification: "Siųsti peržiūros pranešimą minutėms" permission_meetings_send_invite: "Pakviesti vartotojus į susitikimą" - permission_send_meeting_agendas_icalendar: "Siųsti susitikimo agendą kaip kalendoriaus įrašą" + permission_send_meeting_agendas_icalendar: "Siųsti susitikimo planą kaip kalendoriaus įrašą" project_module_meetings: "Pasitarimai" text_duration_in_hours: "Trukmė valandomis" text_in_hours: " valandos(-ų) " From 379a0969bbc66dce518c20cbd6e985df08b452b5 Mon Sep 17 00:00:00 2001 From: Markus Kahl Date: Wed, 6 Oct 2021 10:01:59 +0100 Subject: [PATCH 03/28] handle invalid group_users entries, prevent new ones --- app/models/group_user.rb | 3 +++ app/services/groups/update_service.rb | 8 +++++++- ...211005135637_remove_invalid_group_users.rb | 5 +++++ .../groups/shared_contract_examples.rb | 20 ++++++++++++++++--- spec/models/group_spec.rb | 10 ++++++++++ 5 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 db/migrate/20211005135637_remove_invalid_group_users.rb diff --git a/app/models/group_user.rb b/app/models/group_user.rb index 86ab4af65b7..0a0e2fd9109 100644 --- a/app/models/group_user.rb +++ b/app/models/group_user.rb @@ -32,4 +32,7 @@ class GroupUser < ApplicationRecord belongs_to :group, touch: true belongs_to :user + + validates_presence_of :group + validates_presence_of :user end diff --git a/app/services/groups/update_service.rb b/app/services/groups/update_service.rb index 385a5fbdc25..fa82eaabbb8 100644 --- a/app/services/groups/update_service.rb +++ b/app/services/groups/update_service.rb @@ -32,7 +32,7 @@ class Groups::UpdateService < ::BaseServices::Update protected def persist(call) - removed_users = call.result.group_users.select(&:marked_for_destruction?).map(&:user) + removed_users = groups_removed_users(call.result) member_roles = member_roles_to_prune(removed_users) project_ids = member_roles.pluck(:project_id) member_role_ids = member_roles.pluck(:id) @@ -59,6 +59,10 @@ class Groups::UpdateService < ::BaseServices::Update call end + def groups_removed_users(group) + group.group_users.select(&:marked_for_destruction?).map(&:user).compact + end + def remove_member_roles(member_role_ids) ::Groups::CleanupInheritedRolesService .new(model, current_user: user) @@ -66,6 +70,8 @@ class Groups::UpdateService < ::BaseServices::Update end def member_roles_to_prune(users) + return MemberRole.none if users.empty? + MemberRole .includes(member: :member_roles) .where(inherited_from: model.members.joins(:member_roles).select('member_roles.id')) diff --git a/db/migrate/20211005135637_remove_invalid_group_users.rb b/db/migrate/20211005135637_remove_invalid_group_users.rb new file mode 100644 index 00000000000..6b44ad8e687 --- /dev/null +++ b/db/migrate/20211005135637_remove_invalid_group_users.rb @@ -0,0 +1,5 @@ +class RemoveInvalidGroupUsers < ActiveRecord::Migration[6.1] + def up + GroupUser.left_outer_joins(:user).where(users: { id: nil }).destroy_all + end +end diff --git a/spec/contracts/groups/shared_contract_examples.rb b/spec/contracts/groups/shared_contract_examples.rb index e4e4620e41a..e3c2114b8ee 100644 --- a/spec/contracts/groups/shared_contract_examples.rb +++ b/spec/contracts/groups/shared_contract_examples.rb @@ -32,18 +32,32 @@ require 'spec_helper' shared_examples_for 'group contract' do let(:group_name) { 'The group' } + let(:group_users_user_ids) { [42, 43] } let(:group_users) do - [FactoryBot.build_stubbed(:group_user, user_id: 1), - FactoryBot.build_stubbed(:group_user, user_id: 2)] + group_users_user_ids.map { |id| FactoryBot.build_stubbed(:group_user, user_id: id) } end - it_behaves_like 'contract is valid for active admins and invalid for regular users' + shared_context 'with real group users' do + # make sure users actually exist (not just stubbed) in this case + # so GroupUser validations checking for the existance of group and user don't fail + before do + group_users_user_ids.each do |id| + FactoryBot.create :user, id: id + end + end + end + + it_behaves_like 'contract is valid for active admins and invalid for regular users' do + include_context 'with real group users' + end describe 'validations' do let(:current_user) { FactoryBot.build_stubbed :admin } context 'name' do context 'is valid' do + include_context 'with real group users' + it_behaves_like 'contract is valid' end diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb index b9742a7684f..9b64b2a21c7 100644 --- a/spec/models/group_spec.rb +++ b/spec/models/group_spec.rb @@ -73,6 +73,16 @@ describe Group, type: :model do describe '#group_users' do context 'when adding a user' do + context 'which does not exist' do + it 'does not create a group user' do + count = group.group_users.count + gu = group.group_users.create user_id: User.maximum(:id).to_i + 1 + + expect(gu).not_to be_valid + expect(group.group_users.count).to eq count + end + end + it 'updates the timestamp' do updated_at = group.updated_at group.group_users.create(user: user) From 3e34cd1a2c85782d6e95f620ad7bda9b97f1a983 Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Sat, 9 Oct 2021 03:11:27 +0000 Subject: [PATCH 04/28] update locales from crowdin [ci skip] --- config/locales/crowdin/js-lt.yml | 32 +++--- config/locales/crowdin/lt.yml | 100 +++++++++--------- modules/bim/config/locales/crowdin/lt.yml | 2 +- .../boards/config/locales/crowdin/js-lt.yml | 8 +- modules/costs/config/locales/crowdin/lt.yml | 2 +- .../ldap_groups/config/locales/crowdin/lt.yml | 10 +- 6 files changed, 77 insertions(+), 77 deletions(-) diff --git a/config/locales/crowdin/js-lt.yml b/config/locales/crowdin/js-lt.yml index d4590c4e527..0d9a539dddf 100644 --- a/config/locales/crowdin/js-lt.yml +++ b/config/locales/crowdin/js-lt.yml @@ -200,7 +200,7 @@ lt: label_last_name: "Pavardė" label_domain: "Domenas" label_subscriber: "Prenumeruotojas" - label_maximum_users: "Maksimalus aktyvių vartotojų skaičius" + label_maximum_users: "Maksimalus aktyvių naudotojų skaičius" label_starts_at: "Prasideda nuo" label_expires_at: "Nustoja galioti" receive_newsletter: Noriu gauti OpenProject naujienlaiškį. @@ -287,7 +287,7 @@ lt: standard: learn_about_link: https://www.openproject.org/openproject-11-3-release current_new_feature_html: > - Šioje laidoje yra įvairios naujos galimybės ir patobulinimai:
  • Naujas mygtukas navigacijos antraštėje skirtas kurti naujus projektus, vartotojus ir darbų paketus.
  • Naujas modalinis langas vartotojams, grupėms ir statytiniams vartotojams kurti leidžia lengvai pridėti vartotojus ir priskirti juos darbų paketams.
  • GitHub integracija į OpenProject.
  • API v3 praplėtimai grupėms ir ne tik, t.y. realizuota galimybė kurti, skaityti, atnaujinti ir pašalinti grupes ir grupių narius naudojant API.
  • Galimybė pasirinkti daugiau nei vieną variantą projekto sąrašo tipo vartotojo laukuose.
  • Atsarginės kopijos kūrimas iš web sąsajos.
+ Šioje laidoje yra įvairios naujos galimybės ir patobulinimai:
  • Naujas mygtukas navigacijos antraštėje skirtas kurti naujus projektus, naudotojus ir darbų paketus.
  • Naujas modalinis langas naudotojams, grupėms ir statytiniams naudotojams kurti leidžia lengvai pridėti naudotojus ir priskirti juos darbų paketams.
  • GitHub integracija į OpenProject.
  • API v3 praplėtimai grupėms ir ne tik, t.y. realizuota galimybė kurti, skaityti, atnaujinti ir pašalinti grupes ir grupių narius naudojant API.
  • Galimybė pasirinkti daugiau nei vieną audotoją projekto sąrašo tipo naudotojo laukuose.
  • Atsarginės kopijos kūrimas iš web sąsajos.
bim: learn_about_link: https://www.openproject.org/openproject-11-4-release current_new_feature_html: > @@ -425,7 +425,7 @@ lt: label_today: "Šiandien" label_time_entry_plural: "Praleista laiko" label_up: "Aukštyn" - label_user_plural: "Vartotojai" + label_user_plural: "Naudotojai" label_activity_show_only_comments: "Rodyti veiklą tik su komentarais" label_activity_show_all: "Rodyti visus atributus" label_total_progress: "%{percent} % įvykdyta" @@ -992,29 +992,29 @@ lt: title: invite: 'Pakviesti vartotoją' invite_to_project: 'Pakviesti %{type} į %{project}' - User: 'vartotojas' + User: 'naudotojas' Group: 'grupė' - PlaceholderUser: 'statytinis vartotojas' + PlaceholderUser: 'statytinis naudotojas' invite_principal_to_project: 'Pakviesti %{principal} į %{project}' project: label: 'Projektas' required: 'Pasirinkite projektą' - lacking_permission: 'Prašome pasirinkti kitą projektą, nes dabar pasirinktame jūs neturite teisių priskirti vartotojus.' - lacking_permission_info: 'Jums trūksta teisių priskirti vartotojus projekte, kuriame dabar esate. Turėtumėte pasirinkti kitą projektą.' + lacking_permission: 'Prašome pasirinkti kitą projektą, nes dabar pasirinktame jūs neturite teisių priskirti naudotojus.' + lacking_permission_info: 'Jums trūksta teisių priskirti naudotojus projekte, kuriame dabar esate. Turėtumėte pasirinkti kitą projektą.' next_button: 'Kitas' no_results: 'Nerasta jokių projektų' no_invite_rights: 'Jums neleidžiama kviesti narius į projektą' type: required: 'Prašome pasirinkti kokio tipo dalyvį kviesti' user: - title: 'Vartotojas' + title: 'Naudotojas' description: 'Teisės, suteiktos pagal pasirinktame projekte turimą rolę' group: title: 'Grupė' description: 'Teisės, suteiktos pagal pasirinktame projekte turimą rolę' placeholder: - title: 'Statytinis vartotojas' - title_no_ee: 'Statytiniai vartotojai (galimybė pasiekiama tik Enterprise Edition)' + title: 'Statytinis naudotojas' + title_no_ee: 'Statytiniai naudotojai (galimybė pasiekiama tik Enterprise Edition)' description: 'Neturi prieigos prie projekto ir jokie el. pašto laiškai nebuvo išsiųsti.' description_no_ee: 'Neturi prieigos prie projekto ir jokie el. pašto laiškai nebuvo išsiųsti.
Patikrinkite Enterprise Edition' principal: @@ -1022,15 +1022,15 @@ lt: name_or_email: 'Vardas arba elektroninio pašto adresas' name: 'Vardas' already_member_message: 'Jau yra %{project} narys' - no_results_user: 'Nerasta jokių vartotojų.' + no_results_user: 'Nerasta jokių naudotojų.' invite_user: 'Pakviesti:' - no_results_placeholder: 'Nerasta jokių statytinių vartotojų.' - create_new_placeholder: 'Sukurkite naują statytinį vartotoją:' + no_results_placeholder: 'Nerasta jokių statytinių naudotojų.' + create_new_placeholder: 'Sukurkite naują statytinį naudotoją:' no_results_group: 'Nerasta jokių grupių.' next_button: 'Kitas' required: user: 'Pasirinkite naudotoją' - placeholder: 'Prašome pasirinkti statytinį vartotoją' + placeholder: 'Prašome pasirinkti statytinį naudotoją' group: 'Prašome pasirinkti grupę' role: label: 'Rolė projekte %{project}' @@ -1047,8 +1047,8 @@ lt: success: title: '%{principal} buvo pakviestas!' description: - user: 'Vartotojas gali prisijungti ir pasiekti %{project}. Tuo pačiu, jūs jau galite planuoti darbus su šiuo vartotoju ir pavyzdžiui priskirti jam darbo užduotis.' - placeholder: 'Statytinis vartotojas gali prisijungti ir pasiekti %{project}. Tuo pačiu, jūs jau galite planuoti darbus su šiuo vartotoju ir pavyzdžiui priskirti jam darbo užduotis.' + user: 'Naudotojas gali prisijungti ir pasiekti %{project}. Tuo pačiu, jūs jau galite planuoti darbus su šiuo naudotoju ir pavyzdžiui priskirti jam darbo užduotis.' + placeholder: 'Statytinis naudotojas gali prisijungti ir pasiekti %{project}. Tuo pačiu, jūs jau galite planuoti darbus su šiuo naudotoju ir pavyzdžiui priskirti jam darbo užduotis.' group: 'Grupė jau tapo %{project} dalimi. Tuo pačiu, jūs jau galite planuoti darbus su šia grupe ir pavyzdžiui priskirti jai darbo užduotis.' next_button: 'Tęsti' forms: diff --git a/config/locales/crowdin/lt.yml b/config/locales/crowdin/lt.yml index f8df32fd111..02c740c86e5 100644 --- a/config/locales/crowdin/lt.yml +++ b/config/locales/crowdin/lt.yml @@ -78,7 +78,7 @@ lt: is_active: šiuo metu rodoma is_inactive: šiuo metu nerodoma attribute_help_texts: - note_public: 'Bet koks tekstas ir piešinukai, kuriuos jūs pridedate prie šio lauko, yra viešai matomas visiems prisijungusiems vartotojams!' + note_public: 'Bet koks tekstas ir piešinukai, kuriuos jūs pridedate prie šio lauko, yra viešai matomas visiems prisijungusiems naudotojams!' text_overview: 'Šioje peržiūroje Jūs galite kurti pritaikytus pagalbos tekstus atributams. Kai nustatyti, šie tekstai gali būti rodomi paspaudžiant pagalbos piktogramą šalia atitinkamo atributo.' label_plural: 'Atributų pagalbos tekstai' show_preview: 'Peržiūrėti tekstą' @@ -102,7 +102,7 @@ lt: host: LDAP serverio vardas arba IP adresas login_map: LDAP atributo, kuris naudojamas vienareikšmiškai nustatyti besijungiantį asmenį, pavadinimas. Dažniausiai tai būna `uid` arba `samAccountName`. generic_map: LDAP atributo pavadinimas, kuris bus susietas su OpenProject atributu `%{attribute}` - admin_map_html: "Pasirinktinis: LDAP atributas, kuris jei bus nustatytas pažymi, kad vartotojas yra OpenProject administratorius. Jei abejojate, palikite tuščią." + admin_map_html: "Pasirinktinis: LDAP atributas, kuris jei bus nustatytas pažymi, kad naudotojas yra OpenProject administratorius. Jei abejojate, palikite tuščią." system_user_dn_html: | Įveskite sisteminio naudotojo, naudojamos tik skaitymo teisėmis jugtis prie LDAP, DN.
@@ -118,7 +118,7 @@ lt: filter_string_concat: | OpenProject įrašų identifikavimui visada naudos login atributą su naudotojo pateiktais duomenimis. Jei jūs čia nurodysite filtrą, jis prie kitų filtrų bus prijungtas naudojant AND. Nenurodžius, bus naudojamas viską apimantis filtras (objectClass=*). onthefly_register: | - Jei pažymėsite šį lauką, OpenProject automatiškai sukurs naujus naudotojus pagal LDAP informaciją, kai tik šie vartotojai pirmą kartą prisijungs prie OpenProject. + Jei pažymėsite šį lauką, OpenProject automatiškai sukurs naujus naudotojus pagal LDAP informaciją, kai tik šie naudotojai pirmą kartą prisijungs prie OpenProject. Nežymėkite šio lauko, jei norite, kad tik jau sukurti naudotojai galėtų prisijungti pasinaudodami LDAP! connection_encryption: 'Jungties šifravimas' system_account: 'Sistemos paskyra' @@ -185,7 +185,7 @@ lt: no_results_title_text: Nėra jokių grupių. no_results_content_text: Sukurti naują grupę users: - no_results_title_text: Nėra šios grupės vartotojų. + no_results_title_text: Nėra šios grupės naudotojų. memberships: no_results_title_text: Nėra projektų šiai grupei. incoming_mails: @@ -244,18 +244,18 @@ lt: member_in_these_groups: 'Šis naudotojas šiuo metu yra šių grupių narys:' no_results_title_text: Šis naudotojas nėra jokios grupės narys. memberships: - no_results_title_text: Šis vartotojas šiuo metu nėra projekto narys. + no_results_title_text: Šis naudotojas šiuo metu nėra projekto narys. placeholder_users: right_to_manage_members_missing: > - Jums neleidžiama ištrinti statytinio vartotojo. Jūs neturite teisių valdyti projektų narių visuose projektuose, kuriuose šis statytinis vartotojas yra narys. - delete_tooltip: "Pašalinti statytinį vartotoją" + Jums neleidžiama ištrinti statytinio naudotojo. Jūs neturite teisių valdyti projektų narių visuose projektuose, kuriuose šis statytinis naudotojas yra narys. + delete_tooltip: "Pašalinti statytinį naudotoją" deletion_info: - heading: "Pašalinti statytinį vartotoją %{name}" + heading: "Pašalinti statytinį naudotoją %{name}" data_consequences: > - Visose vietose, kur naudojamas statytinis vartotojas (t.y. kaip paskirtas, atsakingas ar kitose vartotojo vietose) jis bus pakeistas į vartotoją „Deleted user“. - Kadangi visų ištrintų vartotojų visi duomenys yra priskiriami šiam vartotojui, nebebus galima atskirti šio vartotojo sukurtų duomenų, nuo tų, kuriuos sukūrė kiti ištrinti vartotojai. + Visose vietose, kur naudojamas statytinis naudotojas (t.y. kaip paskirtas, atsakingas ar kitose naudotojo vietose) jis bus pakeistas į naudotoją „Ištrintas naudotojas“. + Kadangi visų ištrintų naudotojų visi duomenys yra priskiriami šiam naudotojui, nebebus galima atskirti šio naudotojo sukurtų duomenų, nuo tų, kuriuos sukūrė kiti ištrinti naudotojai. irreversible: "Šis veiksmas negrįžtamas" - confirmation: "Naikinimo patvirtinimui įveskite statytinio vartotojo vardą %{name}." + confirmation: "Naikinimo patvirtinimui įveskite statytinio naudotojo vardą %{name}." upsale: title: Priskirkite darbus žmonėms, kurie nėra projekto nariai. description: > @@ -341,24 +341,24 @@ lt: deleted: "Paskyrą sėkmingai ištrinta" deletion_info: data_consequences: - other: "Vartotojo duomenys (pvz., el. paštas, nustatymai, darbo paketai, wiki įrašai) bus ištrinti kiek įmanoma. Tačiau duomenys, kaip darbo paketai, viki įrašai, negali būti ištrinti nepaveikiant kitų vartotojų darbo. Taigi, tokie duomenys priskiriami ištrinto vartotojo paskyrai „Deleted user“. Kadangi kiekvieno ištrinto vartotojo duomenys priskiriami tam vartotojui, nėra įmanoma išskirti atskirų ištrintų vartotojų duomenų." - self: "Jūsų vartotojo duomenys (pvz., el. paštas, nustatymai, darbo paketai, wiki įrašai) bus ištrinti kiek įmanoma. Tačiau duomenys, kaip darbo paketai, viki įrašai, negali būti ištrinti nepaveikiant kitų vartotojų darbo. Taigi, tokie duomenys priskiriami ištrinto vartotojo paskyrai „Deleted user“. Kadangi kiekvieno ištrinto vartotojo duomenys priskiriami tam vartotojui, nebus įmanoma išskirti jūsų ir kito ištrinto vartotojo duomenų." + other: "Naudotojo duomenys (pvz., el. paštas, nustatymai, darbo paketai, wiki įrašai) bus ištrinti kiek įmanoma. Tačiau duomenys, kaip darbo paketai, viki įrašai, negali būti ištrinti nepaveikiant kitų naudotojų darbo. Taigi, tokie duomenys priskiriami ištrinto naudotojo paskyrai „Ištrintas naudotojas“. Kadangi kiekvieno ištrinto naudotojo duomenys priskiriami tam pačiam naudotojui, nėra įmanoma išskirti atskirų ištrintojo naudotojo duomenų." + self: "Jūsų naudotojo duomenys (pvz., el. paštas, nustatymai, darbo paketai, wiki įrašai) bus ištrinti kiek įmanoma. Tačiau duomenys, kaip darbo paketai, viki įrašai, negali būti ištrinti nepaveikiant kitų naudotojų darbo. Taigi, tokie duomenys priskiriami ištrinto naudotojo paskyrai „Ištrintas naudotojas“. Kadangi kiekvieno ištrinto naudotojo duomenys priskiriami tam pačiam naudotojui, nebus įmanoma išskirti jūsų ir kitų ištrintų naudotojų duomenų." heading: "Ištrinti paskyrą %{name}" info: other: "Paskyros ištrynimas yra negrįžtamas veiksmas." self: "Jūsų paskyros ištrynimas yra negrįžtamas veiksmas." login_consequences: - other: "Paskyra bus ištrinta iš aplikacijos. Vartotojas nebegalės prisijungti su savo prisijungimo duomenimis. Jis gali pasirinkti galimybę vėl tapti šios aplikacijos vartotoju pasinaudodamas suteikta galimybe." - self: "Jūsų paskyra bus ištrinta iš sistemos. Jūs nebegalėsite prisijungti su savo prisijungimo duomenimis. Jei panorėsite vėl tapti šios sistemos vartotoju, galite pasinaudoti suteikta galimybe." + other: "Paskyra bus ištrinta iš aplikacijos. Naudotojas nebegalės prisijungti su savo prisijungimo duomenimis. Jis gali pasirinkti galimybę vėl tapti šios aplikacijos naudotoju pasinaudodamas suteikta galimybe." + self: "Jūsų paskyra bus ištrinta iš sistemos. Jūs nebegalėsite prisijungti su savo prisijungimo duomenimis. Jei panorėsite vėl tapti šios sistemos naudotojų, galite pasinaudoti suteikta galimybe." login_verification: - other: "Įveskite prisijungimo %{name}, kad patvirtintumėte naikinimą. Nurodžius, jūsų paprašys patvirtinti jūsų slaptažodį." + other: "Įveskite prisijungimą %{name}, kad patvirtintumėte naikinimą. Nurodžius, jūsų paprašys patvirtinti jūsų slaptažodį." self: "Įveskite jūsų prisijungimo %{name}, kad patvirtintumėte naikinimą. Įvedus, jūsų bus paprašyta patvirtinti jūsų slaptažodį." error_inactive_activation_by_mail: > Jūsų paskyra dar neaktyvuota. Norėdami aktyvuoti, paspauskite nuorodą, kuri buvo nusiųsta į Jūsų nurodytą el. pašto dėžutę. error_inactive_manual_activation: > Jūsų paskyra neaktyvuota. Prašome palaukti, kol administratorius patvirtins Jūsų registraciją. error_self_registration_disabled: > - Vartotojų registracija išjungta šioje sistemoje. Susisiekite su administratoriumi, kad jis sukurtų Jūsų asmeninę paskyrą. + Naudotojų registracija išjungta šioje sistemoje. Susisiekite su administratoriumi, kad jis sukurtų Jūsų asmeninę paskyrą. login_with_auth_provider: "arba prisijunkite su jau turima paskyra" signup_with_auth_provider: "arba prisiregistruokite naudodami" auth_source_login: Prisijunkite kaip %{login}, norėdami aktyvuoti savo paskyrą. @@ -414,7 +414,7 @@ lt: expires_at: "Nustoja galioti" subscriber: "Prenumeruotojas" encoded_token: "„Enterprise“ paramos raktas" - active_user_count_restriction: "Maksimalus aktyvių vartotojų skaičius" + active_user_count_restriction: "Maksimalus aktyvių naudotojų skaičius" grids/grid: page: "Puslapis" row_count: "Eilučių skaičius" @@ -457,7 +457,7 @@ lt: repository: url: "URL" role: - assignable: "Darbų paketai gali būti priskirti vartotojams ir grupėms pagal rolės vaidmenį atitinkamame projekte" + assignable: "Darbų paketai gali būti priskirti naudotojams ir grupėms pagal rolės vaidmenį atitinkamame projekte" time_entry: activity: "Veikla" hours: "Valandų" @@ -558,7 +558,7 @@ lt: less_than_or_equal_to: "turi būti mažesnis arba lygus %{count}." not_available: "yra nepasiekiamas dėl sistemos konfigūracijos" not_deletable: "negali būti pašalintas." - not_current_user: "nėra dabartinis vartotojas" + not_current_user: "nėra dabartinis naudotojas" not_a_date: "nėra tinkama data." not_a_datetime: "nėra tinkama data ir laikas." not_a_number: "nėra skaičius." @@ -693,7 +693,7 @@ lt: start_date: violates_relationships: "negali būti nustatyta į %{soonest_start} ar vėliau, kad nepažeistų darbų paketo ryšių." status_id: - status_transition_invalid: "netinkamas, nes nėra tinkamo perėjimo iš senos į naują būseną esamoms vartotojų rolėms." + status_transition_invalid: "netinkamas, nes nėra tinkamo perėjimo iš senos į naują būseną esamoms naudotojų rolėms." status_invalid_in_type: "yra netinkamas, nes dabartinė būsena neegzistuoja šiame tipe." type: cannot_be_milestone_due_to_children: "negali būti etapas, nes šis darbo paketas turi vaikų." @@ -729,11 +729,11 @@ lt: confirm: "Patvirtinkite naują slaptažodį." description: "„Slaptažodžio patvirtinimas“ turi sutapti su įvestu į laukelį „Naujas slaptažodis“." status: - invalid_on_create: "yra netinkama naujų vartotojų būsena." + invalid_on_create: "yra netinkama naujų naudotojų būsena." auth_source: error_not_found: "nerasta" member: - principal_blank: "Prašome pasirinkti bent vieną vartotoją ar grupę." + principal_blank: "Prašome pasirinkti bent vieną naudotoją ar grupę." role_blank: "turi būti priskirtas." attributes: roles: @@ -763,16 +763,16 @@ lt: status: "Darbų paketo būsena" member: "Narys" news: "Naujienos" - placeholder_user: "Statytinis vartotojas" + placeholder_user: "Statytinis naudotojas" project: "Projektas" - query: "Vartotojo užklausa" + query: "Sava užklausa" role: one: "Rolė" few: "Rolės (-ė, -ių)" many: "Rolės (-ė, -ių)" other: "Rolės (-ė, -ių)" type: "Tipas" - user: "Vartotojas" + user: "Naudotojas" version: "Versija" wiki: "Wiki" wiki_page: "Wiki puslapis" @@ -841,7 +841,7 @@ lt: updated_at: "Atnaujinta" updated_on: "Atnaujinta" uploader: "Įkėlėjas" - user: "Vartotojas" + user: "Naudotojas" version: "Versija" work_package: "Darbų paketas" backup: @@ -849,16 +849,16 @@ lt: label_create_token: "Sukurti atsarginės kopijos žetoną" label_delete_token: "Pašalinti atsarginės kopijos žetoną" label_reset_token: "Atstatyti atsarginės kopijos žetoną" - label_token_users: "Šie vartotojai turi atsarginės kopijos žetonus" + label_token_users: "Šie naudotojai turi atsarginės kopijos žetonus" reset_token: action_create: Sukurti action_reset: Nustatyti iš naujo heading_reset: "Atstatyti atsarginės kopijos žetoną" heading_create: "Sukurti atsarginės kopijos žetoną" implications: > - Atsarginių kopijų įgalinimas leis bet kuriam vartotojui su priskirtomis teisėmis iš šiuo atsarginės kopijos žetonu parsisiųsti atsarginę kopiją turinčią visus šios OpenProject instaliacijos duomenis. Juos bus ir visų kitų vartotojų duomenys. + Atsarginių kopijų įgalinimas leis bet kuriam naudotojui su priskirtomis teisėmis iš šiuo atsarginės kopijos žetonu parsisiųsti atsarginę kopiją turinčią visus šios OpenProject instaliacijos duomenis. Juose bus ir visų kitų naudotojų duomenys. info: > - Jums reikės sugeneruoti atsarginės kopijos žetoną norint sukurti atsarginę kopiją. Kaskart, kai jūs norėsite sukurti atsarginę kopiją turėsite pateikti šį žetoną. Jūs galite ištrinti žetoną ir taip atimsite iš vartotojo teisę daryti atsargines kopijas. + Jums reikės sugeneruoti atsarginės kopijos žetoną norint sukurti atsarginę kopiją. Kaskart, kai jūs norėsite sukurti atsarginę kopiją turėsite pateikti šį žetoną. Jūs galite ištrinti žetoną ir taip atimsite iš naudotojo teisę daryti atsargines kopijas. verification: > Įveskite %{word} norėdami patvirtinti veiksmą su atsarginės kopijos žetonu: %{action}. verification_word_reset: atstatyti @@ -940,7 +940,7 @@ lt: consent: checkbox_label: Perskaičiau ir sutinku su tekstu aukščiau. failure_message: Sutikimas negautas. Tęsti negalima. - title: Vartotojo sutikimas + title: Naudotojo sutikimas decline_warning_message: Jūs nesutikote su sąlygomis, todėl buvote atjungtas nuo sistemos. user_has_consented: Naudotojas sutiko su jūsų sukonfigūruotu teiginiu nurodytu metu. not_yet_consented: Naudotojas dar nesutiko, jo bus paklausta kito prisijungimo metu. @@ -1283,7 +1283,7 @@ lt: additional: projects: "Naujausi matomi projektai." no_visible_projects: "Šiame egzemplioriuje nėra matomų projektų." - users: "Naujausi registruoti vartotojai." + users: "Naujausi registruoti naudotojai." blocks: community: "OpenProject community" upsale: @@ -1388,7 +1388,7 @@ lt: label_calendar: "Kalendorius" label_calendar_show: "Rodyti kalendorių" label_category: "Kategorija" - label_consent_settings: "Vartotojo sutikimas" + label_consent_settings: "Naudotojo sutikimas" label_wiki_menu_item: Wiki meniu punktas label_select_main_menu_item: Pasirinkti naują pagrindinio meniu punktą label_select_project: "Pasirinkti projektą" @@ -1479,7 +1479,7 @@ lt: label_enumeration_value: "Enumeracijos reikšmė" label_enumerations: "Enumeratoriai" label_enterprise: "Enterprise" - label_enterprise_active_users: "%{current}/%{limit} aktyviai naudojami vartotojai" + label_enterprise_active_users: "%{current}/%{limit} aktyviai naudojami naudotojai" label_enterprise_edition: "„Enterprise Edition“" label_environment: "Aplinka" label_estimates_and_time: "Sąmatos ir laikas" @@ -1649,9 +1649,9 @@ lt: label_permissions: "Leidimai" label_permissions_report: "Leidimų ataskaita" label_personalize_page: "Suasmeninti šį puslapį" - label_placeholder_user: "Statytinis vartotojas" - label_placeholder_user_new: "Naujas statytinis vartotojas" - label_placeholder_user_plural: "Statytiniai vartotojai" + label_placeholder_user: "Statytinis naudotojas" + label_placeholder_user_new: "Naujas statytinis naudotojas" + label_placeholder_user_plural: "Statytiniai naudotojai" label_planning: "Planavimas" label_please_login: "Prašome prisijungti" label_plugins: "Papildiniai" @@ -1682,7 +1682,7 @@ lt: label_project_hide_details: "Slėpti detalią projekto informaciją" label_public_projects: "Vieši projektai" label_query_new: "Nauja užklausa" - label_query_plural: "Vartotojo užklausos" + label_query_plural: "Naudotojo užklausos" label_query_menu_item: "Užklausos meniu punktas" label_read: "Skaityti..." label_register: "Sukurti naują paskyrą" @@ -1727,7 +1727,7 @@ lt: label_role_search: "Priskirti rolę naujiems nariams" label_scm: "SCM" label_search: "Paieška" - label_send_information: "Nusiųsti vartotojui paskyros informaciją" + label_send_information: "Nusiųsti naudotojui paskyros informaciją" label_send_test_email: "Siųsti bandomąjį el. laišką" label_setting_plural: "Nustatymai" label_system_settings: "Sistemos nustatymai" @@ -1781,7 +1781,7 @@ lt: label_used_by: "Naudotas" label_used_by_types: "Naudojama šių tipų" label_used_in_projects: "Naudojama šių projektų" - label_user: "Vartotojas" + label_user: "Naudotojas" label_user_and_permission: "Naudotojai ir leidimai" label_user_named: "Naudotojas %{name}" label_user_activity: "%{value} veikla" @@ -1793,7 +1793,7 @@ lt: label_user_mail_option_only_owner: "Tiktai dalykams, kurių šeimininkas esu aš" label_user_mail_option_selected: "Bet kokiam įvykiui tiktai pasirinktuose projektuose" label_user_new: "Naujas vartotojas" - label_user_plural: "Vartotojai" + label_user_plural: "Naudotojai" label_user_search: "Ieškoti vartotojo" label_user_settings: "Naudotojo nustatymai" label_version_new: "Nauja versija" @@ -1899,7 +1899,7 @@ lt: mail_body_account_information: "Informacija apie Jūsų paskyrą" mail_body_account_information_external: "Norėdami prisijungti Jūs galite naudoti savo %{value} paskyrą." mail_body_backup_ready: "Jūsų prašyta atsarginė kopija yra paruošta. Ją galite parsisiųsti čia:" - mail_body_backup_token_reset_admin_info: Atsarginės kopijos žetonas vartotojui '%{user}' buvo atstatytas. + mail_body_backup_token_reset_admin_info: Atsarginės kopijos žetonas naudotojui „%{user}“ buvo atstatytas. mail_body_backup_token_reset_user_info: Jūsų atsarginės kopijos žetonas buvo atstatytas. mail_body_backup_token_info: Ankstesnis žetonas nebegalioja. mail_body_backup_waiting_period: Naujas atsarginės kopijos žetonas bus tinkamas po %{hours} valandų. @@ -1999,7 +1999,7 @@ lt: notice_locking_conflict_additional_information: "%{users} vartotojas (-ai) pateikė atnaujinimų." notice_locking_conflict_reload_page: "Įkelkite puslapį iš naujo, peržiūrėkite pakeitimus ir pateikite savo atnaujinimus." notice_member_added: Pridėtas %{name} prie projekto. - notice_members_added: Pridėta %{number} vartotojai (-as, -ų) prie projekto. + notice_members_added: Prie projekto pridėti %{number} naudotojai. notice_member_removed: "Pašalintas %{user} iš projekto." notice_member_deleted: "%{user} buvo pašalintas iš projekto ir ištrintas." notice_no_principals_found: "Rezultatų nerasta." @@ -2056,8 +2056,8 @@ lt: permission_add_work_packages: "Pridėti darbų paketų" permission_add_messages: "Skelbti pranešimus" permission_add_project: "Sukurti projektą" - permission_manage_user: "Kurti ir keisti vartotojus" - permission_manage_placeholder_user: "Kurti, keisti ir trinti statytinius vartotojus" + permission_manage_user: "Kurti ir keisti naudotojus" + permission_manage_placeholder_user: "Kurti, keisti ir trinti statytinius naudotojus" permission_add_subprojects: "Sukurti sub-projektus" permission_add_work_package_watchers: "Pridėti stebėtojus" permission_assign_versions: "Priskirti versijas" @@ -2372,7 +2372,7 @@ lt: setting_user_format: "Vartotojo atvaizdavimo formatas" setting_user_default_timezone: "Numatytoji vartotojo laiko juosta" setting_users_deletable_by_admins: "Administratoriai gali ištrinti vartotojų paskyras" - setting_users_deletable_by_self: "Vartotojai gali ištrinti savo paskyras" + setting_users_deletable_by_self: "Naudotojai gali ištrinti savo paskyras" setting_welcome_text: "Pasisveikinimo bloko tekstas" setting_welcome_title: "Pasisveikinimo bloko pavadinimas" setting_welcome_on_homescreen: "Rodyti pasisveikinimo bloką namų lange" @@ -2393,7 +2393,7 @@ lt: delay_minutes_explanation: "El.laiškų siuntimas gali būti užlaikytas, kad būtų leista naudotojams, kurie yra susikonfigūravę gauti pranešimus tiesiai programoje, patvirtinti iki to, kol bus išsiųstas laiškas. Naudotojai, kurie perskaitė pranešimus programoje, negaus tų laiškų, kurių pranešimus jau bus perskaitę." display: first_date_of_week_and_year_set: > - Jei vienas iš „%{day_of_week_setting_name}“ ir „%{first_week_setting_name}“ yra nustatytas, tai kitas taip pat turi būti nustatytas vengiant netikslumų vartotojo sąsajoje. + Jei vienas iš „%{day_of_week_setting_name}“ ir „%{first_week_setting_name}“ yra nustatytas, tai kitas taip pat turi būti nustatytas vengiant netikslumų naudotojo sąsajoje. first_week_of_year_text: > Pasirinkite sausio datą, kuri yra pirmoje metų savaitėje. Ši reikšmė kartu su savaitės pirmos dienos nustatymu lemia savaičių skaičių metuose. projects: @@ -2500,7 +2500,7 @@ lt: text_reassign: "Iš naujo priskirti darbų paketui:" text_regexp_info: "pvz., ^[A-Z0-9]+$" text_regexp_multiline: 'Reguliarioji išraiška yra pritaikoma daug eilučių režime, pvz., ^---\s+' - text_repository_usernames_mapping: "Parinkite ar atnaujinkite OpenProject vartotoją, kuris paminėtas repozitorijos žurnale.\nVartotojai, turintys tą patį OpenProject ir repozitorijos vardą ar el. paštą yra automatiškai surišti." + text_repository_usernames_mapping: "Parinkite ar atnaujinkite OpenProject naudotoją, kuris paminėtas repozitorijos žurnale.\nNaudotojai, turintys tą patį OpenProject ir repozitorijos vardą ar el. paštą yra automatiškai surišti." text_select_mail_notifications: "Išrinkite veiksmus, apie kuriuos būtų pranešta el. paštu." text_status_changed_by_changeset: "Atlikta pakeitimų pakete %{value}." text_table_difference_description: "Šioje lentelėje pavieniai %{entries} yra rodomi. Jūs galite palyginti skirtumus tarp bet kutių dviejų įrašų pasirinkdami atitinkamus žymėtinus laukelius lentelėje. Vėliau paspaudus ant mygtuko apačioje parodomi skirtumai." @@ -2745,13 +2745,13 @@ lt: warning: Įspėjimas warning_attachments_not_saved: "%{count} failas (-ai, -ų) negali būti išsaugotas (-i)." warning_imminent_user_limit: > - Jūs pakvietėte daugiau vartotojų, nei palaikoma jūsų dabartis planas. Pakviestiems vartotojams gali nepavykti prisijungti prie jūsų OpenProject aplinkos. Atnaujinkite savo planą arba blokuokite esamus vartotojus, kad pakviesti ir registruoti vartotojai galėtų prisijungti. + Jūs pakvietėte daugiau naudotojų, nei palaiko jūsų dabartis planas. Pakviestiems naudotojams gali nepavykti prisijungti prie jūsų OpenProject aplinkos. Atnaujinkite savo planą arba blokuokite esamus naudotojus, kad pakviesti ir registruoti vartotojai galėtų prisijungti. warning_registration_token_expired: | Aktyvavimo el. laiško galiojimas pasibaigė. Išsiuntėme jums naują %{email}. Paspauskite laiške duotą nuorodą, kad aktyvuotumėte savo paskyrą. warning_user_limit_reached: > Pasiektas vartotojų limitas. Jūs negalite aktyvuoti daugiau vartotojų. Prašome atnaujinti planą arba blokuokite esamus vartotojus norėdami aktyvuoti naujus vartotojus. warning_user_limit_reached_instructions: > - Jūs pasiekėte vartotojų ribą (%{current}/%{max} aktyvūs vartotojai). Susisiekite su sales@openproject.com norėdami atnaujinti savo Enterprise Edition planą arba pridėti papildomų vartotojų. + Jūs pasiekėte naudotojų ribą (%{current}/%{max} aktyvūs naudotojai). Susisiekite su sales@openproject.com norėdami atnaujinti savo Enterprise Edition planą arba pridėti papildomų naudotojų. 0: > warning_bar: diff --git a/modules/bim/config/locales/crowdin/lt.yml b/modules/bim/config/locales/crowdin/lt.yml index 973f72e9432..78fa42cdf07 100644 --- a/modules/bim/config/locales/crowdin/lt.yml +++ b/modules/bim/config/locales/crowdin/lt.yml @@ -101,7 +101,7 @@ lt: snapshot_data_blank: "būtina pateikti snapshot_data." unsupported_key: "Įtraukta nepalaikoma json savybė." bim/bcf/issue: - uuid_already_taken: "Negaliu suimportuoti BCF trūkumo, nes sistemoje jau yra viena su tokiu pačiu GUID. Ar negalėjo taip būti, kad BCF trūkumas jau buvo importuota į kitą projektą?" + uuid_already_taken: "Negaliu suimportuoti BCF problemos, nes sistemoje jau yra viena su tokiu pačiu GUID. Ar negalėjo taip būti, kad BCF problema jau buvo importuota į kitą projektą?" ifc_models: label_ifc_models: 'IFC modeliai' label_new_ifc_model: 'Naujas IFC modelis' diff --git a/modules/boards/config/locales/crowdin/js-lt.yml b/modules/boards/config/locales/crowdin/js-lt.yml index 64ec814f11c..965af79c8a8 100644 --- a/modules/boards/config/locales/crowdin/js-lt.yml +++ b/modules/boards/config/locales/crowdin/js-lt.yml @@ -48,7 +48,7 @@ lt: action_text_status: > Paprasta kanban stiliaus lenta su stulpeliais statusams, tokiems kaip To Do, Vykdoma, Įvykdyta. action_text_assignee: > - Lenta su automatiniais stulpeliais pagrįstais priskirtu vartotoju. Ideali darbo paketų paskirstymui. + Lenta su automatiniais stulpeliais pagrįstais priskirtu naudotoju. Ideali darbo paketų paskirstymui. action_text_version: > Lenta su automatiniais stulpeliais, pagrįstais versijos atributu. Ideali produkto vystymo planavimui. action_type: @@ -67,15 +67,15 @@ lt: select_attribute: "Veiksmo atributas" add_list_modal: labels: - assignee: Pasirinkite vartotoją, kuris bus pridėtas į naują „paskirtas“ sąrašą + assignee: Pasirinkite naudotoją, kuris bus pridėtas į naują „paskirtųjų“ sąrašą status: Pasirinkite statusą, kuris bus pridėtas į naują sąrašą version: Pasirinkite versiją, kuri bus pridėta į naują sąrašą subproject: Pasirinkite subprojektą, kuris bus pridėtas į naują sąrašą subtasks: Pasirinkite darbų paketą, kuris bus pridėtas į naują sąrašą warning: status: | - Nebėra laisvų statusų.
- Arba jų nėra apskritai, arba visi jau buvo sudėti į lentą. + Nebėra laisvų būsenų.
+ Arba jų nėra apskritai, arba visos jau buvo sudėtos į lentą. assignee: Nėra jokių narių, kurie tinka jūsų filtrui.
no_member: Šiame projekte šiuo metu nėra narių, kurie galėtų būti pridėti.
add_members: Pridėkite į projektą naujų narių , jei norite daugiau jų pažymėti. diff --git a/modules/costs/config/locales/crowdin/lt.yml b/modules/costs/config/locales/crowdin/lt.yml index 304128ede5a..ac64c5bdfa5 100644 --- a/modules/costs/config/locales/crowdin/lt.yml +++ b/modules/costs/config/locales/crowdin/lt.yml @@ -111,7 +111,7 @@ lt: label_rate_plural: "Koeficientai" label_status_finished: "Baigta" label_units: "Kaštų vienetai" - label_user: "Vartotojas" + label_user: "Naudotojas" label_until: "iki" label_valid_from: "Galioja nuo" label_yes: "Taip" diff --git a/modules/ldap_groups/config/locales/crowdin/lt.yml b/modules/ldap_groups/config/locales/crowdin/lt.yml index 5d9bdca24ac..58e1aee37af 100644 --- a/modules/ldap_groups/config/locales/crowdin/lt.yml +++ b/modules/ldap_groups/config/locales/crowdin/lt.yml @@ -4,12 +4,12 @@ lt: ldap_groups/synchronized_group: dn: 'DN' auth_source: 'LDAP jungtis' - sync_users: 'Sinchronizuoti vartotojus' + sync_users: 'Sinchronizuoti naudotojus' ldap_groups/synchronized_filter: filter_string: 'LDAP filtras' auth_source: 'LDAP jungtis' group_name_attribute: "Grupės pavadinimo atributas" - sync_users: 'Sinchronizuoti vartotojus' + sync_users: 'Sinchronizuoti naudotojus' base_dn: "Paieškos pagrindo DN" models: ldap_groups/synchronized_group: 'Sinchronizuota LDAP grupė' @@ -39,8 +39,8 @@ lt: removed_groups: "Dėmesio: Tai OpenProjecte panaikins tokias grupes ir ištrins jas iš visų projektų!" verification: "Naikinimo patvirtinimui įveskite filtro vardą %{name}." form: - group_name_attribute_text: 'Įveskite LDAP grupės atributą, kuris bus naudojamas nustatyti OpenProject grupės pavadinimą.' - filter_string_text: 'Įveskite RFC4515 LDAP filtrą, kuris iš jūsų LDAP praleidžia reikalingas sinchronizavimui su OpenProjectu grupes.' + group_name_attribute_text: 'Įveskite LDAP grupės atributą, kuris bus naudojamas nustatant OpenProject grupės pavadinimą.' + filter_string_text: 'Įveskite RFC4515 LDAP filtrą, kuris iš jūsų LDAP grąžina sinchronizavimui su OpenProjectu reikalingas grupes.' base_dn_text: > Įveskite paieškos pagrindo DN norėdami naudoti šį filtrą. Jis turi būti pasirinktos LDAP jungties pagrindo DN viduje. Palikite šį nustatymą tuščia, jei norite naudoti LDAP jungties pagrindo DN. @@ -64,7 +64,7 @@ lt: form: auth_source_text: 'Pasirinkite kuri LDAP jungtis turėtų būti naudojama.' sync_users_text: > - Jei jūs įjungsite šį nustatymą, visiems rastiems vartotojams bus automatiškai sukurti OpenProject vartotojai. Neįjungus, tik dabar esantys OpenProject vartotojai bus pridėti į grupes. + Jei jūs įjungsite šį nustatymą, visiems rastiems naudotojams bus automatiškai sukurti OpenProject naudotojai. Neįjungus, tik dabar esantys OpenProject naudotojai bus pridėti į grupes. dn_text: 'Įveskite LDAP grupės pilną DN.' group_text: 'Parinkite esamą OpenProject grupę, su kuria būtų sinchronizuojami LDAP grupės nariai' From fa1f932f80a94691ab5065e2d0db01e32b71ce17 Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Mon, 11 Oct 2021 03:02:48 +0000 Subject: [PATCH 05/28] update locales from crowdin [ci skip] --- config/locales/crowdin/js-lt.yml | 8 +- config/locales/crowdin/js-nl.yml | 104 ++++----- config/locales/crowdin/js-ru.yml | 2 +- config/locales/crowdin/lt.yml | 6 +- config/locales/crowdin/nl.yml | 216 +++++++++--------- modules/avatars/config/locales/crowdin/nl.yml | 2 +- .../backlogs/config/locales/crowdin/nl.yml | 2 +- modules/bim/config/locales/crowdin/js-nl.yml | 6 +- modules/bim/config/locales/crowdin/nl.yml | 76 +++--- .../boards/config/locales/crowdin/js-lt.yml | 6 +- .../boards/config/locales/crowdin/js-nl.yml | 32 +-- modules/boards/config/locales/crowdin/nl.yml | 4 +- .../config/locales/crowdin/js-nl.yml | 10 +- .../grids/config/locales/crowdin/js-nl.yml | 6 +- .../ldap_groups/config/locales/crowdin/nl.yml | 38 +-- 15 files changed, 257 insertions(+), 261 deletions(-) diff --git a/config/locales/crowdin/js-lt.yml b/config/locales/crowdin/js-lt.yml index 0d9a539dddf..4e5d5988758 100644 --- a/config/locales/crowdin/js-lt.yml +++ b/config/locales/crowdin/js-lt.yml @@ -131,11 +131,11 @@ lt: manual: 'Perjungti į Markdown išeities kodą' wysiwyg: 'Perjungti į WYSIWYG (ką matai, tą ir turi) redaktorių' macro: - error: 'Negaliu išskleisti makrokomandos: %{message}' + error: 'Nepavyksta išskleisti makrokomandos: %{message}' attribute_reference: macro_help_tooltip: 'Šis teksto segmentas yra dinamiškai sukuriamas makrokomandos.' not_found: 'Reikalaujamas resursas nerastas.' - invalid_attribute: "Pasirinktas atributas '%{name}' neegzistuoja." + invalid_attribute: "Pasirinktas atributas „%{name}“ neegzistuoja." child_pages: button: 'Nuorodos į vaikų puslapius' include_parent: 'Įtraukti tėvus' @@ -523,7 +523,7 @@ lt: context: 'Projekto kontekstas' work_package_belongs_to: 'Šis darbų paketas priklauso projektui %{projectname}.' click_to_switch_context: 'Atidaryti darbų paketą tame projekte.' - confirm_template_load: 'Šablono pakeitimas perkraus puslapį ir jūs prarasite visą šioje formoje įvesta informaciją. Tęsti?' + confirm_template_load: 'Šablono pakeitimas perkraus puslapį ir jūs prarasite visą šioje formoje įvestą informaciją. Tęsti?' use_template: "Naudoti šabloną" no_template_selected: "(Nėra)" copy: @@ -832,7 +832,7 @@ lt: text_no_results: "Atitinkančių vaizdų nerasta." scheduling: is_parent: "Šio darbų paketo datos yra automatiškai nustatomos pagal jo vaikų datas. Norėdami nustatyti kitokias datas įjunkite „Rankinį tvarkaraščio parinkimą“" - is_switched_from_manual_to_automatic: "Po perjungimo iš rankinio į automatinį tvarkaraščio parinkimą šio darbų paketo datas gali reikėti perskaičiuoti, nes yra sąryšių su kitais darbų paketais." + is_switched_from_manual_to_automatic: "Po perjungimo iš rankinio į automatinį tvarkaraščio parinkimą, šio darbų paketo datas gali reikėti perskaičiuoti, nes yra sąryšių su kitais darbų paketais." table: configure_button: 'Sukonfigūruokite darbų paketo lentelę' summary: "Lentelė su eilutėmis, sudarytomis iš darbų paketų, ir stulpeliais, sudarytais iš darbų paketų atributų." diff --git a/config/locales/crowdin/js-nl.yml b/config/locales/crowdin/js-nl.yml index a02993a0d2a..12458af67f6 100644 --- a/config/locales/crowdin/js-nl.yml +++ b/config/locales/crowdin/js-nl.yml @@ -55,7 +55,7 @@ nl: button_back_to_list_view: "Terug naar het overzicht" button_cancel: "Annuleren" button_close: "Sluiten" - button_change_project: "Change project" + button_change_project: "Project wisselen" button_check_all: "Selecteer alles" button_configure-form: "Formulier configureren" button_confirm: "Accepteren" @@ -78,8 +78,8 @@ nl: button_open_details: "Open detailweergave" button_close_details: "Sluit detailweergave" button_open_fullscreen: "Open volledig scherm" - button_show_cards: "Show card view" - button_show_list: "Show list view" + button_show_cards: "Toon kaartweergave" + button_show_list: "Toon lijstweergave" button_quote: "Citeer" button_save: "Opslaan" button_settings: "Instellingen" @@ -89,7 +89,7 @@ nl: button_export-atom: "Download Atom" calendar: title: 'Kalender' - too_many: 'There are %{count} work packages in total, but only %{max} can be shown.' + too_many: 'Er zijn in totaal %{count} werkpakketten, maar alleen %{max} kan worden getoond.' card: add_new: 'Nieuwe kaart toevoegen' highlighting: @@ -101,24 +101,24 @@ nl: browser_error: "Uw browser ondersteunt kopiëren naar het klembord niet. Kopieer de geselecteerde tekst handmatig." copied_successful: "Successfully copied to clipboard!" chart: - type: 'Chart type' - axis_criteria: 'Axis criteria' - modal_title: 'Work package graph configuration' + type: 'Grafiek type' + axis_criteria: 'As criteria' + modal_title: 'Werkpakket grafiek configuratie' types: - line: 'Line' - horizontal_bar: 'Horizontal bar' - bar: 'Bar' - pie: 'Pie' - doughnut: 'Doughnut' + line: 'Lijn' + horizontal_bar: 'Horizontale balk' + bar: 'Balk' + pie: 'Taart' + doughnut: 'Donut' radar: 'Radar' - polar_area: 'Polar area' + polar_area: 'Poolstreek' tabs: graph_settings: 'Algemeen' dataset: 'Dataset %{number}' errors: - could_not_load: 'The data to display the graph could not be loaded. The necessary permissions may be lacking.' + could_not_load: 'Kon gegevens om de grafiek weer te geven niet laden. Mogelijk ontbreken de benodigde machtigingen.' description_available_columns: "Beschikbare kolommen" - description_current_position: "You are here: " + description_current_position: "U bent hier: " description_select_work_package: "Selecteer werk pakket #%{id}" description_selected_columns: "Geselecteerde kolommen" description_subwork_package: "Kind van werkpakket #%{id}" @@ -181,12 +181,12 @@ nl: drag_to_activate: "Sleep velden uit hier om ze te activeren" add_group: "Toevoegen van nieuwe attribuutgroepen" add_table: "Tabel van verwante werkpakketten toevoegen" - edit_query: 'Edit query' + edit_query: 'Zoekopdracht bewerken' new_group: 'Nieuwe groep' reset_to_defaults: 'Standaardinstellingen herstellen' enterprise: - text_reprieve_days_left: "%{days} days until end of grace period" - text_expired: "expired" + text_reprieve_days_left: "%{days} dagen tot het einde van de genadeperiode" + text_expired: "verlopen" trial: confirmation: "Confirmation of email address" confirmation_info: > @@ -274,24 +274,24 @@ nl: general_text_Yes: "Ja" hal: error: - update_conflict_refresh: "Click here to refresh the resource and update to the newest version." - edit_prohibited: "Editing %{attribute} is blocked for this resource. Either this attribute is derived from relations (e.g, children) or otherwise not configurable." + update_conflict_refresh: "Klik hier om de bron te vernieuwen en bij te werken naar de nieuwste versie." + edit_prohibited: "Het bewerken van %{attribute} is geblokkeerd voor deze bron. Dit attribuut is afgeleid van relaties (bijv. kinderen) of anders niet configureerbaar." format: date: "%{attribute} is geen geldige datum - JJJJ-MM-DD verwacht." general: "Er is een fout opgetreden." homescreen: blocks: new_features: - text_new_features: "Read about new features and product updates." - learn_about: "Learn more about the new features" + text_new_features: "Lees over nieuwe functies en product-updates." + learn_about: "Meer informatie over de nieuwe functies" standard: learn_about_link: https://www.openproject.org/openproject-11-3-release current_new_feature_html: > - The release contains various new features and improvements:
  • New button in header navigation to create projects, users and work packages.
  • A new invite modal for users, groups and placeholder users allows to easily add or invite new users and assign them to work packages.
  • GitHub integration into OpenProject.
  • API v3 extensions for groups and more, i.e. create, read, update and delete groups and group members through the API.
  • Multi-selection for project custom fields of type list.
  • Creation of backup from the web interface.
+ De release bevat verschillende nieuwe functies en verbeteringen:
  • Nieuwe knop in de koptekstnavigatie om projecten, gebruikers en werkpakketten te creëren.
  • Een nieuwe uitnodigingsmodus voor gebruikers, groepen en placeholder gebruikers laat toe eenvoudig nieuwe gebruikers toe te voegen of uit te nodigen en toe te wijzen aan werkpakketten.
  • GitHub integratie in OpenProject.
  • API v3 extensies voor groepen en meer, i. e. maak, lees, update en verwijder groepen en groepsleden via de API.
  • Multi-selectie voor project aangepaste velden van het type lijst.
  • Maken van back-up vanuit de webinterface.
bim: learn_about_link: https://www.openproject.org/openproject-11-4-release current_new_feature_html: > - The release contains various new features and improvements:
  • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
  • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
  • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
  • Fixed viewing IFC models on mobile.
  • Fixed export of work package views with BCF snapshot column.
+ De release bevat verschillende nieuwe functies en verbeteringen:
  • Neem een kijkje op onze Revit Add-in waarmee u direct in Revit aan BCF werkpakketten kunt werken.
  • IFC-eigenschappen kregen een eigen venster. GUIDs kopiëren is nooit zo eenvoudig geweest.
  • Omgekeerd knipvlak richting in BCF gezichtspunt en compatibel worden met toekomstige BCF 3.0 (Nu dezelfde richting als Solibri).
  • Probleem opgelost met mobiel bekijken IFC-modellen.
  • Vaste export van werkpakket weergaven met BCF momentopname kolom.
label_activate: "Activeren" label_add_column_after: "Kolom toevoegen na" label_add_column_before: "Kolom toevoegen voor" @@ -362,7 +362,7 @@ nl: label_in_more_than: "in meer dan" label_incoming_emails: "Inkomende e-mails" label_information_plural: "Informatie" - label_import: "Import" + label_import: "Importeren" label_latest_activity: "Laatste Activiteit" label_last_updated_on: "Laatst geüpdatet op" label_learn_more_link: "Meer informatie" @@ -431,7 +431,7 @@ nl: label_total_progress: "%{percent}% totale vooruitgang" label_total_amount: "Totaal: %{amount}" label_updated_on: "bijgewerkt op" - label_value_derived_from_children: "(value derived from children)" + label_value_derived_from_children: "(waarde afgeleid van kinderen)" label_children_derived_duration: "Work package's children derived duration" label_warning: "Waarschuwing" label_work_package: "Werkpakket" @@ -470,7 +470,7 @@ nl: label_upload_counter: "%{done} van %{count} bestanden afgerond" label_validation_error: "Het werkpakket kon niet worden opgeslagen vanwege de volgende fouten:" label_version_plural: "Versies" - label_view_has_changed: "This view has unsaved changes. Click to save them." + label_view_has_changed: "Deze weergave heeft niet-opgeslagen wijzigingen. Klik om ze op te slaan." help_texts: show_modal: 'Toon kenmerk help tekstinvoer' onboarding: @@ -481,7 +481,7 @@ nl: steps: help_menu: 'In het menu Help vindt u een handleiding en aanvullende help-bronnen.
genieten van uw werk met OpenProject!' members: 'Nodig nieuwe leden, uit voor uw project.' - project_selection: 'Please click on one of the projects with useful demo data to get started.
The Demo project suits best for classical project management, while the Scrum project is better for Agile project management.' + project_selection: 'Klik a.u.b. op één van de projecten met nuttige voorbeeldgegevens om aan de slag te gaan
Het Demo project is best geschikt voor klassieke projectmanagement, terwijl het Scrum project beter is voor Agile projectmanagement.' quick_add_button: 'Create a new project or invite coworkers.' sidebar_arrow: "U kunt met de pijl terug navigeren naar het Hoofd menu van het project." welcome: 'Neem drie minuten introductie rondleiding om de meeste belangrijke kenmerken te leren.
het is raadzaam de stappen uit te voeren tot het einde. U kunt de tour ieder moment opnieuw doen.' @@ -492,10 +492,10 @@ nl: task_board_select: '... en selecteer het Taakbord.' task_board: "Het takenbord visualiseert de voortgang voor deze sprint. Toevoegen van nieuwe taken of belemmeringen met de + pictogram naast het verhaal van een gebruiker. Via drag'n'drop kunt u de status bijwerken." boards: - overview: 'Manage your work within an intuitive Boards view.' - lists: 'You can create multiple lists (columns) within one Board view, e.g. to create a KANBAN board.' - add: 'Click the + will add a new card to the list within a Board.' - drag: 'Drag & Drop your cards within a list to re-order, or to another list. A double click will open the details view.' + overview: 'Beheer uw werk in een intuïtieve Borden weergave.' + lists: 'U kunt meerdere lijsten (kolommen) maken binnen één Board weergave, bijvoorbeeld om een KANBAN bord te maken.' + add: 'Klik op + en voeg een nieuwe kaart toe aan de lijst in een Board.' + drag: 'Sleep je kaarten in een lijst om opnieuw te bestellen, of naar een andere lijst. Een dubbele klik opent de detailweergave.' wp: toggler: "Laten we nu eens een kijkje op de werk pakket -sectie, die je een meer gedetailleerde weergave van uw werk geeft." list: 'This is the Work package list with the important work within your project, such as tasks, milestones, phases, and more.
You can create or edit a work package directly within this list. To see its details you can double click on a row.' @@ -519,7 +519,7 @@ nl: relation_description: 'Klik om een beschrijving voor deze relatie toe te voegen' project: required_outside_context: > - Please choose a project to create the work package in to see all attributes. You can only select projects which have the type above activated. + Kies een project om het werkpakket in te creëren om alle attributen te zien. U kunt alleen projecten selecteren waarvan het type hierboven is geactiveerd. context: 'Context van het project' work_package_belongs_to: 'Dit werkpakket behoort tot project %{projectname}.' click_to_switch_context: 'Open dit werkpakket in dat project.' @@ -543,13 +543,13 @@ nl: more_information: "Meer informatie" nevermind: "Geen aandacht" edit: - form_configuration: "Form Configuration" + form_configuration: "Formulier configuratie" projects: "Projecten" settings: "Instellingen" time_entry: project: 'Project' work_package: 'Werkpakket' - work_package_required: 'Requires selecting a work package first.' + work_package_required: 'Vereist eerst een werkpakket te selecteren.' activity: 'Activiteit' comment: 'Commentaar' duration: 'Duur' @@ -588,8 +588,8 @@ nl: set_parent: "Stel bovenliggend in" change_parent: "Wijzig bovenliggende pagina" remove_parent: "Verwijder bovenliggende map" - hierarchy_indent: "Indent hierarchy" - hierarchy_outdent: "Outdent hierarchy" + hierarchy_indent: "Inspringen hiërarchie" + hierarchy_outdent: "Uitspringen hiërarchie" group_by_wp_type: "Groep per werkpakkettype" group_by_relation_type: "Groep per relatietype" add_parent: "Voeg bestaande ouder toe" @@ -609,8 +609,8 @@ nl: save: "Sla relatie op" abort: "Annuleren" relations_autocomplete: - placeholder: "Type to search" - parent_placeholder: "Choose new parent or press escape to cancel." + placeholder: "Typ om te zoeken" + parent_placeholder: "Kies nieuwe ouder of druk op escape om te annuleren." repositories: select_tag: 'Selecteer label' select_branch: 'Selecteer pad' @@ -710,7 +710,7 @@ nl: image: "Afbeelding" work_packages: bulk_actions: - move: 'Bulk change of project' + move: 'Bulk verandering van project' edit: 'Aanpassen in bulk' copy: 'Selectie kopiëren' delete: 'Selectie verwijderen' @@ -736,7 +736,7 @@ nl: message_successful_show_in_fullscreen: "Klik hier om dit werkpakket te openen in volledig scherm." message_view_spent_time: "Toon bestede tijd voor dit werkpakket" message_work_package_read_only: "Werkpakket is opgesloten in deze status. Geen kenmerk dan status kan worden gewijzigd." - message_work_package_status_blocked: "Work package status is not writable due to closed status and closed version being assigned." + message_work_package_status_blocked: "Werkpakket status is niet schrijfbaar vanwege gesloten status en gesloten toegewezen versie." placeholder_filter_by_text: "Betreft, beschrijving, commentaar, ..." inline_create: title: 'Klik hier om een nieuw werkpakket aan deze lijst toe te voegen' @@ -761,7 +761,7 @@ nl: no_results: title: Geen werkpakketten om te tonen. description: Ofwel zijn er geen gecreëerd ofwel zijn alle werkpakketten uitgefilterd. - limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering. + limited_results: Kan alleen %{count} werkpakketten weergeven in handmatige sorteermodus. Verminder a.u.b. de resultaten door te filteren. property_groups: details: "Details" people: "Mensen" @@ -804,7 +804,7 @@ nl: label_content: "Klik hier om het menu overslaan en ga naar de inhoud" placeholders: default: "-" - formattable: "%{name}: Click to edit..." + formattable: "%{name}: Klik om te bewerken..." query: column_names: "Kolommen" group_by: "Groepeer resultaten op" @@ -822,9 +822,9 @@ nl: confirm_edit_cancel: "Weet u zeker dat u wilt stoppen met het bewerken van de naam van deze weergave? De Titel zal terug naar vorige waarde worden ingesteld." click_to_edit_query_name: "Klik om de titel van de weergave te bewerken." rename_query_placeholder: "Naam van deze weergave" - star_text: "Mark this view as favorite and add to the saved views sidebar on the left." + star_text: "Markeer deze weergave als favoriet en voeg toe aan de opgeslagen weergaven zijbalk links." public_text: > - Publish this view, allowing other users to access your view. Users with the 'Manage public views' permission can modify or remove public query. This does not affect the visibility of work package results in that view and depending on their permissions, users may see different results. + Publiceer deze weergave zodat andere gebruikers er toegang tot hebben. Gebruikers met de 'Openbare weergave beheren' rechten kunnen openbare query wijzigen of verwijderen. Dit heeft geen invloed op de zichtbaarheid van werkpakket resultaten in die weergave en afhankelijk van hun permissies, kunnen gebruikers verschillende resultaten zien. errors: unretrievable_query: "Het is onmogelijk om de weergave van de url op te halen" not_found: "Deze weergave bestaat niet" @@ -862,17 +862,17 @@ nl: priority: 'Prioriteit' type: 'Type' sorting_mode: - description: 'Chose the mode to sort your Work packages:' - automatic: 'Automatic' - manually: 'Manually' - warning: 'You will lose your previous sorting when activating the automatic sorting mode.' + description: 'Kies de modus om uw werkpakketten te sorteren:' + automatic: 'Automatisch' + manually: 'Handmatig' + warning: 'U verliest uw vorige sortering bij activeren van de automatische sorteringsmodus.' columns_help_text: "Use the input field above to add columns to your table view. You can drag and drop the columns to reorder them." upsale: attribute_highlighting: 'Moeten bepaalde werkpakketten te onderscheiden zijn van de massa?' relation_columns: 'Nodig om te zien van betrekkingen in de pakketlijst werk?' check_out_link: 'Bekijk de Enterprise Edition.' relation_filters: - filter_work_packages_by_relation_type: 'Filter work packages by relation type' + filter_work_packages_by_relation_type: 'Filter werkpakketten op relatietype' tabs: overview: Overzicht activity: Activiteit @@ -979,8 +979,8 @@ nl: project_and_subprojects: "en alle subprojecten" search_for: "Zoeken naar" views: - card: 'Cards' - list: 'Table' + card: 'Kaarten' + list: 'Tabel' timeline: 'Gantt' invite_user_modal: back: 'Terug' diff --git a/config/locales/crowdin/js-ru.yml b/config/locales/crowdin/js-ru.yml index fa2fb096840..240e255c8e4 100644 --- a/config/locales/crowdin/js-ru.yml +++ b/config/locales/crowdin/js-ru.yml @@ -290,7 +290,7 @@ ru: bim: learn_about_link: https://www.openproject.org/openproject-11-4-release current_new_feature_html: > - The release contains various new features and improvements:
  • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
  • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
  • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
  • Fixed viewing IFC models on mobile.
  • Fixed export of work package views with BCF snapshot column.
+ Релиз содержит различные новые функции и улучшения:
  • Взгляните на наш Revit Add-in , который позволяет работать на рабочих пакетах BCF прямо в Revit.
  • Свойства IFC получили выделенную панель. Копирование GUIDs никогда не было проще.
  • Направление обратной плоскости отсечения в точке зрения BCF и соответствует будущему BCF 3.0 (теперь такое же направление, как и Solibri).
  • Исправлен просмотр моделей IFC на мобильном телефоне.
  • Фиксированный экспорт просмотра пакета работ с помощью снимка BCF.
label_activate: "Активировать" label_add_column_after: "Добавить столбец после" label_add_column_before: "Добавить столбец перед" diff --git a/config/locales/crowdin/lt.yml b/config/locales/crowdin/lt.yml index 02c740c86e5..fe7bd83cc00 100644 --- a/config/locales/crowdin/lt.yml +++ b/config/locales/crowdin/lt.yml @@ -1914,7 +1914,7 @@ lt:
Jei turėsite papildomų klausimų, peržiūrėkite mūsų dokumentaciją (%{documentation_link}) arba susisiekite su mumis (%{contact_us_link}). mail_body_register_closing: "Jūsų OpenProject komanda" - mail_body_register_ending: "Likit prisijungę! Su geriausiais linkėjimais," + mail_body_register_ending: "Likite prisijungę! Su geriausiais linkėjimais," mail_body_reminder: "%{count} darbų paketai, kurie yra jums priskirti, baigiasi per artimiausias %{days} dienų (-ą, -as):" mail_body_group_reminder: "%{count} darbo paketas(ai), kurie priskirti grupei „%{group}“ turi būti baigti per kitas %{days} dienas:" mail_body_wiki_content_added: "%{author} pridėjo '%{id}' wiki puslapį." @@ -2262,8 +2262,8 @@ lt: warnings: cannot_annotate: "Šis failas negali turėti pastabų." scheduling: - activated: 'aktyvuotas' - deactivated: 'deaktyvuotas' + activated: 'aktyvus' + deactivated: 'neaktyvus' search_input_placeholder: "Paieška..." setting_apiv3_cors_enabled: "Įgalinti CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) leidžiami kilmės domenai" diff --git a/config/locales/crowdin/nl.yml b/config/locales/crowdin/nl.yml index 7d8e4fd872b..492974ab743 100644 --- a/config/locales/crowdin/nl.yml +++ b/config/locales/crowdin/nl.yml @@ -38,15 +38,15 @@ nl: header-bg-color: "Koptekst achtergrond" header-item-bg-hover-color: "Header background on hover" header-item-font-color: "Lettertype koptekst" - header-item-font-hover-color: "Header font on hover" - header-border-bottom-color: "Header border" - main-menu-bg-color: "Main menu background" - main-menu-bg-selected-background: "Main menu when selected" - main-menu-bg-hover-background: "Main menu on hover" + header-item-font-hover-color: "Koptekst lettertype bij zweven" + header-border-bottom-color: "Koptekst rand" + main-menu-bg-color: "Achtergrond hoofdmenu" + main-menu-bg-selected-background: "Hoofdmenu wanneer geselecteerd" + main-menu-bg-hover-background: "Hoofd menu bij zweven" main-menu-font-color: "Lettertype hoofdmenu" main-menu-selected-font-color: "Lettertype hoofdmenu wanneer geselecteerd" - main-menu-hover-font-color: "Main menu font on hover" - main-menu-border-color: "Main menu border" + main-menu-hover-font-color: "Lettertype hoofdmenu bij zweven" + main-menu-border-color: "Hoofd menu rand" custom_colors: "Aangepaste kleuren" customize: "Aanpassen van uw OpenProject installatie met uw eigen logo. Opmerking: Dit logo zal toegankelijk worden voor het publiek." enterprise_notice: "Als een speciale 'Bedankt!' voor hun financiële bijdrage aan het ontwikkelen van OpenProject, is deze kleine functie alleen beschikbaar voor Enterprise Edition ondersteuning abonnees." @@ -98,20 +98,19 @@ nl:
Bezoek onze documentatie voor gedetailleerde instructies. attribute_texts: - name: Arbitrary name of the LDAP connection + name: Willekeurige naam van de LDAP-verbinding host: LDAP hostnaam of IP-adres - login_map: The attribute key in LDAP that is used to identify the unique user login. Usually, this will be `uid` or `samAccountName`. - generic_map: The attribute key in LDAP that is mapped to the OpenProject `%{attribute}` attribute - admin_map_html: "Optional: The attribute key in LDAP that if present marks the OpenProject user an admin. Leave empty when in doubt." + login_map: De attribuut sleutel in LDAP, gebruikt om de unieke gebruiker inlog te identificeren. Meestal zal dit `uid` of `samAccountName` zijn. + generic_map: De attribuut sleutel in LDAP die is toegewezen aan het OpenProject `%{attribute}` attribuut + admin_map_html: "Optioneel: De attribuut sleutel in LDAP dat indien aanwezig de OpenProject gebruiker markeert als een beheerder. Laat leeg bij twijfel." system_user_dn_html: | - Enter the DN of the system user used for read-only access. + Vul de DN van de systeemgebruiker in gebruikt voor alleen-lezen toegang.
- Example: uid=openproject,ou=system,dc=example,dc=com - system_user_password: Enter the bind password of the system user + Voorbeeld: uid=openproject,ou=system,dc=example,dc=com + system_user_password: Voer het bindwachtwoord van de systeemgebruiker in base_dn: | - Enter the Base DN of the subtree in LDAP you want OpenProject to look for users and groups. - OpenProject will filter for provided usernames in this subtree only. - Example: ou=users,dc=example,dc=com + Voer de Basis DN in van de subboom in LDAP waar u wilt dat OpenProject zoekt naar gebruikers en groepen. OpenProject zal filteren op opgegeven gebruikersnamen in deze subboom alleen. + Voorbeeld: ou=users,dc=example,dc=com filter_string: | Add an optional RFC4515 filter to apply to the results returned for users filtered in the LDAP. This can be used to restrict the set of users that are found by OpenProject for authentication and group synchronization. @@ -119,19 +118,17 @@ nl: OpenProject will always filter for the login attribute provided by the user to identify the record. If you provide a filter here, it will be concatenated with an AND. By default, a catch-all (objectClass=*) will be used as a filter. onthefly_register: | - If you check this box, OpenProject will automatically create new users from their LDAP entries - when they first authenticate with OpenProject. - Leave this unchecked to only allow existing accounts in OpenProject to authenticate through LDAP! + Als u dit selectievakje aanvinkt, zal OpenProject automatisch nieuwe gebruikers aanmaken van hun LDAP-items wanneer ze eerst verifiëren met OpenProject. + Laat dit uitgevinkt om alleen bestaande accounts in OpenProject te laten verifiëren via LDAP! connection_encryption: 'Verbinding encryptie' - system_account: 'System account' + system_account: 'Systeem account' system_account_legend: | - OpenProject requires read-only access through a system account to lookup users and groups in your LDAP tree. - Please specify the bind credentials for that system user in the following section. + OpenProject vereist alleen-lezen toegang via een systeemaccount om gebruikers en groepen in uw LDAP-boomstructuur op te zoeken. + Specificeer a.u.b. de bindgegevens voor deze systeemgebruiker in de volgende sectie. ldap_details: 'LDAP details' - user_settings: 'Attribute mapping' + user_settings: 'Attribuut toewijzen' user_settings_legend: | - The following fields are related to how users are created in OpenProject from LDAP entries and - what LDAP attributes are used to define the attributes of an OpenProject user (attribute mapping). + De volgende velden zijn gerelateerd aan hoe gebruikers worden aangemaakt in OpenProject van LDAP items en welke LDAP attributen worden gebruikt om de attributen van een OpenProject gebruiker te definiëren (attribuut toewijzing). tls_mode: plain: 'geen' simple_tls: 'eenvoudige_tls' @@ -170,8 +167,8 @@ nl: enabled_in_project: 'Ingeschakeld in project' contained_in_type: 'Opgenomen in type' confirm_destroy_option: "Het verwijderen van een optie zal alle voorkomingen verwijderen. Weet u zeker dat u deze optie wilt verwijderen?" - reorder_alphabetical: "Reorder values alphabetically" - reorder_confirmation: "Warning: The current order of available values will be lost. Continue?" + reorder_alphabetical: "Rangschik waarden alfabetisch" + reorder_confirmation: "Waarschuwing: De huidige volgorde van beschikbare waarden zal verloren gaan. Doorgaan?" tab: no_results_title_text: Momenteel zijn er geen aangepaste velden. no_results_content_text: Maak een nieuw aangepast veld @@ -250,8 +247,8 @@ nl: no_results_title_text: Deze gebruiker is momenteel geen lid van een project. placeholder_users: right_to_manage_members_missing: > - You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. - delete_tooltip: "Delete placeholder user" + U heeft geen toestemming om de placeholder gebruiker te verwijderen. U heeft niet het recht om deelnemers te beheren voor alle projecten waarvan de placeholder gebruiker lid is. + delete_tooltip: "Placeholder gebruiker verwijderen" deletion_info: heading: "Delete placeholder user %{name}" data_consequences: > @@ -298,8 +295,7 @@ nl: query_group_placeholder: "Geef de tabel een naam" reset: "Standaardinstellingen herstellen" type_color_text: | - Click to assign or change the color of this type. The selected color distinguishes work packages - in Gantt charts. It is therefore recommended to use a strong color. + Klik om de kleur van dit type toe te wijzen of te wijzigen. De geselecteerde kleur onderscheidt werkpakketten in de Gantt-grafieken. Daarom is het raadzaam om een sterke kleur te gebruiken. versions: overview: no_results_title_text: Er zijn momenteel geen werkpakketten toegewezen aan deze versie. @@ -313,8 +309,8 @@ nl: no_results_title_text: Er zijn momenteel geen workflows. work_packages: x_descendants: - one: 'One descendant work package' - other: '%{count} work package descendants' + one: 'Een nakomend werkpakket' + other: '%{count} werk pakket afstammelingen' bulk: could_not_be_saved: "De volgende werkpakketten konden niet worden opgeslagen:" move: @@ -444,11 +440,11 @@ nl: templated: 'Template project' projects/status: code: 'Status' - explanation: 'Status description' + explanation: 'Status beschrijving' codes: - on_track: 'On track' - at_risk: 'At risk' - off_track: 'Off track' + on_track: 'Op schema' + at_risk: 'In gevaar' + off_track: 'Buiten schema' query: column_names: "Kolommen" relations_to_type_column: "Betrekkingen %{type}" @@ -466,7 +462,7 @@ nl: spent_on: "Datum" type: "Type" type: - description: "Default text for description" + description: "Standaard tekst voor beschrijving" attribute_groups: '' is_in_roadmap: "Standaard weergegeven in roadmap" is_default: "Standaart ingesteld voor nieuwe projecten" @@ -542,9 +538,9 @@ nl: could_not_be_copied: "%{dependency} could not be (fully) copied." does_not_exist: "bestaat niet." error_enterprise_only: "is only available in the OpenProject Enterprise Edition" - error_unauthorized: "may not be accessed." - error_readonly: "was attempted to be written but is not writable." - email: "is not a valid email address." + error_unauthorized: "geen toegang." + error_readonly: "werd geprobeerd te schrijven maar is niet schrijfbaar." + email: "is geen geldig e-mailadres." empty: "mag niet leeg zijn." even: "moet gelijk zijn." exclusion: "is gereserveerd." @@ -558,7 +554,7 @@ nl: invalid_url: 'is geen geldige URL.' invalid_url_scheme: 'is geen ondersteunde protocol (toegestaan: %{allowed_schemes}).' less_than_or_equal_to: "moet kleiner zijn dan of gelijk aan %{count}." - not_available: "is not available due to a system configuration." + not_available: "is niet beschikbaar vanwege een systeemconfiguratie." not_deletable: "cannot be deleted." not_current_user: "is not the current user." not_a_date: "is geen geldige datum." @@ -581,7 +577,7 @@ nl: attachment: attributes: content_type: - not_whitelisted: "is set to '%{value}', which is not whitelisted for uploading." + not_whitelisted: "is ingesteld op '%{value}', wat niet op de whitelist staat voor het uploaden." capability: context: global: 'Globaal' @@ -622,13 +618,13 @@ nl: invalid_values: "Een waarde is ongeldig." id_filter_required: "Een ' id' filter is vereist." project: - archived_ancestor: 'The project has an archived ancestor.' - foreign_wps_reference_version: 'Work packages in non descendant projects reference versions of the project or its descendants.' + archived_ancestor: 'Het project heeft een gearchiveerde voorouder.' + foreign_wps_reference_version: 'Werkpakketten in niet-onderliggende projecten verwijzen naar versies van het project of zijn afstammelingen.' attributes: types: in_use_by_work_packages: "nog steeds in gebruik door werkpakketten: %{types}" enabled_modules: - dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." + dependency_missing: "De module '%{dependency}' moet ook ingeschakeld zijn, omdat de module '%{module}' ervan afhankelijk is." format: "%{message}" query: attributes: @@ -674,11 +670,11 @@ nl: role: attributes: permissions: - dependency_missing: "need to also include '%{dependency}' as '%{permission}' is selected." + dependency_missing: "moet ook '%{dependency}' omvatten als '%{permission}' is geselecteerd." time_entry: attributes: hours: - day_limit: "is too high as a maximum of 24 hours can be logged per date." + day_limit: "is te hoog omdat maximaal 24 uur kan worden gelogd per datum." wiki_page: attributes: slug: @@ -710,7 +706,7 @@ nl: attributes: attribute_groups: attribute_unknown: "Ongeldig werk pakket attribuut wordt gebruikt." - attribute_unknown_name: "Invalid work package attribute used: %{attribute}" + attribute_unknown_name: "Ongeldig werkpakket attribuut gebruikt: %{attribute}" duplicate_group: "De groep naam ‘%{group}’ word meer dan één keer gebruikt. Groep namen moeten uniek zijn." query_invalid: "De ingesloten zoekopdracht '%{group}' is ongeldig: %{details}" group_without_name: "Groepen zonder namen zijn niet toegestaan." @@ -734,14 +730,14 @@ nl: error_not_found: "niet gevonden" member: principal_blank: "Kies ten minste één gebruiker of groep." - role_blank: "need to be assigned." + role_blank: "moet worden toegewezen." attributes: roles: - ungrantable: "has an unassignable role." + ungrantable: "heeft een niet-toewijsbare rol." principal: - unassignable: "cannot be assigned to a project." + unassignable: "kan niet worden toegewezen aan een project." version: - undeletable_work_packages_attached: "The version cannot be deleted as it has work packages attached to it." + undeletable_work_packages_attached: "De versie kan niet worden verwijderd omdat er werkpakketten aan zijn gekoppeld." status: readonly_default_exlusive: "can not be activated for statuses that are marked default." template: @@ -949,7 +945,7 @@ nl: title: 'Copy project "%{source_project_name}"' started: "Begonnen met project \"%{source_project_name}\" te kopiëren naar \"%{target_project_name}\". U wordt zo spoedig mogelijk per email op de hoogte gesteld wanneer \"%{target_project_name}\" beschikbaar is." failed: "Kan project niet kopiëren %{source_project_name}" - failed_internal: "Copying failed due to an internal error." + failed_internal: "Kopiëren mislukt door een interne fout." succeeded: "Gemaakte project %{target_project_name}" errors: "Fout" project_custom_fields: 'Aangepaste velden in het project' @@ -1123,7 +1119,7 @@ nl: description_choose_project: "Projecten" description_compare_from: "Vergelijk van" description_compare_to: "Vergelijk met" - description_current_position: "You are here: " + description_current_position: "U bent hier: " description_date_from: "Begindatum opgeven" description_date_to: "Voer de einddatum in" description_enter_number: "Voer een nummer in" @@ -1153,12 +1149,12 @@ nl: add_groups: "Toevoegen van nieuwe attribuutgroepen" rename_groups: "Attribuutgroepen hernoemen" project_filters: - description_html: "Filtering and sorting on custom fields is an enterprise edition feature." - enumeration_activities: "Time tracking activities" + description_html: "Filteren en sorteren op eigen velden is een bedrijfs-editie functie." + enumeration_activities: "Activiteiten voor het bijhouden van tijd" enumeration_work_package_priorities: "Werkpakket prioriteiten" enumeration_reported_project_statuses: "Gerapporteerde projectstatus" error_auth_source_sso_failed: "Single Sign-On (SSO) voor gebruiker '%{value}' is mislukt" - error_can_not_archive_project: "This project cannot be archived: %{errors}" + error_can_not_archive_project: "Dit project kan niet worden gearchiveerd: %{errors}" error_can_not_delete_entry: "Niet in staat om ingave te verwijderen" error_can_not_delete_custom_field: "Aangepast veld kan niet verwijderd worden" error_can_not_delete_type: "Dit type bevat werkpakketten en kan niet worden verwijderd." @@ -1166,16 +1162,16 @@ nl: error_can_not_invite_user: "Het versturen van de uitnodiging naar de gebruiker is mislukt." error_can_not_remove_role: "Deze rol is in gebruik en kan niet worden verwijderd." error_can_not_reopen_work_package_on_closed_version: "Een werkpakket toegewezen aan een gesloten versie kan niet worden heropend" - error_can_not_find_all_resources: "Could not find all related resources to this request." - error_can_not_unarchive_project: "This project cannot be unarchived: %{errors}" + error_can_not_find_all_resources: "Kon niet alle gerelateerde bronnen vinden voor dit verzoek." + error_can_not_unarchive_project: "Dit project kan niet worden gedearchiveerd: %{errors}" error_check_user_and_role: "Kies een gebruiker en een rol." - error_code: "Error %{code}" + error_code: "Fout %{code}" error_cookie_missing: 'De cookie voor OpenProject ontbreekt. Zorg ervoor dat cookies zijn ingeschakeld aangezien deze toepassing anders niet goed zal functioneren.' error_custom_option_not_found: "Optie bestaat niet." error_enterprise_activation_user_limit: "Uw account kon niet worden geactiveerd (gebruikerslimiet bereikt). Neem contact op met uw beheerder om toegang te krijgen." error_enterprise_token_invalid_domain: "The Enterprise Edition is not active. Your Enterprise token's domain (%{actual}) does not match the system's host name (%{expected})." error_failed_to_delete_entry: 'Fout bij het verwijderen van deze ingave.' - error_in_dependent: "Error attempting to alter dependent object: %{dependent_class} #%{related_id} - %{related_subject}: %{error}" + error_in_dependent: "Fout bij poging tot wijziging van afhankelijke object: %{dependent_class} #%{related_id} - %{related_subject}: %{error}" error_invalid_selected_value: "De geselecteerde waarde is ongeldig." error_journal_attribute_not_present: "Dagboek bevat geen kenmerk %{attribute}." error_pdf_export_too_many_columns: "Te veel kolommen geselecteerd voor het exporteren naar PDF. Beperk het aantal kolommen." @@ -1184,8 +1180,8 @@ nl: error_work_package_done_ratios_not_updated: "Werkpakket gedaan ratio's niet bijgewerkt." error_work_package_not_found_in_project: "Het werkpakket werd niet gevonden of maakt geen deel uit van dit project" error_must_be_project_member: "moet een project lid zijn" - error_migrations_are_pending: "Your OpenProject installation has pending database migrations. You have likely missed running the migrations on your last upgrade. Please check the upgrade guide to properly upgrade your installation." - error_migrations_visit_upgrade_guides: "Please visit our upgrade guide documentation" + error_migrations_are_pending: "Uw OpenProject installatie heeft database migraties in afwachting. U heeft waarschijnlijk de migraties gemist tijdens uw laatste upgrade. Controleer a.u.b. de upgrade gids om uw installatie goed bij te werken." + error_migrations_visit_upgrade_guides: "Bezoek onze upgrade gids a.u.b." error_no_default_work_package_status: "Geen standaard werkpakket status is gedefinieerd. Controleer uw configuratie (Ga naar 'Administratie-> werkpakket statussen')." error_no_type_in_project: "Er is geen type gekoppeld aan dit project. Controleer de projectinstellingen." error_omniauth_registration_timed_out: "De registratie via een externe authenticatie-provider is verlopen. Probeer het opnieuw." @@ -1219,7 +1215,7 @@ nl: export: your_work_packages_export: "Your work packages export" succeeded: "The export has completed successfully." - failed: "The export has failed: %{message}" + failed: "De export is mislukt: %{message}" format: atom: "Atom" csv: "CSV" @@ -1228,7 +1224,7 @@ nl: pdf_with_descriptions_and_attachments: "PDF met beschrijvingen en bijlagen" pdf_with_attachments: "PDF met bijlagen" image: - omitted: "Image not exported." + omitted: "Afbeelding niet geëxporteerd." extraction: available: pdftotext: "Pdftotext beschikbaar (optioneel)" @@ -1247,7 +1243,7 @@ nl: general_text_yes: "Ja" general_text_No: "Nee" general_text_Yes: "Ja" - general_text_true: "true" + general_text_true: "waar" general_text_false: "onwaar" gui_validation_error: "1 fout" gui_validation_error_plural: "%{count} fouten" @@ -1263,7 +1259,7 @@ nl: more_info: "Meer informatie" links: upgrade_enterprise_edition: "Upgrade naar Enterprise Edition" - postgres_migration: "Migrating your installation to PostgreSQL" + postgres_migration: "Uw installatie overzetten naar PostgreSQL" user_guides: "Gebruikershandleidingen" faq: "Veelgestelde vragen (FAQ)" glossary: "Woordenlijst" @@ -1422,7 +1418,7 @@ nl: label_deleted: "verwijderd" label_deleted_custom_field: "(verwijderde aangepast veld)" label_deleted_custom_option: "(deleted option)" - label_missing_or_hidden_custom_option: "(missing value or lacking permissions to access)" + label_missing_or_hidden_custom_option: "(ontbrekende waarde of ontbrekende machtigingen voor toegang)" label_descending: "Aflopend" label_details: "Details" label_development_roadmap: "Ontwikkeling roadmap" @@ -1458,7 +1454,7 @@ nl: label_equals: "is" label_everywhere: "overal" label_example: "Voorbeeld" - label_import: "Import" + label_import: "Importeren" label_export_to: "Ook verkrijgbaar in:" label_expanded_click_to_collapse: "Uitgebreid. Klik op samenvouwen" label_f_hour: "%{value} uur" @@ -1495,7 +1491,7 @@ nl: label_hierarchy_leaf: "Hiërarchie blad" label_home: "Home" label_subject_or_id: "Onderwerp of ID" - label_impressum: "Legal notice" + label_impressum: "Juridische mededeling" label_in: "in" label_in_less_than: "in minder dan" label_in_more_than: "in meer dan" @@ -1545,7 +1541,7 @@ nl: label_max_size: "Maximale Grootte" label_me: "ik" label_member_new: "Nieuw lid" - label_member_all_admin: "(All roles due to admin status)" + label_member_all_admin: "(Alle rollen vanwege de admin status)" label_member_plural: "Leden" lable_membership_added: 'Member added' lable_membership_updated: 'Member updated' @@ -1574,7 +1570,7 @@ nl: label_name: "Naam" label_never: "Nooit" label_new: "Nieuw" - label_new_features: "New features" + label_new_features: "Nieuwe functies" label_new_statuses_allowed: "Nieuwe statussen toegestaan" label_news_singular: "Nieuws" label_news_added: "Nieuws toegevoegd" @@ -1749,12 +1745,12 @@ nl: label_updated_time: "Bijgewerkt %{value} geleden" label_updated_time_at: "%{author} %{age}" label_updated_time_by: "Bijgewerkt door %{author} %{age} geleden" - label_upgrade_guides: 'Upgrade guides' + label_upgrade_guides: 'Handleidingen bijwerken' label_used_by: "Gebruikt door" label_used_by_types: "Wordt gebruikt door types" label_used_in_projects: "Wordt gebruikt in projecten" label_user: "Gebruiker" - label_user_and_permission: "Users & Permissions" + label_user_and_permission: "Gebruikers & rechten" label_user_named: "Gebruiker %{name}" label_user_activity: "%{value} activiteit" label_user_anonymous: "Anoniem" @@ -1767,7 +1763,7 @@ nl: label_user_new: "Nieuwe gebruiker" label_user_plural: "Gebruikers" label_user_search: "Zoeken naar gebruiker" - label_user_settings: "User settings" + label_user_settings: "Gebruikersinstellingen" label_version_new: "Nieuwe versie" label_version_plural: "Versies" label_version_sharing_descendants: "Met subprojecten" @@ -1785,7 +1781,7 @@ nl: label_wiki_content_added: "Wiki-pagina toegevoegd" label_wiki_content_updated: "Wiki-pagina bijgewerkt" label_wiki_toc: "Inhoudsopgave" - label_wiki_toc_empty: "Table of Contents is empty as no headings are present." + label_wiki_toc_empty: "Inhoudsopgave is leeg omdat er geen koppen aanwezig zijn." label_wiki_dont_show_menu_item: "Deze wiki pagina niet weergeven in projectnavigatie" label_wiki_edit: "Wiki bewerken" label_wiki_edit_plural: "Wiki bewerkingen" @@ -1823,11 +1819,11 @@ nl: label_x_closed_work_packages_abbr: one: "1 closed" other: "%{count} closed" - zero: "0 closed" + zero: "0 gesloten" label_x_comments: one: "1 comment" other: "%{count} comments" - zero: "no comments" + zero: "geen reacties" label_x_open_work_packages_abbr: one: "1 open" other: "%{count} open" @@ -1835,7 +1831,7 @@ nl: label_x_projects: one: "1 project" other: "%{count} projects" - zero: "no projects" + zero: "geen projecten" label_yesterday: "gisteren" label_role_type: "Type" label_member_role: "Project functie" @@ -1855,7 +1851,7 @@ nl: legacy_warning: timeline: 'Deze oudere tijdlijn macro is verwijderd en is niet langer beschikbaar. U kunt de functionaliteit vervangen door een ingesloten tabel macro.' include_wiki_page: - removed: 'The macro does no longer exist.' + removed: 'De macro bestaat niet meer.' wiki_child_pages: errors: page_not_found: "Kan de wiki-pagina '%{name} ' niet vinden." @@ -1888,7 +1884,7 @@ nl: mail_body_register_closing: "Your OpenProject team" mail_body_register_ending: "Stay connected! Kind regards," mail_body_reminder: "%{count} werkpakket(ten) die aan u zijn toegewezen bereiken in de volgende %{days} dagen hun uiterste datum:" - mail_body_group_reminder: "%{count} work package(s) that are assigned to group \"%{group}\" are due in the next %{days} days:" + mail_body_group_reminder: "%{count} werkpakket(ten) die zijn toegewezen aan groep \"%{group}\" zullen in de komende %{days} dagen klaar zijn:" mail_body_wiki_content_added: "De '%{id}' wikipagina is toegevoegd door %{author}." mail_body_wiki_content_updated: "De '%{id}' wikipagina is bijgewerkt door %{author}." mail_subject_account_activation_request: "%{value} account aanvraag dient geactiveerd te worden" @@ -1897,7 +1893,7 @@ nl: mail_subject_lost_password: "Uw wachtwoord %{value}" mail_subject_register: "Uw %{value} account activatie" mail_subject_reminder: "%{count} werkpakket(ten) vervallen in de volgende %{days} dagen" - mail_subject_group_reminder: "For group \"%{group}\" %{count} work package(s) due in the next %{days} days" + mail_subject_group_reminder: "Voor groep \"%{group}\" %{count} werkpakket(ten) te doen in de komende %{days} dagen" mail_subject_wiki_content_added: "'%{id}' wikipagina is toegevoegd" mail_subject_wiki_content_updated: "'%{id}' wikipagina is bijgewerkt" mail_member_added_project: @@ -2029,7 +2025,7 @@ nl: permission_manage_placeholder_user: "Create, edit, and delete placeholder users" permission_add_subprojects: "Subprojecten maken" permission_add_work_package_watchers: "Kijkers toevoegen" - permission_assign_versions: "Assign versions" + permission_assign_versions: "Versies toewijzen" permission_browse_repository: "Alleen-lezen toegang tot opslagplaats (bladeren en uitchecken)" permission_change_wiki_parent_page: "Bovenliggende wiki-pagina wijzigen" permission_comment_news: "Opmerking nieuws" @@ -2109,7 +2105,7 @@ nl: remove_from_templates: 'Remove from templates' archive: are_you_sure: "Weet u zeker dat u dit project '%{name}' wilt archiveren?" - archived: "Archived" + archived: "Gearchiveerd" project_module_activity: "Activiteit" project_module_forums: "Fora" project_module_calendar: "Kalender" @@ -2240,7 +2236,7 @@ nl: setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" setting_apiv3_cors_origins_text_html: > If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. - setting_attachment_whitelist: "Attachment upload whitelist" + setting_attachment_whitelist: "Bijlage upload whitelist" setting_email_delivery_method: "Kies verzendmethode" setting_sendmail_location: "Locatie van het uitvoerbare sendmail" setting_smtp_enable_starttls_auto: "Gebruik STARTTLS automatisch wanneer deze beschikbaar is" @@ -2284,14 +2280,14 @@ nl: setting_display_subprojects_work_packages: "Toon standaard de werkpakketten van onderliggende projecten bij hoofdprojecten" setting_emails_footer: "Voettekst e-mails" setting_emails_header: "Koptekst e-mails" - setting_email_login: "Use email as login" + setting_email_login: "Gebruik e-mail als inlog" setting_enabled_scm: "SCM Ingeschakeld" setting_enabled_projects_columns: "Visible in project list" setting_feeds_enabled: "Feeds inschakelen" setting_feeds_limit: "Feed inhoud limiet" setting_file_max_size_displayed: "Maximale grootte van tekstbestanden inline weergegeven" setting_host_name: "Hostnaam" - setting_invitation_expiration_days: "Activation email expires after" + setting_invitation_expiration_days: "Activatie e-mail verloopt na" setting_work_package_done_ratio: "Berekenen van de verhouding-gedaan van het werkpakket" setting_work_package_done_ratio_field: "Gebruik het veld werkpakket" setting_work_package_done_ratio_status: "Gebruik de werkpakket status" @@ -2357,11 +2353,11 @@ nl: brute_force_prevention: "Automatische gebruiker blokkering" attachments: whitelist_text_html: > - Define a list of valid file extensions and/or mime types for uploaded files.
Enter file extensions (e.g., %{ext_example}) or mime types (e.g., %{mime_example}).
Leave empty to allow any file type to be uploaded. Multiple values allowed (one line for each value). + Definieer een lijst met geldige bestandsextensies en/of MIME-types voor geüploade bestanden.
Vul de bestandsextensies in (bijv. %{ext_example}) of MIME-types (bijv. ., %{mime_example}).
Laat leeg om elk bestandstype te kunnen uploaden. Meerdere waarden toegestaan (één regel voor elke waarde). notifications: retention_text: > - Set the number of days notification events for users (the source for in-app notifications) will be kept in the system. Any events older than this time will be deleted. - delay_minutes_explanation: "Email sending can be delayed to allow users with configured in app notification to confirm the notification within the application before a mail is sent out. Users who read a notification within the application will not receive an email for the already read notification." + Stel het aantal dagen in dat notificatie gebeurtenissen voor gebruikers (de bron voor in-app meldingen) worden bewaard in het systeem. Gebeurtenissen ouder dan deze tijd worden verwijderd. + delay_minutes_explanation: "Het verzenden van e-mail kan worden vertraagd zodat gebruikers met in app geconfigureerde melding binnen de applicatie de melding kunnen bevestigen voordat er een e-mail wordt verzonden. Gebruikers die een melding binnen de applicatie lezen ontvangen geen e-mail voor de reeds gelezen melding." display: first_date_of_week_and_year_set: > If either options "%{day_of_week_setting_name}" or "%{first_week_setting_name}" are set, the other has to be set as well to avoid inconsistencies in the frontend. @@ -2424,7 +2420,7 @@ nl: text_destroy_with_associated: "Er zijn extra objecten gerelateerd aan het/de te verwijderen werkpakket(ten). Deze objecten zijn van de soorten:" text_destroy_what_to_do: "Wat wilt u doen?" text_diff_truncated: "... deze diff is truncated vanwege dat de maximale grote is overschreden om te tonen." - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server to enable them." + text_email_delivery_not_configured: "E-mailbezorging is niet geconfigureerd, en meldingen zijn uitgeschakeld.\nConfigureer uw SMTP-server om deze in te schakelen." text_enumeration_category_reassign_to: "Wijzig alle naar de deze waarde:" text_enumeration_destroy_question: "%{count} objecten zijn toegewezen aan deze waarde." text_file_repository_writable: "Bijlagen directory schrijfbaar" @@ -2437,8 +2433,8 @@ nl: text_work_package_category_destroy_question: "Sommige werkpakketten (%{count}) worden toegewezen aan deze categorie. Wat wilt u doen?" text_work_package_category_reassign_to: "Werkpakketten toewijzen aan deze categorie" text_work_package_updated: "Werkpakket %{id} is bijgewerkt door %{author}." - text_work_package_watcher_added: "You have been added as a watcher to Work package %{id} by %{watcher_changer}." - text_work_package_watcher_removed: "You have been removed from watchers of Work package %{id} by %{watcher_changer}." + text_work_package_watcher_added: "Je bent toegevoegd als een toeschouwer aan het Werk pakket %{id} door %{watcher_changer}." + text_work_package_watcher_removed: "U bent verwijderd van de volgers van het Werk pakket %{id} door %{watcher_changer}." text_work_packages_destroy_confirmation: "Weet u zeker dat u geselecteerd(e) werkpakket(ten) wilt verwijderen?" text_work_packages_ref_in_commit_messages: "Verwijzen naar en herstellen van de werkpakketten in commit berichten" text_journal_added: "%{label} %{value} toegevoegd" @@ -2459,7 +2455,7 @@ nl: text_min_max_length_info: "0 betekent geen beperking" text_no_roles_defined: Er zijn geen rollen gedefinieerd. text_no_access_tokens_configurable: "Er zijn geen toegangstokens die kunnen worden geconfigureerd." - text_no_configuration_data: "Roles, types, work package statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded." + text_no_configuration_data: "Rollen, types, werkpakket statussen en workflow zijn nog niet geconfigureerd.\nHet wordt ten zeerste aangeraden om de standaard configuratie te laden. U kunt deze wijzigen zodra het is geladen." text_no_notes: "Er is geen commentaar beschikbaar voor dit werkpakket." text_notice_too_many_values_are_inperformant: "Opmerking: Meer dan 100 items per pagina weergeven kan de laadtijd van de pagina verhogen." text_notice_security_badge_displayed_html: > @@ -2662,7 +2658,7 @@ nl: Verzendt een andere uitnodiging e-mail met een nieuw token in geval het oude verlopen is of de gebruiker het oorspronkelijke e-mailbericht niet ontvangen heeft. Kan ook worden gebruikt voor actieve gebruikers om een nieuwe verificatiemethode te kizen. Wanneer gebruikt in combinatie met actieve gebruikers zal hun status worden gewijzigd tot 'uitgenodigd'. tooltip: setting_email_login: > - If enabled a user will be unable to chose a login during registration. Instead their given email address will serve as the login. An administrator may still change the login separately. + Indien ingeschakeld zal een gebruiker niet in staat zijn om een inlog te kiezen tijdens registratie. In plaats daarvan zal hun opgegeven e-mailadres dienen als inlog. Een beheerder kan de inlog nog steeds afzonderlijk wijzigen. queries: apply_filter: Vooraf geconfigureerde filter toepassen top_menu: @@ -2723,13 +2719,13 @@ nl: warning_bar: protocol_mismatch: - title: 'Protocol setting mismatch' + title: 'Protocol instelling komen niet overeen' text_html: > - Your application is running with its protocol setting set to %{set_protocol}, but the request is an %{actual_protocol} request. This will result in errors! Go to System settings and change the "Protocol" setting to correct this. + Uw programma wordt uitgevoerd met de protocolinstelling ingesteld op %{set_protocol}, maar het verzoek is een verzoek van %{actual_protocol} . Dit resulteert in fouten! Ga naar Systeeminstellingen en verander de instelling "Protocol" om dit te corrigeren. hostname_mismatch: - title: 'Hostname setting mismatch' + title: 'Hostnaam instellingen komen niet overeen' text_html: > - Your application is running with its host name setting set to %{set_hostname}, but the request is a %{actual_hostname} hostname. This will result in errors! Go to System settings and change the "Host name" setting to correct this. + Uw aanvraag wordt uitgevoerd met de hostnaam instelling ingesteld op %{set_hostname}, maar het verzoek is een hostnaam van %{actual_hostname} . Dit resulteert in fouten! Ga naar Systeeminstellingen en verander de instelling "Hostnaam" om dit te corrigeren. menu_item: "Menu-item" menu_item_setting: "Zichtbaarheid" wiki_menu_item_for: "Menu-item voor wiki pagina \"%{title}\"" @@ -2750,7 +2746,7 @@ nl: attributes: lock_version: "Vergrendel versie" errors: - code_400: "Bad request: %{message}" + code_400: "Verkeerd verzoek: %{message}" code_401: "U moet geauthenticeerd zijn om toegang te hebben tot deze resource." code_401_wrong_credentials: "U heeft niet de juiste referenties opgeven." code_403: "U bent niet gemachtigd om toegang te hebben tot deze resource." @@ -2776,7 +2772,7 @@ nl: multipart_body_error: "Het hoofdgedeelte van de aanvraag bevatte niet de verwachte meerdere delen." multiple_errors: "Meerdere veldbeperkingen werden overtreden." unable_to_create_attachment: "De bijlage kon niet aangemaakt worden" - unable_to_create_attachment_permissions: "The attachment could not be saved due to lacking file system permissions" + unable_to_create_attachment_permissions: "De bijlage kon niet worden opgeslagen vanwege ontbrekende bestandssysteem rechten" render: context_not_parsable: "De geboden context is niet een link naar een bron." unsupported_context: "De gegeven bron wordt niet ondersteund als context." @@ -2788,12 +2784,12 @@ nl: invalid_user_assigned_to_work_package: "De gekozen gebruiker kan geen '%{property}' zijn voor dit werkpakket." start_date: "De startdatum kan niet worden ingesteld op bovenliggende werkpakketten." eprops: - invalid_gzip: "is invalid gzip: %{message}" - invalid_json: "is invalid json: %{message}" + invalid_gzip: "is ongeldige gzip: %{message}" + invalid_json: "is ongeldige json: %{message}" resources: schema: 'Schema' undisclosed: - parent: Undisclosed - The selected parent is invisible because of lacking permissions. + parent: Niet openbaar gemaakt - De geselecteerde ouder is onzichtbaar door ontbrekende rechten. doorkeeper: pre_authorization: status: 'Pre-autorisatie' @@ -2803,7 +2799,7 @@ nl: messages: #Common error messages invalid_request: 'De aanvraag ontbreekt een vereiste parameter, bevat een niet-ondersteunde parameter waarde, of is anders niet geconfigureerd.' - invalid_redirect_uri: "The requested redirect URI is malformed or doesn't match client redirect URI." + invalid_redirect_uri: "De gevraagde omleidings-URI is onjuist of komt niet overeen met omleidings-URI." unauthorized_client: 'De client is niet gemachtigd voor het uitvoeren van dit verzoek met behulp van deze methode.' access_denied: 'De resource eigenaar of autorisatie server heeft het verzoek geweigerd.' invalid_scope: 'De gevraagde reikwijdte is ongeldig, onbekend of ongeldig.' @@ -2841,7 +2837,7 @@ nl: redirect_uri_html: > De toegestane URLs waar toegestane gebruikers kunnen worden doorgestuurd naar. Eén item per regel.
Als u een desktop-applicatie registreert, gebruik dan de volgende URL. confidential: "Controleer of de toepassing zal worden gebruikt waar het cliëntgeheim vertrouwelijk kan worden gehouden. Native mobiele apps en Single Page Apps worden verondersteld niet-vertrouwelijk." - scopes: "Check the scopes you want the application to grant access to. If no scope is checked, api_v3 is assumed." + scopes: "Controleer de toepassingsgebieden waartoe u toegang wilt geven. Als geen bereik is geselecteerd, wordt api_v3 aangenomen." client_credential_user_id: "Optionele gebruikersID om te impersoneren wanneer klanten deze applicatie gebruiken. Laat leeg om alleen openbare toegang toe te staan" register_intro: "Als u een OAuth API client applicatie voor OpenProject ontwikkelt, kunt u het registreren met dit formulier voor alle gebruikers om te gebruiken." default_scopes: "" @@ -2856,8 +2852,8 @@ nl: wants_to_access_html: > Deze applicatie vraagt toegang tot uw OpenProject account.
heeft de volgende machtigingen aangevraagd: scopes: - api_v3: "Full API v3 access" - api_v3_text: "Application will receive full read & write access to the OpenProject API v3 to perform actions on your behalf." + api_v3: "Volledige API v3 toegang" + api_v3_text: "Toepassing zal volledige lees- en schrijftoegang krijgen tot de OpenProject API v3 om namens u acties uit te voeren." grants: created_date: "Goedgekeurd op" scopes: "Machtigingen" diff --git a/modules/avatars/config/locales/crowdin/nl.yml b/modules/avatars/config/locales/crowdin/nl.yml index 6741b2ce946..02f308abeee 100644 --- a/modules/avatars/config/locales/crowdin/nl.yml +++ b/modules/avatars/config/locales/crowdin/nl.yml @@ -26,7 +26,7 @@ nl: text_your_local_avatar: | Met OpenProject kun je je eigen avatar uploaden. text_local_avatar_over_gravatar: | - If you set one, this custom avatar is used in precedence over the gravatar above. + Als je er een instelt, wordt deze aangepaste avatar gebruikt in voorrang op bovenstaande gravatar. text_your_current_gravatar: | OpenProject gebruikt je gravatar als je er een geregistreerd hebt, of een standaard afbeelding of pictogram als deze bestaat. De huidige gravatar is als volgt: diff --git a/modules/backlogs/config/locales/crowdin/nl.yml b/modules/backlogs/config/locales/crowdin/nl.yml index e58b7d4037b..3ecc9968cd7 100644 --- a/modules/backlogs/config/locales/crowdin/nl.yml +++ b/modules/backlogs/config/locales/crowdin/nl.yml @@ -45,7 +45,7 @@ nl: backlogs: add_new_story: "Nieuwe Story" any: "elke" - backlog_settings: "Backlogs settings" + backlog_settings: "Instellingen backlogs" burndown_graph: "Burndown grafiek" card_paper_size: "Papierformaat voor het afdrukken van de kaart" chart_options: "Grafiekopties" diff --git a/modules/bim/config/locales/crowdin/js-nl.yml b/modules/bim/config/locales/crowdin/js-nl.yml index 693746b9e91..cab913ccc11 100644 --- a/modules/bim/config/locales/crowdin/js-nl.yml +++ b/modules/bim/config/locales/crowdin/js-nl.yml @@ -3,7 +3,7 @@ nl: js: bcf: label_bcf: 'BCF' - import: 'Import' + import: 'Importeren' import_bcf_xml_file: 'Import BCF XML file (BCF version 2.1)' export: 'Exporteren' export_bcf_xml_file: 'Export BCF XML file (BCF version 2.1)' @@ -12,8 +12,8 @@ nl: show_viewpoint: 'Show viewpoint' delete_viewpoint: 'Delete viewpoint' management: 'BCF management' - refresh: 'Refresh' - refresh_work_package: 'Refresh work package' + refresh: 'Vernieuwen' + refresh_work_package: 'Werkpakket vernieuwen' ifc_models: empty_warning: "This project does not yet have any IFC models." use_this_link_to_manage: "Use this link to upload and manage your IFC models" diff --git a/modules/bim/config/locales/crowdin/nl.yml b/modules/bim/config/locales/crowdin/nl.yml index 3f6d295bdba..44d803282b7 100644 --- a/modules/bim/config/locales/crowdin/nl.yml +++ b/modules/bim/config/locales/crowdin/nl.yml @@ -4,9 +4,9 @@ nl: label_bim: 'BIM' bcf: label_bcf: 'BCF' - label_imported_failed: 'Failed imports of BCF topics' - label_imported_successfully: 'Successfully imported BCF topics' - issues: "Issues" + label_imported_failed: 'Mislukte import van BCF onderwerpen' + label_imported_successfully: 'Succesvol BCF onderwerpen geïmporteerd' + issues: "Problemen" recommended: 'aanbevolen' not_recommended: 'niet aanbevolen' no_viewpoints: 'Geen standpunten' @@ -19,44 +19,44 @@ nl: other: '%{count} BCF issues' bcf_xml: xml_file: 'BCF XML bestand' - import_title: 'Import' + import_title: 'Importeren' export: 'Exporteren' import_update_comment: '(Bijgewerkt in BCF import)' import_failed: 'Kan BCF-bestand niet importeren: %{error}' import_failed_unsupported_bcf_version: 'Failed to read the BCF file: The BCF version is not supported. Please ensure the version is at least %{minimal_version} or higher.' - import_successful: 'Imported %{count} BCF issues' - import_canceled: 'BCF-XML import canceled.' - type_not_active: "The issue type is not activated for this project." + import_successful: 'Geïmporteerde %{count} BCF problemen' + import_canceled: 'BCF-XML import geannuleerd.' + type_not_active: "Het probleemtype is niet geactiveerd voor dit project." import: num_issues_found: '%{x_bcf_issues} staan in het BCF-XML bestand, hun details staan hieronder.' button_prepare: 'Import voorbereiden' button_perform_import: 'Import bevestigen' button_proceed: 'Proceed with import' button_back_to_list: 'Terug naar lijst' - no_permission_to_add_members: 'You do not have sufficient permissions to add them as members to the project.' + no_permission_to_add_members: 'U heeft niet voldoende rechten om deze als deelnemers aan het project toe te voegen.' contact_project_admin: 'Neem contact op met je projectbeheerder om hen als deelnemers toe te voegen en deze import opnieuw te starten.' - continue_anyways: 'Do you want to proceed and finish the import anyways?' - description: "Provide a BCF-XML v2.1 file to import into this project. You can examine its contents before performing the import." - invalid_types_found: 'Invalid topic type names found' - invalid_statuses_found: 'Invalid status names found' - invalid_priorities_found: 'Invalid priority names found' + continue_anyways: 'Wilt u doorgaan en de import toch afsluiten?' + description: "Geef een BCF-XML v2.1 bestand op om in dit project te importeren. U kunt de inhoud ervan bekijken voordat u de import uitvoert." + invalid_types_found: 'Ongeldige onderwerp type namen gevonden' + invalid_statuses_found: 'Ongeldige statusnamen gevonden' + invalid_priorities_found: 'Ongeldige prioriteitsnamen gevonden' invalid_emails_found: 'Ongeldige emailadressen gevonden' unknown_emails_found: 'Onbekende emailadressen gevonden' - unknown_property: 'Unknown property' - non_members_found: 'Non project members found' - import_types_as: 'Set all these types to' - import_statuses_as: 'Set all these statuses to' - import_priorities_as: 'Set all these priorities to' + unknown_property: 'Onbekende eigenschap' + non_members_found: 'Niet-projectdeelnemers gevonden' + import_types_as: 'Al deze types instellen op' + import_statuses_as: 'Al deze statussen instellen op' + import_priorities_as: 'Al deze prioriteiten instellen op' invite_as_members_with_role: 'Nodig hen uit als deelnemers voor het project "%{project}" met de rol' add_as_members_with_role: 'Voeg hen als deelnemers toe aan het project "%{project}" met rol' no_type_provided: 'Geen type opgegeven' no_status_provided: 'Geen status opgegeven' - no_priority_provided: 'No priority provided' - perform_description: "Do you want to import or update the issues listed above?" - replace_with_system_user: 'Replace them with "System" user' - import_as_system_user: 'Import them as "System" user.' + no_priority_provided: 'Geen prioriteit opgegeven' + perform_description: "Wilt u de hierboven vermelde problemen importeren of bijwerken?" + replace_with_system_user: 'Vervang ze door "Systeem" gebruiker' + import_as_system_user: 'Importeer ze als "Systeem" gebruiker.' what_to_do: "Wat wilt u doen?" - work_package_has_newer_changes: "Outdated! This topic was not updated as the latest changes on the server were newer than the \"ModifiedDate\" of the imported topic. However, comments to the topic were imported." + work_package_has_newer_changes: "Verouderd! Dit topic is niet geüpdatet omdat de laatste wijzigingen op de server nieuwer zijn dan de \"ModifiedDate\" van het geïmporteerde onderwerp. Opmerkingen over het onderwerp zijn echter geïmporteerd." bcf_file_not_found: "Failed to locate BCF file. Please start the upload process again." export: format: @@ -66,12 +66,12 @@ nl: project_module_bcf: "BCF" project_module_bim: "BCF" permission_view_linked_issues: "Bekijk alle BCF-kwesties" - permission_manage_bcf: "Import and manage BCF issues" + permission_manage_bcf: "BCF-problemen importeren en beheren" permission_delete_bcf: "Delete BCF issues" oauth: scopes: - bcf_v2_1: "Full access to the BCF v2.1 API" - bcf_v2_1_text: "Application will receive full read & write access to the OpenProject BCF API v2.1 to perform actions on your behalf." + bcf_v2_1: "Volledige toegang tot de BCF v2.1 API" + bcf_v2_1_text: "Toepassing zal volledige lees- en schrijftoegang krijgen tot de OpenProject BCF API v2.1 om namens u acties uit te voeren." activerecord: models: bim/ifc_models/ifc_model: "IFC model" @@ -88,18 +88,18 @@ nl: ifc_attachment_missing: "No ifc file attached." invalid_ifc_file: "The provided file is not a valid IFC file." bim/bcf/viewpoint: - bitmaps_not_writable: "bitmaps is not writable as it is not yet implemented." - index_not_integer: "index is not an integer." - invalid_clipping_planes: "clipping_planes is invalid." - invalid_components: "components is invalid." - invalid_lines: "lines is invalid." - invalid_orthogonal_camera: "orthogonal_camera is invalid." - invalid_perspective_camera: "perspective_camera is invalid." - mismatching_guid: "The guid in the json_viewpoint does not match the model's guid." - no_json: "Is not a well structured json." - snapshot_type_unsupported: "snapshot_type needs to be either 'png' or 'jpg'." - snapshot_data_blank: "snapshot_data needs to be provided." - unsupported_key: "An unsupported json property is included." + bitmaps_not_writable: "bitmaps zijn niet beschrijfbaar omdat ze nog niet geïmplementeerd zijn." + index_not_integer: "index is geen geheel getal." + invalid_clipping_planes: "clipping_planes is ongeldig." + invalid_components: "componenten is ongeldig." + invalid_lines: "lijnen is ongeldig." + invalid_orthogonal_camera: "orthogonal_camera is ongeldig." + invalid_perspective_camera: "perspective_camera is ongeldig." + mismatching_guid: "De guid in het json_viewpoint komt niet overeen met de guid van het model." + no_json: "Is geen goed gestructureerde json." + snapshot_type_unsupported: "snapshot_type moet 'png' of 'jpg' zijn." + snapshot_data_blank: "Er moeten momentopnamen worden verstrekt." + unsupported_key: "Een niet-ondersteunde json-eigenschap is inbegrepen." bim/bcf/issue: uuid_already_taken: "Can't import this BCF issue as there already is another with the same GUID. Could it be that this BCF issue had already been imported into a different project?" ifc_models: diff --git a/modules/boards/config/locales/crowdin/js-lt.yml b/modules/boards/config/locales/crowdin/js-lt.yml index 965af79c8a8..d78ec473f5e 100644 --- a/modules/boards/config/locales/crowdin/js-lt.yml +++ b/modules/boards/config/locales/crowdin/js-lt.yml @@ -29,11 +29,11 @@ lt: error_attribute_not_writable: "Negalima perkelti darbų paketo, %{attribute} negali būti įrašytas." error_loading_the_list: "Sąrašo užkrovimo klaida: %{error_message}" error_permission_missing: "Trūksta teisių kurti viešas užklausas" - error_cannot_move_into_self: "Negalite perkelti darbo paketo į jo pačio stulpelį." + error_cannot_move_into_self: "Negalite perkelti darbo paketo į jo paties stulpelį." click_to_remove_list: "Spustelėkite sąrašo ištrynimui" board_type: text: 'Lentos tipas' - free: 'Pagrindinis' + free: 'bazinis' select_board_type: 'Prašome pasirinkti reikalingą lentos tipą.' free_text: > Pradėkite iš pradžių nuo tuščios lentos. Rankiniu būdu pridėkite korteles ir stulpelius į šią lentą. @@ -68,7 +68,7 @@ lt: add_list_modal: labels: assignee: Pasirinkite naudotoją, kuris bus pridėtas į naują „paskirtųjų“ sąrašą - status: Pasirinkite statusą, kuris bus pridėtas į naują sąrašą + status: Pasirinkite būseną, kuri bus pridėta į naują sąrašą version: Pasirinkite versiją, kuri bus pridėta į naują sąrašą subproject: Pasirinkite subprojektą, kuris bus pridėtas į naują sąrašą subtasks: Pasirinkite darbų paketą, kuris bus pridėtas į naują sąrašą diff --git a/modules/boards/config/locales/crowdin/js-nl.yml b/modules/boards/config/locales/crowdin/js-nl.yml index f7025d1f76a..12e0e085875 100644 --- a/modules/boards/config/locales/crowdin/js-nl.yml +++ b/modules/boards/config/locales/crowdin/js-nl.yml @@ -2,19 +2,19 @@ nl: js: boards: - label_unnamed_board: 'Unnamed board' + label_unnamed_board: 'Naamloos bord' label_unnamed_list: 'Naamloze lijst' - label_board_type: 'Board type' + label_board_type: 'Type bord' upsale: - teaser_text: 'Improve your agile project management with this flexible Boards view. Create as many boards as you like for anything you would like to keep track of.' - upgrade_to_ee_text: 'Boards is an Enterprise feature. Please upgrade to a paid plan.' + teaser_text: 'Verbeter uw agile projectbeheer met deze flexibele Bord weergave. Creëer zoveel borden als je wilt voor alles waar je een oogje op wilt houden.' + upgrade_to_ee_text: 'Boards is een Enterprise-functie. Upgrade a.u.b. naar een betaald abonnement.' upgrade: 'Upgrade nu' personal_demo: 'Contact us for a demo' lists: delete: 'Lijst verwijderen' version: - is_locked: 'Version is locked. No items can be added to this version.' - is_closed: 'Version is closed. No items can be added to this version.' + is_locked: 'Versie is vergrendeld. Er kunnen geen items aan deze versie worden toegevoegd.' + is_closed: 'Versie is gesloten. Er kunnen geen items aan deze versie worden toegevoegd.' close_version: 'Versies sluiten' open_version: 'Versie openen' lock_version: 'Versie vergrendelen' @@ -23,22 +23,22 @@ nl: show_version: 'Versie tonen' locked: 'Vergrendeld' closed: 'Gesloten' - new_board: 'New board' + new_board: 'Nieuw bord' add_list: 'Add list to board' add_card: 'Kaart toevoegen' - error_attribute_not_writable: "Cannot move the work package, %{attribute} is not writable." - error_loading_the_list: "Error loading the list: %{error_message}" + error_attribute_not_writable: "Kan werkpakket niet verplaatsen, %{attribute} is niet schrijfbaar." + error_loading_the_list: "Fout bij laden van de lijst: %{error_message}" error_permission_missing: "Geen toestemming om openbare zoekopdrachten te maken" error_cannot_move_into_self: "You can not move a work package into its own column." click_to_remove_list: "Klik om deze lijst te verwijderen" board_type: - text: 'Board type' + text: 'Type bord' free: 'basic' select_board_type: 'Please choose the type of board you need.' free_text: > Start from scratch with a blank board. Manually add cards and columns to this board. - action: 'Action board' - action_by_attribute: 'Action board (%{attribute})' + action: 'Actiebord' + action_by_attribute: 'Actiebord (%{attribute})' action_text: > A board with filtered lists on %{attribute} attribute. Moving work packages to other lists will update their attribute. action_text_subprojects: > @@ -64,7 +64,7 @@ nl: subproject: Subproject subtasks: Parent-Child basic: Basic - select_attribute: "Action attribute" + select_attribute: "Actie attribuut" add_list_modal: labels: assignee: Select user to add as a new assignee list @@ -80,7 +80,7 @@ nl: no_member: This project currently does not have any members that can be added.
add_members: Add a new member to this project to select users again. configuration_modal: - title: 'Configure this board' + title: 'Configureer dit bord' display_settings: - card_mode: "Display as cards" - table_mode: "Display as table" + card_mode: "Als kaarten weergeven" + table_mode: "Als tabel weergeven" diff --git a/modules/boards/config/locales/crowdin/nl.yml b/modules/boards/config/locales/crowdin/nl.yml index 90d8a1ecc59..4740f77070a 100644 --- a/modules/boards/config/locales/crowdin/nl.yml +++ b/modules/boards/config/locales/crowdin/nl.yml @@ -1,7 +1,7 @@ #English strings go here nl: - permission_show_board_views: "View boards" - permission_manage_board_views: "Manage boards" + permission_show_board_views: "Bekijk borden" + permission_manage_board_views: "Beheer boards" project_module_board_view: "Borden" boards: label_board: "Bord" diff --git a/modules/github_integration/config/locales/crowdin/js-nl.yml b/modules/github_integration/config/locales/crowdin/js-nl.yml index 5d276bf6f2a..9f30fdfbc59 100644 --- a/modules/github_integration/config/locales/crowdin/js-nl.yml +++ b/modules/github_integration/config/locales/crowdin/js-nl.yml @@ -28,12 +28,12 @@ nl: title: "Pull requests" copy_menu: label: Git snippets - description: Copy git snippets to clipboard + description: Git snippets kopiëren naar klembord git_actions: - branch_name: Branch name - commit_message: Commit message - cmd: Create branch with empty commit - title: Quick snippets for Git + branch_name: Branch naam + commit_message: Commit bericht + cmd: Maak branch met lege commit + title: Snelle snippets voor Git copy_success: '✅ Copied!' copy_error: '❌ Copy failed!' tab_prs: diff --git a/modules/grids/config/locales/crowdin/js-nl.yml b/modules/grids/config/locales/crowdin/js-nl.yml index b50fc763c19..dcf206236cb 100644 --- a/modules/grids/config/locales/crowdin/js-nl.yml +++ b/modules/grids/config/locales/crowdin/js-nl.yml @@ -31,9 +31,9 @@ nl: no_results: 'No custom fields have been defined for projects.' project_status: title: 'Projectstatus' - on_track: 'On track' - off_track: 'Off track' - at_risk: 'At risk' + on_track: 'Op schema' + off_track: 'Buiten schema' + at_risk: 'In gevaar' not_set: 'Not set' subprojects: title: 'Subprojecten' diff --git a/modules/ldap_groups/config/locales/crowdin/nl.yml b/modules/ldap_groups/config/locales/crowdin/nl.yml index f0b88aa6f44..528e456dcfd 100644 --- a/modules/ldap_groups/config/locales/crowdin/nl.yml +++ b/modules/ldap_groups/config/locales/crowdin/nl.yml @@ -3,24 +3,24 @@ nl: attributes: ldap_groups/synchronized_group: dn: 'DN' - auth_source: 'LDAP connection' + auth_source: 'LDAP verbinding' sync_users: 'Sync users' ldap_groups/synchronized_filter: filter_string: 'LDAP filter' - auth_source: 'LDAP connection' + auth_source: 'LDAP verbinding' group_name_attribute: "Group name attribute" sync_users: 'Sync users' base_dn: "Search base DN" models: - ldap_groups/synchronized_group: 'Synchronized LDAP group' + ldap_groups/synchronized_group: 'Gesynchroniseerde LDAP groep' ldap_groups/synchronized_filter: 'LDAP Group synchronization filter' errors: models: ldap_groups/synchronized_filter: must_contain_base_dn: "Filter base DN must be contained within the LDAP connection's base DN" ldap_groups: - label_menu_item: 'LDAP group synchronization' - label_group_key: 'LDAP group filter key' + label_menu_item: 'LDAP groep synchronisatie' + label_group_key: 'LDAP groep filtersleutel' label_synchronize: 'Synchronize' settings: name_attribute: 'LDAP groups name attribute' @@ -45,26 +45,26 @@ nl: Enter the search base DN to use for this filter. It needs to be below the base DN of the selected LDAP connection. Leave this option empty to reuse the base DN of the connection synchronized_groups: - add_new: 'Add synchronized LDAP group' + add_new: 'Gesynchroniseerde LDAP groep toevoegen' destroy: - title: '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: "Enter the group's name %{name} to verify the deletion." + title: 'Verwijder gesynchroniseerde groep %{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: "Voer de projectnaam %{name} in om de verwijdering te verifiëren." 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. + 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.
- Groups are synchronized hourly through a cron job. - Please see our documentation on this topic. - no_results: 'No synchronized groups found.' - no_members: 'This group has no synchronized members yet.' - plural: 'Synchronized LDAP groups' - singular: 'Synchronized LDAP group' + Groepen worden elk uur gesynchroniseerd door een cron job. + Bekijk a.u.b. onze documentatie over dit onderwerp. + no_results: 'Geen gesynchroniseerde groepen gevonden' + no_members: 'Deze groep heeft nog geen gesynchroniseerde leden.' + plural: 'Gesynchroniseerde LDAP groepen' + singular: 'Gesynchroniseerde LDAP groep' form: auth_source_text: 'Select which LDAP connection should be used.' sync_users_text: > If you enable this option, found users will also be automatically created in OpenProject. Without it, only existing accounts in OpenProject will be added to groups. dn_text: 'Enter the full DN of the group in LDAP' - group_text: 'Select an existing OpenProject group that members of the LDAP group shall be synchronized with' + group_text: 'Selecteer een bestaande OpenProject groep waar leden van de LDAP mee gesynchroniseerd zullen worden.' From d70856977a5472a7f23e87eb295b2686bd5333df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20G=C3=BCnther?= Date: Mon, 11 Oct 2021 10:38:22 +0200 Subject: [PATCH 06/28] [39120] Ensure synchronized group is saved with the filter When the group was already persisted, calling `.replace` on the filter does not save the group, nor does :autosave on the association. https://community.openproject.org/wp/39120 --- .../ldap_groups/synchronize_filter_service.rb | 5 ++- .../factories/synchronized_filter_factory.rb | 1 + .../factories/synchronized_group_factory.rb | 1 + .../spec/services/synchronize_filter_spec.rb | 31 +++++++++++++++++-- 4 files changed, 35 insertions(+), 3 deletions(-) diff --git a/modules/ldap_groups/app/services/ldap_groups/synchronize_filter_service.rb b/modules/ldap_groups/app/services/ldap_groups/synchronize_filter_service.rb index 698858902e5..0b0ded8222a 100644 --- a/modules/ldap_groups/app/services/ldap_groups/synchronize_filter_service.rb +++ b/modules/ldap_groups/app/services/ldap_groups/synchronize_filter_service.rb @@ -69,7 +69,8 @@ module LdapGroups ## # Create or update the synchronized group item def create_or_update_sync_group(dn) - LdapGroups::SynchronizedGroup.find_or_initialize_by(dn: dn).tap do |sync| + group = LdapGroups::SynchronizedGroup + .find_or_initialize_by(dn: dn).tap do |sync| # Always set the filter and auth source, in case multiple filters match the same group # they are simply being re-assigned to the latest one sync.filter_id = filter.id @@ -78,6 +79,8 @@ module LdapGroups # Tell the group to synchronize users if the filter has requested it to sync.sync_users = filter.sync_users end + + group.tap { group.save! if group.persisted? } end ## diff --git a/modules/ldap_groups/spec/factories/synchronized_filter_factory.rb b/modules/ldap_groups/spec/factories/synchronized_filter_factory.rb index fe8d76ba70a..660cb0f9d02 100644 --- a/modules/ldap_groups/spec/factories/synchronized_filter_factory.rb +++ b/modules/ldap_groups/spec/factories/synchronized_filter_factory.rb @@ -5,5 +5,6 @@ FactoryBot.define do group_name_attribute { 'cn' } base_dn { 'dc=example,dc=com' } auth_source factory: :ldap_auth_source + sync_users { true } end end diff --git a/modules/ldap_groups/spec/factories/synchronized_group_factory.rb b/modules/ldap_groups/spec/factories/synchronized_group_factory.rb index cd773296f44..bab7846d7e7 100644 --- a/modules/ldap_groups/spec/factories/synchronized_group_factory.rb +++ b/modules/ldap_groups/spec/factories/synchronized_group_factory.rb @@ -3,5 +3,6 @@ FactoryBot.define do dn { 'cn=foo,ou=groups,dc=example,dc=com' } group factory: :group auth_source factory: :ldap_auth_source + sync_users { true } end end diff --git a/modules/ldap_groups/spec/services/synchronize_filter_spec.rb b/modules/ldap_groups/spec/services/synchronize_filter_spec.rb index 719f3440eb9..4c3176f2e78 100644 --- a/modules/ldap_groups/spec/services/synchronize_filter_spec.rb +++ b/modules/ldap_groups/spec/services/synchronize_filter_spec.rb @@ -29,11 +29,11 @@ describe LdapGroups::SynchronizeFilterService, with_ee: %i[ldap_groups] do let(:synced_foo) do FactoryBot.create :ldap_synchronized_group, dn: 'cn=foo,ou=groups,dc=example,dc=com', group: group_foo, - auth_source: auth_source + auth_source: auth_source end let(:synced_bar) do FactoryBot.create :ldap_synchronized_group, dn: 'cn=bar,ou=groups,dc=example,dc=com', group: group_bar, - auth_source: auth_source + auth_source: auth_source end let(:filter_foo_bar) { FactoryBot.create :ldap_synchronized_filter, auth_source: auth_source } @@ -83,6 +83,33 @@ describe LdapGroups::SynchronizeFilterService, with_ee: %i[ldap_groups] do end end + describe 'when one group already exists with different settings' do + let(:synced_foo) do + FactoryBot.create :ldap_synchronized_group, + dn: 'cn=foo,ou=groups,dc=example,dc=com', + group: group_foo, + sync_users: false, + auth_source: auth_source + end + let(:filter_foo_bar) do + FactoryBot.create :ldap_synchronized_filter, + sync_users: true, + auth_source: auth_source + end + + before do + synced_foo + end + + it 'the group receives the value of the filter' do + expect(synced_foo.sync_users).to eq false + expect { subject }.not_to raise_error + + synced_foo.reload + expect(synced_foo.sync_users).to eq true + end + end + describe 'when it has a group that no longer exists in ldap' do let!(:group_doesnotexist) { FactoryBot.create :group, lastname: 'doesnotexist' } let!(:synced_doesnotexist) do From 3edc5b9e42a341334162a08c20c8d531b7a86b30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20G=C3=BCnther?= Date: Mon, 11 Oct 2021 10:55:40 +0200 Subject: [PATCH 07/28] [39121] Also find users with non matching case https://community.openproject.org/wp/39121 --- .../ldap_groups/synchronize_groups_service.rb | 2 +- .../spec/services/synchronization_spec.rb | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/modules/ldap_groups/app/services/ldap_groups/synchronize_groups_service.rb b/modules/ldap_groups/app/services/ldap_groups/synchronize_groups_service.rb index 0a9c817219a..8ae6642932d 100644 --- a/modules/ldap_groups/app/services/ldap_groups/synchronize_groups_service.rb +++ b/modules/ldap_groups/app/services/ldap_groups/synchronize_groups_service.rb @@ -43,7 +43,7 @@ module LdapGroups def map_to_users(sync_group, entries) create_missing!(entries) if sync_group.sync_users - User.where(login: entries.keys) + User.where('LOWER(login) IN (?)', entries.keys.map(&:downcase)) end ## diff --git a/modules/ldap_groups/spec/services/synchronization_spec.rb b/modules/ldap_groups/spec/services/synchronization_spec.rb index df6ca3a1e45..5d0202a7399 100644 --- a/modules/ldap_groups/spec/services/synchronization_spec.rb +++ b/modules/ldap_groups/spec/services/synchronization_spec.rb @@ -188,7 +188,6 @@ describe LdapGroups::SynchronizeGroupsService, with_ee: %i[ldap_groups] do let(:user_aa729) { User.find_by login: 'aa729' } let(:user_bb459) { User.find_by login: 'bb459' } - context 'and users sync in the groups enabled' do let(:sync_users) { true } @@ -221,7 +220,6 @@ describe LdapGroups::SynchronizeGroupsService, with_ee: %i[ldap_groups] do let(:user_aa729) { User.find_by login: 'aa729' } let(:user_bb459) { User.find_by login: 'bb459' } - context 'and users sync in the groups enabled' do let(:sync_users) { true } @@ -309,7 +307,7 @@ describe LdapGroups::SynchronizeGroupsService, with_ee: %i[ldap_groups] do describe 'removing memberships' do context 'with a user in a group thats not in ldap' do let(:group_foo) { FactoryBot.create :group, lastname: 'foo_internal', members: [user_cc414, user_aa729] } - let(:manager) { FactoryBot.create :role, name: 'Manager' } + let(:manager) { FactoryBot.create :role, name: 'Manager' } let(:project) { FactoryBot.create :project, name: 'Project 1', identifier: 'project1', members: { group_foo => [manager] } } before do @@ -374,4 +372,18 @@ describe LdapGroups::SynchronizeGroupsService, with_ee: %i[ldap_groups] do end end end + + context 'when one user does not match case' do + before do + group_foo + synced_foo + user_aa729.update_attribute(:login, 'Aa729') + end + + it 'synchronized the membership of aa729 to foo' do + subject + expect(synced_foo.users.count).to eq(1) + expect(group_foo.users).to eq([user_aa729]) + end + end end From 5fb11bf0d098fee2914aed62e1a248986940f86a Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Tue, 12 Oct 2021 03:02:41 +0000 Subject: [PATCH 08/28] update locales from crowdin [ci skip] --- config/locales/crowdin/lt.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/locales/crowdin/lt.yml b/config/locales/crowdin/lt.yml index fe7bd83cc00..10c578674e1 100644 --- a/config/locales/crowdin/lt.yml +++ b/config/locales/crowdin/lt.yml @@ -1231,7 +1231,7 @@ lt: error_menu_item_not_saved: Meniu punktas negali būti išsaugotas error_wiki_root_menu_item_conflict: > Negalima pervadinti „%{old_name}“ į „%{new_name}“ dėl konflikto su esamu meniu punktu „%{existing_caption}“ (%{existing_identifier}). - error_external_authentication_failed: "Įvyko klaida vykstant išorinei autentikacijai. Bandykite dar kartą." + error_external_authentication_failed: "Įvyko klaida vykstant išorinei autentifikacijai. Bandykite dar kartą." error_attribute_not_highlightable: "Atributai, kurių negalima paryškinti: %{attributes}" events: project: 'Projektas redaguotas' @@ -1853,7 +1853,7 @@ lt: other: "%{count} uždaryti (-as, -ų)" zero: "0 uždarytų" label_x_comments: - one: "1 komentatas" + one: "1 komentaras" other: "%{count} komentarai (-as, -ų)" zero: "nėra komentarų" label_x_open_work_packages_abbr: From 9cc292444e19e5277ce711d6b0b36d7783703f21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20G=C3=BCnther?= Date: Tue, 12 Oct 2021 09:08:02 +0200 Subject: [PATCH 09/28] Use the pg13 branch of pkgr --- .pkgr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pkgr.yml b/.pkgr.yml index a29623b8868..5d667d3fc31 100644 --- a/.pkgr.yml +++ b/.pkgr.yml @@ -41,7 +41,7 @@ installer: https://github.com/pkgr/installer.git wizards: - https://github.com/pkgr/addon-legacy-installer.git - ./packaging/addons/openproject-edition - - https://github.com/opf/addon-postgres + - https://github.com/pkgr/addon-postgres - https://github.com/pkgr/addon-apache2.git - ./packaging/addons/repositories - https://github.com/pkgr/addon-smtp.git From 7069ac153cfad0caf9c222c557f465bd33597b01 Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Wed, 13 Oct 2021 03:12:23 +0000 Subject: [PATCH 10/28] update locales from crowdin [ci skip] --- config/locales/crowdin/js-lt.yml | 4 ++-- config/locales/crowdin/lt.yml | 6 +++--- modules/bim/config/locales/crowdin/lt.yml | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/config/locales/crowdin/js-lt.yml b/config/locales/crowdin/js-lt.yml index 4e5d5988758..7e18b14bdf2 100644 --- a/config/locales/crowdin/js-lt.yml +++ b/config/locales/crowdin/js-lt.yml @@ -266,7 +266,7 @@ lt: one: "Pirmasis rikiavimo kriterijus" two: "Antrasis rikiavimo kriterijus" three: "Trečiasis rikiavimo kriterijus" - upsale_for_more: "Norėdami naudoti daugiau papildomų filtrų, patikrinkite" + upsale_for_more: "Norėdami naudoti daugiau papildomų filtrų, išbandykite" upsale_link: '„Enterprise Edition“.' general_text_no: "ne" general_text_yes: "taip" @@ -966,7 +966,7 @@ lt: many: "%{count} darbų paketo vaikai" other: "%{count} darbų paketo vaikai" hour: - one: "1 val." + one: "1 val" other: "%{count} val" zero: "0 val" zen_mode: diff --git a/config/locales/crowdin/lt.yml b/config/locales/crowdin/lt.yml index 10c578674e1..bca87032bcc 100644 --- a/config/locales/crowdin/lt.yml +++ b/config/locales/crowdin/lt.yml @@ -856,15 +856,15 @@ lt: heading_reset: "Atstatyti atsarginės kopijos žetoną" heading_create: "Sukurti atsarginės kopijos žetoną" implications: > - Atsarginių kopijų įgalinimas leis bet kuriam naudotojui su priskirtomis teisėmis iš šiuo atsarginės kopijos žetonu parsisiųsti atsarginę kopiją turinčią visus šios OpenProject instaliacijos duomenis. Juose bus ir visų kitų naudotojų duomenys. + Atsarginių kopijų įgalinimas leis bet kuriam naudotojui su priskirtomis teisėmis ir šiuo atsarginės kopijos žetonu parsisiųsti atsarginę kopiją, turinčią visus šio OpenProject egzemplioriaus duomenis. Juose bus ir visų kitų naudotojų duomenys. info: > - Jums reikės sugeneruoti atsarginės kopijos žetoną norint sukurti atsarginę kopiją. Kaskart, kai jūs norėsite sukurti atsarginę kopiją turėsite pateikti šį žetoną. Jūs galite ištrinti žetoną ir taip atimsite iš naudotojo teisę daryti atsargines kopijas. + Norint sukurti atsarginę kopiją jums reikės sugeneruoti atsarginės kopijos žetoną. Kaskart, kai jūs norėsite sukurti atsarginę kopiją, turėsite pateikti šį žetoną. Jūs galite ištrinti žetoną ir taip atimsite iš naudotojo teisę daryti atsargines kopijas. verification: > Įveskite %{word} norėdami patvirtinti veiksmą su atsarginės kopijos žetonu: %{action}. verification_word_reset: atstatyti verification_word_create: sukurti warning: > - Kai jūs sukuriate atsarginės kopijos žetoną, daryti atsargines kopijas jums bus leista po 24 valandų. Tai apsauga. Po šio laiko galėsite užsakyti atsarginę kopiją bet kuriuo metu panaudoję šį žetoną. + Kai jūs sukuriate atsarginės kopijos žetoną, daryti atsargines kopijas jums bus leista po 24 valandų. Tai apsauga. Po šio laiko, pateikę žetoną galėsite bet kuriuo metu užsakyti atsarginę kopiją. text_token_deleted: Atsarginės kopijos žetonas ištrintas. Atsarginės kopijos dabar atjungtos. error: invalid_token: Nepateiktas arba neteisingas žetonas. diff --git a/modules/bim/config/locales/crowdin/lt.yml b/modules/bim/config/locales/crowdin/lt.yml index 78fa42cdf07..5634a139d89 100644 --- a/modules/bim/config/locales/crowdin/lt.yml +++ b/modules/bim/config/locales/crowdin/lt.yml @@ -15,8 +15,8 @@ lt: file_invalid: "Neteisingas BCF failas" x_bcf_issues: zero: 'Nėra BCF trūkumų' - one: 'Vienas BCF trūkumas' - other: '%{count} BCF trūkumai' + one: 'Viena BCF problema' + other: '%{count} BCF problemos' bcf_xml: xml_file: 'BCF XML failas' import_title: 'Importuoti' From cd19cfbb455bcde0d3e75e1cc5c0e865f7b7b27a Mon Sep 17 00:00:00 2001 From: Eric Schubert Date: Wed, 13 Oct 2021 16:51:18 +0200 Subject: [PATCH 11/28] [#39135] handle viewpoint payload correctly - https://community.openproject.org/work_packages/39135 - added both ways of handling snapshot data from revit add-in, compatible to correct BCF API format and pure base64 string - code is marked as deprecated, as it can be removed after a certain period (revit add-in users will get notified separately) --- .../bim/revit_add_in/revit-bridge.service.ts | 43 ++++++++++++------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/frontend/src/app/modules/bim/revit_add_in/revit-bridge.service.ts b/frontend/src/app/modules/bim/revit_add_in/revit-bridge.service.ts index 707bb06e2c2..1376664a089 100644 --- a/frontend/src/app/modules/bim/revit_add_in/revit-bridge.service.ts +++ b/frontend/src/app/modules/bim/revit_add_in/revit-bridge.service.ts @@ -1,6 +1,6 @@ import { Injectable, Injector } from '@angular/core'; import { Observable, Subject, BehaviorSubject } from "rxjs"; -import { distinctUntilChanged, filter, first, map, mapTo } from "rxjs/operators"; +import { distinctUntilChanged, filter, first, map } from "rxjs/operators"; import { BcfViewpointInterface } from "core-app/modules/bim/bcf/api/viewpoints/bcf-viewpoint.interface"; import { ViewerBridgeService } from "core-app/modules/bim/bcf/bcf-viewer-bridge/viewer-bridge.service"; import { WorkPackageResource } from "core-app/modules/hal/resources/work-package-resource"; @@ -10,7 +10,10 @@ import { InjectField } from "core-app/helpers/angular/inject-field.decorator"; declare global { interface Window { - RevitBridge:any; + RevitBridge:{ + sendMessageToRevit:(messageType:string, trackingId:string, payload:string) => void, + sendMessageToOpenProject:(message:string) => void + }; } } @@ -18,7 +21,8 @@ declare global { export class RevitBridgeService extends ViewerBridgeService { public shouldShowViewer = false; public viewerVisible$ = new BehaviorSubject(false); - private revitMessageReceivedSource = new Subject<{ messageType:string, trackingId:string, messagePayload:any }>(); + private revitMessageReceivedSource = + new Subject<{ messageType:string, trackingId:string, messagePayload:BcfViewpointInterface }>(); private trackingIdNumber = 0; @InjectField() viewpointsService:ViewpointsService; @@ -37,7 +41,7 @@ export class RevitBridgeService extends ViewerBridgeService { } } - public viewerVisible() { + public viewerVisible():boolean { return this.viewerVisible$.getValue(); } @@ -50,41 +54,48 @@ export class RevitBridgeService extends ViewerBridgeService { .pipe( distinctUntilChanged(), filter(message => message.messageType === 'ViewpointData' && message.trackingId === trackingId), - first() - ) - .pipe( + first(), map((message) => { + // FIXME: Deprecated code + // the handling of the message payload is only needed to be compatible to the revit add-in <= 2.3.2. In + // newer versions the message payload is sent correctly and needs no special treatment const viewpointJson = message.messagePayload; + if (viewpointJson.snapshot.hasOwnProperty('snapshot_type') && + viewpointJson.snapshot.hasOwnProperty('snapshot_data')) { + // already correctly formatted payload + return viewpointJson; + } + + // at this point snapshot data should be sent as a base64 string viewpointJson.snapshot = { snapshot_type: 'png', - snapshot_data: viewpointJson.snapshot, + snapshot_data: viewpointJson.snapshot as any, }; return viewpointJson; - }) + }), ); } - public showViewpoint(workPackage:WorkPackageResource, index:number) { + public showViewpoint(workPackage:WorkPackageResource, index:number):void { this.viewpointsService .getViewPoint$(workPackage, index) .subscribe((viewpoint:BcfViewpointInterface) => this.sendMessageToRevit( 'ShowViewpoint', this.newTrackingId(), - JSON.stringify(viewpoint) - ) + JSON.stringify(viewpoint), + ), ); } - sendMessageToRevit(messageType:string, trackingId:string, messagePayload?:any) { + sendMessageToRevit(messageType:string, trackingId:string, messagePayload:string):void { if (!this.viewerVisible()) { return; } - const jsonPayload = messagePayload != null ? JSON.stringify(messagePayload) : null; - window.RevitBridge.sendMessageToRevit(messageType, trackingId, jsonPayload); + window.RevitBridge.sendMessageToRevit(messageType, trackingId, messagePayload); } private hookUpRevitListener() { @@ -97,7 +108,7 @@ export class RevitBridgeService extends ViewerBridgeService { this.revitMessageReceivedSource.next({ messageType: messageType, trackingId: trackingId, - messagePayload: messagePayload + messagePayload: messagePayload, }); }; this.viewerVisible$.next(true); From 18a82739a80661aa7be9c8d9672ac43f52ce5da9 Mon Sep 17 00:00:00 2001 From: Eric Schubert Date: Thu, 14 Oct 2021 10:40:15 +0200 Subject: [PATCH 12/28] [#39135] remove any typecast --- .../src/app/modules/bim/revit_add_in/revit-bridge.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/modules/bim/revit_add_in/revit-bridge.service.ts b/frontend/src/app/modules/bim/revit_add_in/revit-bridge.service.ts index 1376664a089..38b1f186c4e 100644 --- a/frontend/src/app/modules/bim/revit_add_in/revit-bridge.service.ts +++ b/frontend/src/app/modules/bim/revit_add_in/revit-bridge.service.ts @@ -70,7 +70,7 @@ export class RevitBridgeService extends ViewerBridgeService { // at this point snapshot data should be sent as a base64 string viewpointJson.snapshot = { snapshot_type: 'png', - snapshot_data: viewpointJson.snapshot as any, + snapshot_data: viewpointJson.snapshot as unknown as string, }; return viewpointJson; From c91ab1c84426482a3cbbd72f127ceba148aa7e9e Mon Sep 17 00:00:00 2001 From: Markus Kahl Date: Thu, 14 Oct 2021 10:24:58 +0100 Subject: [PATCH 13/28] Help users help themselves --- config/locales/js-en.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/js-en.yml b/config/locales/js-en.yml index 6e4b9383dc8..4eba7daa8e6 100644 --- a/config/locales/js-en.yml +++ b/config/locales/js-en.yml @@ -837,7 +837,7 @@ en: title: No work packages to display. description: Either none have been created or all work packages are filtered out. limited_results: - Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering. + Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Details" people: "People" From d8bf68f59c459c3db1d51526586708a39ba18f77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20G=C3=BCnther?= Date: Thu, 14 Oct 2021 15:45:46 +0200 Subject: [PATCH 14/28] Bump sanitize gem This already happened in 12.0 and appears to be safe. So backporting this to address: https://community.openproject.org/wp/39125 --- Gemfile | 2 +- Gemfile.lock | 9 +++------ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/Gemfile b/Gemfile index fbdbf535386..a9c72fcd837 100644 --- a/Gemfile +++ b/Gemfile @@ -85,7 +85,7 @@ gem 'escape_utils', '~> 1.0' # Syntax highlighting used in html-pipeline with rouge gem 'rouge', '~> 3.26.0' # HTML sanitization used for html-pipeline -gem 'sanitize', '~> 5.2.1' +gem 'sanitize', '~> 6.0.0' # HTML autolinking for mails and urls (replaces autolink) gem 'rinku', '~> 2.0.4' # Version parsing with semver diff --git a/Gemfile.lock b/Gemfile.lock index d56514dfb91..165ece55249 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -610,8 +610,6 @@ GEM nokogiri (1.12.5) mini_portile2 (~> 2.6.1) racc (~> 1.4) - nokogumbo (2.0.5) - nokogiri (~> 1.8, >= 1.8.4) octokit (4.21.0) faraday (>= 0.9) sawyer (~> 0.8.0, >= 0.5.3) @@ -836,10 +834,9 @@ GEM json (~> 2.1) structured_warnings (~> 0.3) rubyzip (2.3.0) - sanitize (5.2.3) + sanitize (6.0.0) crass (~> 1.0.2) - nokogiri (>= 1.8.0) - nokogumbo (~> 2.0) + nokogiri (>= 1.12.0) sassc (2.4.0) ffi (~> 1.9) sassc-rails (2.1.2) @@ -1091,7 +1088,7 @@ DEPENDENCIES ruby-prof ruby-progressbar (~> 1.11.0) rubytree (~> 1.0.0) - sanitize (~> 5.2.1) + sanitize (~> 6.0.0) sassc-rails secure_headers (~> 6.3.0) selenium-webdriver (~> 3.14) From 38907c32732ef66290c55d2486b510946a29c63c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20G=C3=BCnther?= Date: Thu, 14 Oct 2021 16:07:26 +0200 Subject: [PATCH 15/28] [39130] Validate the whitelist on finishing a direct upload https://community.openproject.org/wp/39130 --- .../attachments/finish_direct_upload_job.rb | 51 ++++++++++++++----- ...nish_direct_upload_job_integration_spec.rb | 40 +++++++++++++++ 2 files changed, 79 insertions(+), 12 deletions(-) diff --git a/app/workers/attachments/finish_direct_upload_job.rb b/app/workers/attachments/finish_direct_upload_job.rb index 0b319208d16..7a16504b441 100644 --- a/app/workers/attachments/finish_direct_upload_job.rb +++ b/app/workers/attachments/finish_direct_upload_job.rb @@ -42,27 +42,47 @@ class Attachments::FinishDirectUploadJob < ApplicationJob return Rails.logger.error("File for attachment #{attachment_id} was not uploaded.") end - begin - set_attributes_from_file(attachment, local_file) - save_attachment(attachment) - journalize_container(attachment) - ensure - File.unlink(local_file.path) if File.exist?(local_file.path) + User.execute_as(attachment.author) do + attach_uploaded_file(attachment, local_file) end end private + def attach_uploaded_file(attachment, local_file) + set_attributes_from_file(attachment, local_file) + validate_attachment(attachment) + save_attachment(attachment) + journalize_container(attachment) + attachment_created_event(attachment) + rescue StandardError => e + ::OpenProject.logger.error e + attachment.destroy + ensure + File.unlink(local_file.path) if File.exist?(local_file.path) + end + def set_attributes_from_file(attachment, local_file) - attachment.downloads = 0 - attachment.set_file_size local_file - attachment.set_content_type local_file - attachment.set_digest local_file + attachment.extend(OpenProject::ChangedBySystem) + attachment.change_by_system do + attachment.downloads = 0 + attachment.set_file_size local_file + attachment.set_content_type local_file + attachment.set_digest local_file + end end def save_attachment(attachment) - User.execute_as(attachment.author) do - attachment.save! if attachment.changed? + attachment.save! if attachment.changed? + end + + def validate_attachment(attachment) + contract = ::Attachments::CreateContract + .new(attachment, attachment.author) + + unless contract.valid? + errors = contract.errors.full_messages.join(", ") + raise "Failed to validate attachment #{attachment.id}: #{errors}" end end @@ -93,4 +113,11 @@ class Attachments::FinishDirectUploadJob < ApplicationJob timestamps = attributes.index_with { Time.now } journable.update_columns(timestamps) if timestamps.any? end + + def attachment_created_event(attachment) + OpenProject::Notifications.send( + OpenProject::Events::ATTACHMENT_CREATED, + attachment: attachment + ) + end end diff --git a/spec/workers/attachments/finish_direct_upload_job_integration_spec.rb b/spec/workers/attachments/finish_direct_upload_job_integration_spec.rb index ea16e4d3099..6b09dad8542 100644 --- a/spec/workers/attachments/finish_direct_upload_job_integration_spec.rb +++ b/spec/workers/attachments/finish_direct_upload_job_integration_spec.rb @@ -31,8 +31,11 @@ require 'spec_helper' describe Attachments::FinishDirectUploadJob, 'integration', type: :job do + shared_let(:user) { FactoryBot.create :admin } + let!(:pending_attachment) do FactoryBot.create(:attachment, + author: user, downloads: -1, digest: '', container: container) @@ -111,4 +114,41 @@ describe Attachments::FinishDirectUploadJob, 'integration', type: :job do it_behaves_like 'turning pending attachment into a standard attachment' it_behaves_like "adding a journal to the attachment in the name of the attachment's author" end + + context 'with an incompatible attachment whitelist', + with_settings: { attachment_whitelist: %w[image/png] } do + let!(:container) { FactoryBot.create(:work_package) } + let!(:container_timestamp) { container.updated_at } + + it "Does not save the attachment" do + allow(pending_attachment).to receive(:save!) + allow(OpenProject.logger).to receive(:error) + + job.perform(pending_attachment.id) + + expect(pending_attachment).not_to have_received(:save!) + expect(OpenProject.logger).to have_received(:error) + + container.reload + + expect(container.attachments).to be_empty + expect { pending_attachment.reload }.to raise_error(ActiveRecord::RecordNotFound) + end + end + + context 'with the user not being allowed', + with_settings: { attachment_whitelist: %w[image/png] } do + shared_let(:user) { FactoryBot.create :user } + let!(:container) { FactoryBot.create(:work_package) } + + it "Does not save the attachment" do + allow(pending_attachment).to receive(:save!) + + job.perform(pending_attachment.id) + + expect(pending_attachment).not_to have_received(:save!) + + expect { pending_attachment.reload }.to raise_error(ActiveRecord::RecordNotFound) + end + end end From 2c6b37d1b5c426c376df89c31640187b6feaf37a Mon Sep 17 00:00:00 2001 From: Wieland Lindenthal Date: Thu, 14 Oct 2021 16:38:12 +0200 Subject: [PATCH 16/28] Bump xeokit bim viewer to 2.3.7 - Cancel all key events to not bubble up to document - Style inspector usage hint --- frontend/npm-shrinkwrap.json | 14 +++++++------- frontend/package.json | 2 +- .../app/modules/a11y/keyboard-shortcut-service.ts | 7 ------- .../ifc_models/ifc-viewer/ifc-viewer.component.ts | 9 +++++++++ .../ifc_models/ifc-viewer/ifc-viewer.service.ts | 1 + .../bim/ifc_models/pages/viewer/styles/tabs.sass | 3 +++ 6 files changed, 21 insertions(+), 15 deletions(-) diff --git a/frontend/npm-shrinkwrap.json b/frontend/npm-shrinkwrap.json index 74e3d2dc8f1..d739a58ec6f 100644 --- a/frontend/npm-shrinkwrap.json +++ b/frontend/npm-shrinkwrap.json @@ -3295,18 +3295,18 @@ } }, "@xeokit/xeokit-bim-viewer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/@xeokit/xeokit-bim-viewer/-/xeokit-bim-viewer-2.3.6.tgz", - "integrity": "sha512-mhoQkfgP6HgRDE2iQxoAfswDkJZkEpCVYgcNKoU0jOr/OtV3NyGSzOh/TPY+uMU/xIu7GEtNs/cPXbY5eVC+pA==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/@xeokit/xeokit-bim-viewer/-/xeokit-bim-viewer-2.3.7.tgz", + "integrity": "sha512-q6U/viaCYI4s52ZjhCFcpzDpogdY3ZFrXo77Fl7RA3eFZyvyCgPXO2iGgjle2FTQ24XPq1BsMPHjhZgkMJt9xw==", "requires": { - "@xeokit/xeokit-sdk": "2.0.3", + "@xeokit/xeokit-sdk": "2.0.6", "http-server": "^13.0.2" } }, "@xeokit/xeokit-sdk": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@xeokit/xeokit-sdk/-/xeokit-sdk-2.0.3.tgz", - "integrity": "sha512-GCg55HqIygmqijjoK6ptdsG8ee4QlzWLcpNF35iGeDqL9XmdrRm7kraPRQOnMS5S/wApWqzWCmhqszlq6AdD4Q==" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@xeokit/xeokit-sdk/-/xeokit-sdk-2.0.6.tgz", + "integrity": "sha512-gPaDBXvUDTibUHMQZYnA+N72LrCpVvHS8qOmk7KbEwplLz4fIv96RsalTN0HfNXz8eSEF3ZvcnD9IscexCk98w==" }, "@xtuc/ieee754": { "version": "1.2.0", diff --git a/frontend/package.json b/frontend/package.json index 94953e349f9..feec606ad03 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -71,7 +71,7 @@ "@uirouter/core": "^6.0.7", "@uirouter/rx": "^0.6.5", "@w11k/ngx-componentdestroyed": "^5.0.2", - "@xeokit/xeokit-bim-viewer": "2.3.6", + "@xeokit/xeokit-bim-viewer": "2.3.7", "autoprefixer": "^9.6.1", "browserslist": "^4.9.1", "cdk-drag-scroll": "^0.0.6", diff --git a/frontend/src/app/modules/a11y/keyboard-shortcut-service.ts b/frontend/src/app/modules/a11y/keyboard-shortcut-service.ts index 535e0c3c6a3..362ac07d6cb 100644 --- a/frontend/src/app/modules/a11y/keyboard-shortcut-service.ts +++ b/frontend/src/app/modules/a11y/keyboard-shortcut-service.ts @@ -93,13 +93,6 @@ export class KeyboardShortcutService { var key = accessKeys[keyName]; return () => { - // Guard: When the focus is on the IFC viewer, pressing the key "S" shall control the viewer as part of its - // WASD navigation. So dismiss that shortcuts and let the event pass on to the IFC viewer. - if (key === 4 && - document.activeElement?.getAttribute('data-qa-selector') === 'op-ifc-viewer--model-canvas') { - return; - } - var elem = jQuery('[accesskey=' + key + ']:first'); if (elem.is('input') || elem.attr('id') === 'global-search-input') { // timeout with delay so that the key is not diff --git a/frontend/src/app/modules/bim/ifc_models/ifc-viewer/ifc-viewer.component.ts b/frontend/src/app/modules/bim/ifc_models/ifc-viewer/ifc-viewer.component.ts index d27dfbd23cd..42653a5627f 100644 --- a/frontend/src/app/modules/bim/ifc_models/ifc-viewer/ifc-viewer.component.ts +++ b/frontend/src/app/modules/bim/ifc_models/ifc-viewer/ifc-viewer.component.ts @@ -106,6 +106,7 @@ export class IFCViewerComponent implements OnInit, OnDestroy { navCubeCanvasElement: element.find('[data-qa-selector="op-ifc-viewer--nav-cube-canvas"]')[0], busyModelBackdropElement: element.find('.xeokit-busy-modal-backdrop')[0], enableEditModels: manageIfcModelsAllowed, + keyboardEventsElement: this.modelCanvas.nativeElement, // WebGL canvas }, this.ifcData.projects, ); @@ -121,6 +122,14 @@ export class IFCViewerComponent implements OnInit, OnDestroy { this.ifcViewerService.inspectorVisible$.next(!this.inspectorVisible$.getValue()); } + // Key events for navigating the viewer shall not propagate further up in the DOM, i.e. + // pressing the S-key shall not trigger the global search which listens on `document`. + @HostListener('keydown') + @HostListener('keyup') + cancelAllKeyEvents(event:KeyboardEvent) { + event.stopPropagation(); + } + @HostListener('mousedown') enableKeyBoard() { if (this.modelCount) { diff --git a/frontend/src/app/modules/bim/ifc_models/ifc-viewer/ifc-viewer.service.ts b/frontend/src/app/modules/bim/ifc_models/ifc-viewer/ifc-viewer.service.ts index c94f03fd962..36e7017c1e1 100644 --- a/frontend/src/app/modules/bim/ifc_models/ifc-viewer/ifc-viewer.service.ts +++ b/frontend/src/app/modules/bim/ifc_models/ifc-viewer/ifc-viewer.service.ts @@ -19,6 +19,7 @@ export interface XeokitElements { navCubeCanvasElement:HTMLElement; busyModelBackdropElement:HTMLElement; enableEditModels?:boolean; + keyboardEventsElement?:HTMLElement; } /** diff --git a/frontend/src/app/modules/bim/ifc_models/pages/viewer/styles/tabs.sass b/frontend/src/app/modules/bim/ifc_models/pages/viewer/styles/tabs.sass index 48d28d7b4d8..803f2ea6449 100644 --- a/frontend/src/app/modules/bim/ifc_models/pages/viewer/styles/tabs.sass +++ b/frontend/src/app/modules/bim/ifc_models/pages/viewer/styles/tabs.sass @@ -90,6 +90,9 @@ .xeokit-no-prop-set-warning visibility: hidden + .no-object-selected-warning + font-style: italic + .xeokit-table width: 100% From 50b8d81cb81068a5d9c341deaa4b1ac39052d52d Mon Sep 17 00:00:00 2001 From: Wieland Lindenthal Date: Thu, 14 Oct 2021 17:12:42 +0200 Subject: [PATCH 17/28] [#39173] Fix link to 11.4 release notes [ci skip] --- config/locales/js-en.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/js-en.yml b/config/locales/js-en.yml index 4eba7daa8e6..49da32dfa7c 100644 --- a/config/locales/js-en.yml +++ b/config/locales/js-en.yml @@ -328,7 +328,7 @@ en:
  • Creation of backup from the web interface.
  • bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      From 320d1e77dec5a367bf66bac9e8b6fcd124c4ee1e Mon Sep 17 00:00:00 2001 From: Markus Kahl Date: Thu, 14 Oct 2021 16:47:55 +0100 Subject: [PATCH 18/28] fix direct upload for all content types --- .../attachments/prepare_upload_contract.rb | 19 +++++++ .../set_prepared_attributes_service.rb | 6 +- .../attachments/finish_direct_upload_job.rb | 7 ++- frontend/npm-shrinkwrap.json | 55 +++++++++++++++---- frontend/package.json | 2 + .../op-direct-file-upload.service.ts | 34 ++++++------ .../attachment_resource_shared_examples.rb | 28 ++++++++++ 7 files changed, 118 insertions(+), 33 deletions(-) diff --git a/app/contracts/attachments/prepare_upload_contract.rb b/app/contracts/attachments/prepare_upload_contract.rb index 91f6a717dee..fde24606c6e 100644 --- a/app/contracts/attachments/prepare_upload_contract.rb +++ b/app/contracts/attachments/prepare_upload_contract.rb @@ -37,5 +37,24 @@ module Attachments def validate_direct_uploads_active errors.add :base, :not_available unless OpenProject::Configuration.direct_uploads? end + + ## + # The browser hasn't given a specific content type. + # So we don't check the content type here during the prepare_upload step yet. + # + # We'll do it again later in the FinishDirectUploadJob where the normal create contract + # without this opt-out is used, and where a more specific content type may be + # determined. + def validate_content_type + return if pending_content_type? + + super + end + + def pending_content_type? + return false unless OpenProject::Configuration.direct_uploads? + + model.content_type == OpenProject::ContentTypeDetector::SENSIBLE_DEFAULT + end end end diff --git a/app/services/attachments/set_prepared_attributes_service.rb b/app/services/attachments/set_prepared_attributes_service.rb index f46d99334cc..9eb9c7a2fd7 100644 --- a/app/services/attachments/set_prepared_attributes_service.rb +++ b/app/services/attachments/set_prepared_attributes_service.rb @@ -50,9 +50,9 @@ module Attachments model.extend(OpenProject::ChangedBySystem) model.change_by_system do model.downloads = -1 - # Set a content type as the file is not present - # The real content type will be set by FinishDirectUploadJob - model.content_type = params[:content_type] || OpenProject::ContentTypeDetector::SENSIBLE_DEFAULT + # Set a preliminary content type as the file is not present + # The content type will be updated by the FinishDirectUploadJob if necessary. + model.content_type = params[:content_type].presence || OpenProject::ContentTypeDetector::SENSIBLE_DEFAULT end end diff --git a/app/workers/attachments/finish_direct_upload_job.rb b/app/workers/attachments/finish_direct_upload_job.rb index 7a16504b441..cd0c810fd1c 100644 --- a/app/workers/attachments/finish_direct_upload_job.rb +++ b/app/workers/attachments/finish_direct_upload_job.rb @@ -77,8 +77,7 @@ class Attachments::FinishDirectUploadJob < ApplicationJob end def validate_attachment(attachment) - contract = ::Attachments::CreateContract - .new(attachment, attachment.author) + contract = create_contract attachment unless contract.valid? errors = contract.errors.full_messages.join(", ") @@ -86,6 +85,10 @@ class Attachments::FinishDirectUploadJob < ApplicationJob end end + def create_contract(attachment) + ::Attachments::CreateContract.new(attachment, attachment.author) + end + def journalize_container(attachment) journable = attachment.container diff --git a/frontend/npm-shrinkwrap.json b/frontend/npm-shrinkwrap.json index 74e3d2dc8f1..0158ddce619 100644 --- a/frontend/npm-shrinkwrap.json +++ b/frontend/npm-shrinkwrap.json @@ -2829,6 +2829,12 @@ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.149.tgz", "integrity": "sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ==" }, + "@types/mime": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz", + "integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==", + "dev": true + }, "@types/minimatch": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", @@ -8068,6 +8074,13 @@ "secure-compare": "3.0.1", "union": "~0.5.0", "url-join": "^2.0.5" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + } } }, "http-signature": { @@ -9212,6 +9225,12 @@ "tslib": "^1.10.0" }, "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "optional": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -9694,9 +9713,9 @@ } }, "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" }, "mime-db": { "version": "1.46.0", @@ -9704,11 +9723,18 @@ "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==" }, "mime-types": { - "version": "2.1.29", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", - "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", + "version": "2.1.33", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", + "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", "requires": { - "mime-db": "1.46.0" + "mime-db": "1.50.0" + }, + "dependencies": { + "mime-db": { + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", + "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==" + } } }, "mimic-fn": { @@ -10194,6 +10220,11 @@ "isarray": "^1.0.0" } }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -10958,11 +10989,6 @@ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" - }, "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", @@ -12940,6 +12966,11 @@ "statuses": "~1.5.0" }, "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", diff --git a/frontend/package.json b/frontend/package.json index 94953e349f9..d53b383e111 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -13,6 +13,7 @@ "@angular/language-service": "11.2.3", "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@types/jasmine": "~3.6.0", + "@types/mime": "^2.0.3", "@typescript-eslint/eslint-plugin": "^4.16.1", "@typescript-eslint/parser": "^4.16.1", "codelyzer": "^6.0.0", @@ -96,6 +97,7 @@ "json5": "^2.1.0", "lodash": "^4.17.19", "mark.js": "^8.11.0", + "mime": "^2.5.2", "moment": "^2.24.0", "moment-timezone": "^0.5.26", "mousetrap": "~1.6.3", diff --git a/frontend/src/app/components/api/op-file-upload/op-direct-file-upload.service.ts b/frontend/src/app/components/api/op-file-upload/op-direct-file-upload.service.ts index 636e4c28620..627cffbe158 100644 --- a/frontend/src/app/components/api/op-file-upload/op-direct-file-upload.service.ts +++ b/frontend/src/app/components/api/op-file-upload/op-direct-file-upload.service.ts @@ -33,6 +33,8 @@ import { from, Observable, of } from "rxjs"; import { share, switchMap } from "rxjs/operators"; import { OpenProjectFileUploadService, UploadBlob, UploadFile, UploadInProgress } from './op-file-upload.service'; +import * as mime from "mime"; + interface PrepareUploadResult { url:string; form:FormData; @@ -100,13 +102,16 @@ export class OpenProjectDirectFileUploadService extends OpenProjectFileUploadSer }; } - public getDirectUploadFormFrom(url:string, file:UploadFile|UploadBlob):Promise { + public async getDirectUploadFormFrom(url:string, file:UploadFile|UploadBlob):Promise { + const fileName = file.customName || file.name; + const contentType = file.type || (fileName && mime.getType(fileName)) || ''; + const formData = new FormData(); const metadata = { description: file.description, - fileName: file.customName || file.name, + fileName: fileName, fileSize: file.size, - contentType: file.type + contentType: contentType, }; /* @@ -121,28 +126,25 @@ export class OpenProjectDirectFileUploadService extends OpenProjectFileUploadSer JSON.stringify(metadata), ); - const result = this + const result = await this .http .request( - "post", + 'post', url, { body: formData, withCredentials: true, - responseType: "json" as any - } + responseType: 'json' as any, + }, ) - .toPromise() - .then((res) => { - const form = new FormData(); + .toPromise(); - _.each(res._links.addAttachment.form_fields, (value, key) => { - form.append(key, value); - }); + const form = new FormData(); - return { url: res._links.addAttachment.href, form: form, response: res }; - }); + _.each(result._links.addAttachment.form_fields, (value, key) => { + form.append(key, value); + }); - return result; + return { url: result._links.addAttachment.href, form, response: result }; } } diff --git a/spec/requests/api/v3/attachments/attachment_resource_shared_examples.rb b/spec/requests/api/v3/attachments/attachment_resource_shared_examples.rb index 2788b911f84..20aae827e90 100644 --- a/spec/requests/api/v3/attachments/attachment_resource_shared_examples.rb +++ b/spec/requests/api/v3/attachments/attachment_resource_shared_examples.rb @@ -154,6 +154,34 @@ shared_examples 'it supports direct uploads' do end end end + + context 'with an attachment whitelist', with_settings: { attachment_whitelist: ['text/csv'] } do + context 'with an allowed content type' do + let(:metadata) { { fileName: 'cats.csv', fileSize: file.size, contentType: 'text/csv' } } + + it 'should succeed' do + expect(subject.status).to eq 201 + end + end + + context 'with a forbidden content type' do + let(:metadata) { { fileName: 'cats.txt', fileSize: file.size, contentType: 'text/plain' } } + + it 'should fail' do + expect(subject.status).to eq 422 + expect(subject.body).to include "not whitelisted" + end + end + + context 'with a non-specific content type not on the whitelist' do + let(:metadata) { { fileName: 'cats.bin', fileSize: file.size, contentType: 'application/binary' } } + + # the actual whitelist check will be performed in the FinishDirectUpload job in this case + it 'should still succeed' do + expect(subject.status).to eq 201 + end + end + end end end end From 1629b2cc85e4f2da516f89633b0696342b8f359a Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Fri, 15 Oct 2021 03:14:20 +0000 Subject: [PATCH 19/28] update locales from crowdin [ci skip] --- config/locales/crowdin/js-ar.yml | 4 ++-- config/locales/crowdin/js-bg.yml | 4 ++-- config/locales/crowdin/js-ca.yml | 4 ++-- config/locales/crowdin/js-cs.yml | 4 ++-- config/locales/crowdin/js-da.yml | 4 ++-- config/locales/crowdin/js-de.yml | 4 ++-- config/locales/crowdin/js-el.yml | 4 ++-- config/locales/crowdin/js-es.yml | 4 ++-- config/locales/crowdin/js-fi.yml | 4 ++-- config/locales/crowdin/js-fil.yml | 4 ++-- config/locales/crowdin/js-fr.yml | 4 ++-- config/locales/crowdin/js-hr.yml | 4 ++-- config/locales/crowdin/js-hu.yml | 4 ++-- config/locales/crowdin/js-id.yml | 4 ++-- config/locales/crowdin/js-it.yml | 4 ++-- config/locales/crowdin/js-ja.yml | 4 ++-- config/locales/crowdin/js-ko.yml | 4 ++-- config/locales/crowdin/js-lt.yml | 6 ++--- config/locales/crowdin/js-nl.yml | 4 ++-- config/locales/crowdin/js-no.yml | 4 ++-- config/locales/crowdin/js-pl.yml | 4 ++-- config/locales/crowdin/js-pt.yml | 8 +++---- config/locales/crowdin/js-ro.yml | 4 ++-- config/locales/crowdin/js-ru.yml | 4 ++-- config/locales/crowdin/js-sk.yml | 4 ++-- config/locales/crowdin/js-sl.yml | 4 ++-- config/locales/crowdin/js-sv.yml | 4 ++-- config/locales/crowdin/js-tr.yml | 4 ++-- config/locales/crowdin/js-uk.yml | 4 ++-- config/locales/crowdin/js-vi.yml | 4 ++-- config/locales/crowdin/js-zh-CN.yml | 4 ++-- config/locales/crowdin/js-zh-TW.yml | 4 ++-- config/locales/crowdin/lt.yml | 4 ++-- config/locales/crowdin/pt.yml | 8 +++---- modules/avatars/config/locales/crowdin/ca.yml | 12 +++++----- modules/bim/config/locales/crowdin/ca.yml | 22 +++++++++---------- modules/budgets/config/locales/crowdin/ca.yml | 2 +- 37 files changed, 91 insertions(+), 91 deletions(-) diff --git a/config/locales/crowdin/js-ar.yml b/config/locales/crowdin/js-ar.yml index 4e23bab3e1c..bb8ecf7caa0 100644 --- a/config/locales/crowdin/js-ar.yml +++ b/config/locales/crowdin/js-ar.yml @@ -289,7 +289,7 @@ ar: current_new_feature_html: > The release contains various new features and improvements:
      • New button in header navigation to create projects, users and work packages.
      • A new invite modal for users, groups and placeholder users allows to easily add or invite new users and assign them to work packages.
      • GitHub integration into OpenProject.
      • API v3 extensions for groups and more, i.e. create, read, update and delete groups and group members through the API.
      • Multi-selection for project custom fields of type list.
      • Creation of backup from the web interface.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "تفعيل" @@ -761,7 +761,7 @@ ar: no_results: title: لا يوجد مجموعات عمل لعرضها. description: إما أنه لا يوجد ما تم إنشاؤه أو أن جميع مجموعات العمل قد تمت فلترتها. - limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "تفاصيل" people: "الناس" diff --git a/config/locales/crowdin/js-bg.yml b/config/locales/crowdin/js-bg.yml index b4f5771eecc..36a1215496a 100644 --- a/config/locales/crowdin/js-bg.yml +++ b/config/locales/crowdin/js-bg.yml @@ -289,7 +289,7 @@ bg: current_new_feature_html: > The release contains various new features and improvements:
      • New button in header navigation to create projects, users and work packages.
      • A new invite modal for users, groups and placeholder users allows to easily add or invite new users and assign them to work packages.
      • GitHub integration into OpenProject.
      • API v3 extensions for groups and more, i.e. create, read, update and delete groups and group members through the API.
      • Multi-selection for project custom fields of type list.
      • Creation of backup from the web interface.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "Activate" @@ -761,7 +761,7 @@ bg: no_results: title: Няма работни пакети за показване. description: Или никакви работни пакети не са създадени, или всички са филтрирани. - limited_results: В режим ръчно сортиране могат да се показват само %{count} работни пакети. Моля, намалете резултатите чрез филтриране. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Подробности" people: "Участници" diff --git a/config/locales/crowdin/js-ca.yml b/config/locales/crowdin/js-ca.yml index b778c146005..78b61abef5a 100644 --- a/config/locales/crowdin/js-ca.yml +++ b/config/locales/crowdin/js-ca.yml @@ -289,7 +289,7 @@ ca: current_new_feature_html: > The release contains various new features and improvements:
      • New button in header navigation to create projects, users and work packages.
      • A new invite modal for users, groups and placeholder users allows to easily add or invite new users and assign them to work packages.
      • GitHub integration into OpenProject.
      • API v3 extensions for groups and more, i.e. create, read, update and delete groups and group members through the API.
      • Multi-selection for project custom fields of type list.
      • Creation of backup from the web interface.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "Activar" @@ -761,7 +761,7 @@ ca: no_results: title: Cap paquet de treball a visualitzar. description: No se n'ha creat cap o tots els paquets de treball s'han filtrat. - limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Detalls" people: "Persones" diff --git a/config/locales/crowdin/js-cs.yml b/config/locales/crowdin/js-cs.yml index 4cf9537f273..de4ec5d2bdc 100644 --- a/config/locales/crowdin/js-cs.yml +++ b/config/locales/crowdin/js-cs.yml @@ -289,7 +289,7 @@ cs: current_new_feature_html: > The release contains various new features and improvements:
      • New button in header navigation to create projects, users and work packages.
      • A new invite modal for users, groups and placeholder users allows to easily add or invite new users and assign them to work packages.
      • GitHub integration into OpenProject.
      • API v3 extensions for groups and more, i.e. create, read, update and delete groups and group members through the API.
      • Multi-selection for project custom fields of type list.
      • Creation of backup from the web interface.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "Aktivovat" @@ -761,7 +761,7 @@ cs: no_results: title: Žádné pracovní balíčky k zobrazení. description: Buď nebyly vytvořeny nebo jsou všechny pracovní balíčky odfiltrovány. - limited_results: Pouze %{count} pracovních balíčků může být zobrazeno v ručním režimu. Snížte prosím výsledky filtrováním. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Podrobnosti" people: "Lidé" diff --git a/config/locales/crowdin/js-da.yml b/config/locales/crowdin/js-da.yml index e235c36db38..6fc6bf6ce70 100644 --- a/config/locales/crowdin/js-da.yml +++ b/config/locales/crowdin/js-da.yml @@ -288,7 +288,7 @@ da: current_new_feature_html: > The release contains various new features and improvements:
      • New button in header navigation to create projects, users and work packages.
      • A new invite modal for users, groups and placeholder users allows to easily add or invite new users and assign them to work packages.
      • GitHub integration into OpenProject.
      • API v3 extensions for groups and more, i.e. create, read, update and delete groups and group members through the API.
      • Multi-selection for project custom fields of type list.
      • Creation of backup from the web interface.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "Aktivér" @@ -760,7 +760,7 @@ da: no_results: title: No work packages to display. description: Either none have been created or all work packages are filtered out. - limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Detaljer" people: "Personer" diff --git a/config/locales/crowdin/js-de.yml b/config/locales/crowdin/js-de.yml index 3f0ed1c3202..5329568505b 100644 --- a/config/locales/crowdin/js-de.yml +++ b/config/locales/crowdin/js-de.yml @@ -288,7 +288,7 @@ de: current_new_feature_html: > Das Release enthält zahlreiche neue Funktionen und Verbesserungen:
      • Neuer Button in der Header-Navigation zum Anlegen von Projekten, Benutzern und Arbeitspaketen.
      • Ein neues Modalfenster zum Einladen für Benutzer, Gruppen und Platzhalter-Benutzer ermöglicht das einfache Hinzufügen neuer Benutzer und deren Zuweisung zu Arbeitspaketen.
      • GitHub-Integration in OpenProject.
      • API v3-Erweiterungen für Gruppen und mehr, insb. Erstellen, Lesen, Aktualisieren und Löschen von Gruppen und Gruppenmitgliedern über die API.
      • Mehrfachauswahl für projektspezifische Felder vom Typ Liste.
      • Erstellung von Backups über die Web-Oberfläche.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > Dieses Release enthält eine Reihe neuer Funktionen und Verbesserungen:
      • Probieren Sie unser Revit Add-in! Damit können Sie direkt in Revit BCF-Arbeitspakete erstellen, koordinieren und abarbeiten.
      • Das Erkunden und Kopieren von einzelnen Elementen im IFC-Modell war nie einfacher. Denn IFC-Attribute haben nun ihren eigenen Platz erhalten.
      • Bei Anlegen von Schnitten im Modell haben wir im darunterliegenden Datenmodell (BCF-Viewpoint) die Seiten vertauscht, sodass nun die andere Seite versteckt wird. Damit ist OpenProject in dem Punkt mit dem neuen BCF 3.0 Standard konform, was übrigens auch bereits der gelebte Standard bei Anbietern wie Solibri ist.
      • Die Bedienung des IFC-Modell-Viewers mit dem Mobiltelefon wurde massiv überarbeitet.
      • Der Export von Arbeitspaket-Ansichten mit der Spalte "BCF-Snapshot" wurde gefixt.
      label_activate: "Aktiviere" @@ -760,7 +760,7 @@ de: no_results: title: Keine Arbeitspakete anzuzeigen. description: Es wurden entweder keine Arbeitspakete erzeugt oder alle Arbeitspakete wurden ausgefiltert. - limited_results: Nur %{count} Arbeitspakete können im manuellen Sortiermodus angezeigt werden. Bitte reduzieren Sie die Ergebnisse durch Filtern. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Details" people: "Personen" diff --git a/config/locales/crowdin/js-el.yml b/config/locales/crowdin/js-el.yml index d30356f5afa..407140aeb7c 100644 --- a/config/locales/crowdin/js-el.yml +++ b/config/locales/crowdin/js-el.yml @@ -288,7 +288,7 @@ el: current_new_feature_html: > The release contains various new features and improvements:
      • New button in header navigation to create projects, users and work packages.
      • A new invite modal for users, groups and placeholder users allows to easily add or invite new users and assign them to work packages.
      • GitHub integration into OpenProject.
      • API v3 extensions for groups and more, i.e. create, read, update and delete groups and group members through the API.
      • Multi-selection for project custom fields of type list.
      • Creation of backup from the web interface.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "Ενεργοποίηση" @@ -760,7 +760,7 @@ el: no_results: title: Δεν υπάρχουν πακέτα εργασίας για εμφάνιση. description: Είτε δεν έχει δημιουργηθεί κανένα ή όλα τα πακέτα εργασίας έχουν φιλτραριστεί. - limited_results: Μόνο %{count} πακέτα εργασίας μπορούν να εμφανιστούν στην λειτουργία χειροκίνητης ταξινόμησης. Παρακαλούν μειώστε τα αποτελέσματα με φίλτρα. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Λεπτομέρειες" people: "Άτομα" diff --git a/config/locales/crowdin/js-es.yml b/config/locales/crowdin/js-es.yml index 523cf45e955..5cf660e5c40 100644 --- a/config/locales/crowdin/js-es.yml +++ b/config/locales/crowdin/js-es.yml @@ -289,7 +289,7 @@ es: current_new_feature_html: > Esta versión contiene nuevas mejoras y características:
      • Nuevo botón en el menú de navegación del encabezado para crear proyectos, usuarios y paquetes de trabajo.
      • Un nuevo cuadro de diálogo modal para invitar a usuarios, grupos y usuarios de marcador de posición que permite añadir o invitar fácilmente a nuevos usuarios y asignarlos a paquetes de trabajo.
      • Integración de GitHub con OpenProject.
      • Extensiones de la API v3 para grupos y más (por ejemplo, para crear, leer, actualizar y eliminar grupos y miembros del grupo mediante la API).
      • Selección múltiple para campos personalizados del proyecto de tipo lista.
      • Creación de copias de seguridad desde la interfaz web.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "Activar" @@ -761,7 +761,7 @@ es: no_results: title: No hay paquetes de trabajo para mostrar. description: O bien no se han creado o se filtran todos los paquetes de trabajo. - limited_results: En el modo de ordenación manual, solo puede mostrarse un máximo de %{count} paquetes de trabajo. Filtre para reducir el número de resultados. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Detalles" people: "Participantes" diff --git a/config/locales/crowdin/js-fi.yml b/config/locales/crowdin/js-fi.yml index 41278134c71..ad8782e81c9 100644 --- a/config/locales/crowdin/js-fi.yml +++ b/config/locales/crowdin/js-fi.yml @@ -289,7 +289,7 @@ fi: current_new_feature_html: > The release contains various new features and improvements:
      • New button in header navigation to create projects, users and work packages.
      • A new invite modal for users, groups and placeholder users allows to easily add or invite new users and assign them to work packages.
      • GitHub integration into OpenProject.
      • API v3 extensions for groups and more, i.e. create, read, update and delete groups and group members through the API.
      • Multi-selection for project custom fields of type list.
      • Creation of backup from the web interface.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "Aktivoi" @@ -761,7 +761,7 @@ fi: no_results: title: Ei tehtäviä. description: Yhtään ei ole luotu tai sitten kaikki on suodatettu pois. - limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Yksityiskohdat" people: "Henkilöresurssit" diff --git a/config/locales/crowdin/js-fil.yml b/config/locales/crowdin/js-fil.yml index 33e272a841e..09e924de1e2 100644 --- a/config/locales/crowdin/js-fil.yml +++ b/config/locales/crowdin/js-fil.yml @@ -289,7 +289,7 @@ fil: current_new_feature_html: > The release contains various new features and improvements:
      • New button in header navigation to create projects, users and work packages.
      • A new invite modal for users, groups and placeholder users allows to easily add or invite new users and assign them to work packages.
      • GitHub integration into OpenProject.
      • API v3 extensions for groups and more, i.e. create, read, update and delete groups and group members through the API.
      • Multi-selection for project custom fields of type list.
      • Creation of backup from the web interface.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "Aktibo" @@ -761,7 +761,7 @@ fil: no_results: title: Walang mga work package ang i-displey. description: Alinman sa walang ang nilikha o mga work package ay naka-filter out. - limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Mga detalye" people: "Mga tao" diff --git a/config/locales/crowdin/js-fr.yml b/config/locales/crowdin/js-fr.yml index 8a77a443a40..3ef9318578e 100644 --- a/config/locales/crowdin/js-fr.yml +++ b/config/locales/crowdin/js-fr.yml @@ -289,7 +289,7 @@ fr: current_new_feature_html: > Cette version contient diverses nouvelles fonctionnalités et améliorations :
      • Nouveau bouton dans la navigation d'en-tête pour créer des projets, des utilisateurs et des paquets de travail.
      • Une nouvelle modale d'invitation pour les utilisateurs, les groupes et les utilisateurs fictifs permet d'ajouter ou d'inviter facilement de nouveaux utilisateurs et de les affecter à des lots de travaux.
      • Intégration de GitHub dans OpenProject.
      • Extensions de l'API v3 pour les groupes et plus encore pour créer, lire, mettre à jour et supprimer des groupes et des membres de groupes par le biais de l'API, entre autres.
      • Sélection multiple pour les champs personnalisés du projet de liste de type.
      • Création de sauvegardes à partir de l'interface web.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "Activer" @@ -761,7 +761,7 @@ fr: no_results: title: Aucun lot de travaux à afficher. description: Soit aucun n'a été créé, soit tous les lots de travaux sont filtrés. - limited_results: Seuls %{count} lots de travaux peuvent être affichés en mode de tri manuel. Veuillez réduire les résultats en filtrant. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Détails" people: "Participants" diff --git a/config/locales/crowdin/js-hr.yml b/config/locales/crowdin/js-hr.yml index ed15ed8215e..c93b2efe848 100644 --- a/config/locales/crowdin/js-hr.yml +++ b/config/locales/crowdin/js-hr.yml @@ -289,7 +289,7 @@ hr: current_new_feature_html: > The release contains various new features and improvements:
      • New button in header navigation to create projects, users and work packages.
      • A new invite modal for users, groups and placeholder users allows to easily add or invite new users and assign them to work packages.
      • GitHub integration into OpenProject.
      • API v3 extensions for groups and more, i.e. create, read, update and delete groups and group members through the API.
      • Multi-selection for project custom fields of type list.
      • Creation of backup from the web interface.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "Aktiviraj" @@ -761,7 +761,7 @@ hr: no_results: title: Nema radnih paketa za prikaz. description: Either none have been created or all work packages are filtered out. - limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Pojedinosti" people: "Osobe" diff --git a/config/locales/crowdin/js-hu.yml b/config/locales/crowdin/js-hu.yml index a856d963770..a43eb64f7d3 100644 --- a/config/locales/crowdin/js-hu.yml +++ b/config/locales/crowdin/js-hu.yml @@ -293,7 +293,7 @@ hu: A kiadás számos új funkciót és fejlesztést tartalmaz:
      • Új gomb a fejléc navigációjában projektek, felhasználók és munkacsomagok létrehozásához.
      • Új meghívó a modális felhasználóknak, csoportoknak és teszt felhasználóknak lehetővé teszi új felhasználók hozzáadását vagy meghívását, valamint munkacsomagok hozzárendelését.
      • GitHub integráció az OpenProject -be.
      • API v3 kiterjesztések csoportokhoz és egyebek, azaz csoportokat és csoporttagokat hozhat létre, olvashat, frissíthet és törölhet az API-n keresztül.
      • Többszörös kiválasztás a projekt egyedi típusmezői mezőihez.
      • Biztonsági mentés létrehozása a webes felületről. < /li>
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "Aktivál" @@ -767,7 +767,7 @@ hu: no_results: title: Nincs megjelenítendő munkacsomag. description: Vagy nincs még ilyen munkacsomag, vagy a szűrők miatt nem jeleníthető meg. - limited_results: Csak %{count} munkacsomag jeleníthető meg kézi rendezés módban. Kérjük, szűréssel csökkentse az eredményeket. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Részletek" people: "Személyek" diff --git a/config/locales/crowdin/js-id.yml b/config/locales/crowdin/js-id.yml index 8acbcaa6deb..8d2b3a93d6a 100644 --- a/config/locales/crowdin/js-id.yml +++ b/config/locales/crowdin/js-id.yml @@ -289,7 +289,7 @@ id: current_new_feature_html: > The release contains various new features and improvements:
      • New button in header navigation to create projects, users and work packages.
      • A new invite modal for users, groups and placeholder users allows to easily add or invite new users and assign them to work packages.
      • GitHub integration into OpenProject.
      • API v3 extensions for groups and more, i.e. create, read, update and delete groups and group members through the API.
      • Multi-selection for project custom fields of type list.
      • Creation of backup from the web interface.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "Aktifkan" @@ -761,7 +761,7 @@ id: no_results: title: No work packages to display. description: Either none have been created or all work packages are filtered out. - limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Detil" people: "Orang" diff --git a/config/locales/crowdin/js-it.yml b/config/locales/crowdin/js-it.yml index c659bb78914..f7dace2069d 100644 --- a/config/locales/crowdin/js-it.yml +++ b/config/locales/crowdin/js-it.yml @@ -289,7 +289,7 @@ it: current_new_feature_html: > Il rilascio contiene varie nuove funzionalità e miglioramenti:
      • Nuovo pulsante nella navigazione dell'intestazione per creare progetti, utenti e macro attività.
      • Un nuovo invito per utenti, gruppi e utenti segnaposto che permette di aggiungere o invitare facilmente nuovi utenti e assegnarli a macro attività.
      • Integrazione di GitHub in OpenProject.
      • Estensioni API v3 per gruppi e altro, come creare, leggere, aggiornare ed eliminare i gruppi e i membri del gruppo attraverso le API.
      • Selezione multipla di campi personalizzati di progetto di per il tipo lista.
      • Creazione di backup dall'interfaccia web.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "Attiva" @@ -761,7 +761,7 @@ it: no_results: title: Nessuna macro-attività da visualizzare. description: E' possibile che non ne sia stata creata alcuna o che tutte le macro-attività vengano filtrate. - limited_results: Solo %{count} macro-attività possono essere visualizzate nella modalità di ordinamento manuale. Riduci i risultati filtrando. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Dettagli" people: "Persone" diff --git a/config/locales/crowdin/js-ja.yml b/config/locales/crowdin/js-ja.yml index 334289d531b..bd74668c475 100644 --- a/config/locales/crowdin/js-ja.yml +++ b/config/locales/crowdin/js-ja.yml @@ -290,7 +290,7 @@ ja: current_new_feature_html: > The release contains various new features and improvements:
      • New button in header navigation to create projects, users and work packages.
      • A new invite modal for users, groups and placeholder users allows to easily add or invite new users and assign them to work packages.
      • GitHub integration into OpenProject.
      • API v3 extensions for groups and more, i.e. create, read, update and delete groups and group members through the API.
      • Multi-selection for project custom fields of type list.
      • Creation of backup from the web interface.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "有効にする" @@ -764,7 +764,7 @@ ja: no_results: title: 表示できるワークパッケージがありません。 description: ワークパッケージが作成されていないかすべてのワークパッケージが除外されています。 - limited_results: 手動並び替えモードで表示できるのは %{count} のワークパッケージだけです。 フィルタリングして結果を減らしてください。 + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "詳細" people: "人" diff --git a/config/locales/crowdin/js-ko.yml b/config/locales/crowdin/js-ko.yml index 4c43f0dc97a..78c29d11ae1 100644 --- a/config/locales/crowdin/js-ko.yml +++ b/config/locales/crowdin/js-ko.yml @@ -289,7 +289,7 @@ ko: current_new_feature_html: > 이 릴리스에는 다양한 새로운 기능과 개선 사항이 포함되어 있습니다:
      • 프로젝트, 사용자 및 작업 패키지를 생성하기 위한 헤더 탐색의 새로운 버튼.
      • 사용자, 그룹 및 자리 표시자 사용자에 대한 새로운 초대 모달을 사용하면 새로운 사용자를 쉽게 추가하거나 초대하고 작업 패키지에 할당할 수 있습니다.
      • OpenProject에 GitHub 통합.
      • 그룹용 API v3 확장 기능 등. 예: API를 통해 그룹 및 그룹 구성원 생성, 읽기, 업데이트 및 삭제.
      • 유형 목록의 프로젝트 사용자 지정 필드에 대한 다중 선택.
      • 웹 인터페이스에서 백업 생성.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "활성화" @@ -761,7 +761,7 @@ ko: no_results: title: 표시할 작업 패키지가 없습니다. description: 만든 작업 패키지가 없거나 모든 작업 패키지가 필터링에서 제외되었습니다. - limited_results: 수동 정렬 모드에서는 %{count}개 작업 패키지만 표시할 수 있습니다. 필터링으로 결과를 줄이십시오. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "세부 정보" people: "사용자" diff --git a/config/locales/crowdin/js-lt.yml b/config/locales/crowdin/js-lt.yml index 7e18b14bdf2..5e79a573165 100644 --- a/config/locales/crowdin/js-lt.yml +++ b/config/locales/crowdin/js-lt.yml @@ -45,7 +45,7 @@ lt: options: Nustatymai include_attachments: Įtraukti priedus download_backup: Atsiųsti atsarginę kopiją - request_backup: Prašyti atsarginės kppijos + request_backup: Prašyti atsarginės kopijos close_popup_title: "Užverti iškylantį langą" close_filter_title: "Užverti filtrą" close_form_title: "Užverti formą" @@ -289,7 +289,7 @@ lt: current_new_feature_html: > Šioje laidoje yra įvairios naujos galimybės ir patobulinimai:
      • Naujas mygtukas navigacijos antraštėje skirtas kurti naujus projektus, naudotojus ir darbų paketus.
      • Naujas modalinis langas naudotojams, grupėms ir statytiniams naudotojams kurti leidžia lengvai pridėti naudotojus ir priskirti juos darbų paketams.
      • GitHub integracija į OpenProject.
      • API v3 praplėtimai grupėms ir ne tik, t.y. realizuota galimybė kurti, skaityti, atnaujinti ir pašalinti grupes ir grupių narius naudojant API.
      • Galimybė pasirinkti daugiau nei vieną audotoją projekto sąrašo tipo naudotojo laukuose.
      • Atsarginės kopijos kūrimas iš web sąsajos.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > Šioje laidoje rasite įvairias naujas funkcijas ir patobulinimus:
      • Pasidomėkite mūsų priedu Revit, kuris leidžia dirbti su BCF darbo paketais tiesiai Revit'e.
      • IFC savybės gavo savo atskirą skydelį. GUID kopijavimas niekada nebuvo lengvesnis.
      • Atgalinės plokštumos karpymo krypties BCF vaizdas ir suderinamumas su būsima BCF 3.0 (Dabar tokia patik kryptis, kaip ir Solibri).
      • Pataisyta IFC modelių peržiūra mobiliuose.
      • Pataisytas darbo paketų vaizdo su BCF nuotraukų stulpeliu eksportas.
      label_activate: "Aktyvuoti" @@ -761,7 +761,7 @@ lt: no_results: title: Nėra rodytinų darbų paketų. description: Arba nebuvo niekas sukurta, arba visi darbų paketai buvo išfiltruoti. - limited_results: Rankinio rikiavimo režime gali būti rodomi tik %{count} darbo paketai. Prašome sumažinti rezultatų skaičių filtruojant. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Detali informacija" people: "Žmonės" diff --git a/config/locales/crowdin/js-nl.yml b/config/locales/crowdin/js-nl.yml index 12458af67f6..e27262eae3c 100644 --- a/config/locales/crowdin/js-nl.yml +++ b/config/locales/crowdin/js-nl.yml @@ -289,7 +289,7 @@ nl: current_new_feature_html: > De release bevat verschillende nieuwe functies en verbeteringen:
      • Nieuwe knop in de koptekstnavigatie om projecten, gebruikers en werkpakketten te creëren.
      • Een nieuwe uitnodigingsmodus voor gebruikers, groepen en placeholder gebruikers laat toe eenvoudig nieuwe gebruikers toe te voegen of uit te nodigen en toe te wijzen aan werkpakketten.
      • GitHub integratie in OpenProject.
      • API v3 extensies voor groepen en meer, i. e. maak, lees, update en verwijder groepen en groepsleden via de API.
      • Multi-selectie voor project aangepaste velden van het type lijst.
      • Maken van back-up vanuit de webinterface.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > De release bevat verschillende nieuwe functies en verbeteringen:
      • Neem een kijkje op onze Revit Add-in waarmee u direct in Revit aan BCF werkpakketten kunt werken.
      • IFC-eigenschappen kregen een eigen venster. GUIDs kopiëren is nooit zo eenvoudig geweest.
      • Omgekeerd knipvlak richting in BCF gezichtspunt en compatibel worden met toekomstige BCF 3.0 (Nu dezelfde richting als Solibri).
      • Probleem opgelost met mobiel bekijken IFC-modellen.
      • Vaste export van werkpakket weergaven met BCF momentopname kolom.
      label_activate: "Activeren" @@ -761,7 +761,7 @@ nl: no_results: title: Geen werkpakketten om te tonen. description: Ofwel zijn er geen gecreëerd ofwel zijn alle werkpakketten uitgefilterd. - limited_results: Kan alleen %{count} werkpakketten weergeven in handmatige sorteermodus. Verminder a.u.b. de resultaten door te filteren. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Details" people: "Mensen" diff --git a/config/locales/crowdin/js-no.yml b/config/locales/crowdin/js-no.yml index 59dc260584c..bd9fea11d7f 100644 --- a/config/locales/crowdin/js-no.yml +++ b/config/locales/crowdin/js-no.yml @@ -289,7 +289,7 @@ current_new_feature_html: > The release contains various new features and improvements:
      • New button in header navigation to create projects, users and work packages.
      • A new invite modal for users, groups and placeholder users allows to easily add or invite new users and assign them to work packages.
      • GitHub integration into OpenProject.
      • API v3 extensions for groups and more, i.e. create, read, update and delete groups and group members through the API.
      • Multi-selection for project custom fields of type list.
      • Creation of backup from the web interface.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "Aktiver" @@ -761,7 +761,7 @@ no_results: title: Ingen arbeidspakke å vise. description: Enten kan den ikke opprettes eller så er alle arbeidspakker filtrert ut. - limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Detaljer" people: "Personer" diff --git a/config/locales/crowdin/js-pl.yml b/config/locales/crowdin/js-pl.yml index 36771793506..2c478330340 100644 --- a/config/locales/crowdin/js-pl.yml +++ b/config/locales/crowdin/js-pl.yml @@ -289,7 +289,7 @@ pl: current_new_feature_html: > Wersja zawiera różne nowe funkcje i ulepszenia:
      • Nowy przycisk w nawigacji nagłówka, pozwalający tworzyć projekty, użytkowników i pakiety robocze.
      • Nowe okno modalne zaproszenia dla użytkowników, grup i użytkowników zastępczych umożliwia łatwe dodawanie lub zapraszanie nowych użytkowników i przypisywanie ich do pakietów roboczych.
      • Integracja GitHub z OpenProject.
      • Rozszerzenia API v3 dla grup i więcej, np. tworzenie, odczyt, aktualizowanie i usuwanie grup i członków grup za pomocą interfejsu API.
      • Wielokrotny wybór niestandardowych pól projektu z listy typów.
      • Tworzenie kopii zapasowej z interfejsu przeglądarkowego.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "Aktywuj" @@ -761,7 +761,7 @@ pl: no_results: title: Brak pakietów prac do wyświetlenia. description: Pakiety prac nie zostały utworzone albo wszystkie są odfiltrowane. - limited_results: W trybie sortowania ręcznego można pokazać tylko ograniczoną liczbę pakietów roboczych (%{count}). Zmniejsz liczbę wyników filtrowania. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Szczegóły" people: "Ludzie" diff --git a/config/locales/crowdin/js-pt.yml b/config/locales/crowdin/js-pt.yml index 8686bda23e7..ee94236fba1 100644 --- a/config/locales/crowdin/js-pt.yml +++ b/config/locales/crowdin/js-pt.yml @@ -184,8 +184,8 @@ pt: new_group: 'Novo grupo' reset_to_defaults: 'Redefinir para os padrões' enterprise: - text_reprieve_days_left: "%{days} days until end of grace period" - text_expired: "expired" + text_reprieve_days_left: "%{days} dias até o final do período de carência" + text_expired: "expirado" trial: confirmation: "Confirmação de endereço de e-mail" confirmation_info: > @@ -288,7 +288,7 @@ pt: current_new_feature_html: > A versão contém vários novos recursos e melhorias:
      • Novo botão na navegação do cabeçalho para criar pacotes de projetos, de usuários e de trabalho.
      • Um novo convite restrito para usuários, usuários de espaço reservado e grupos facilita a adição e convite de novos usuários e a atribuição de pacotes de trabalho para eles.
      • A integração do GitHub no OpenProject.
      • Extensões v3 de API para grupos e mais, ou seja, criação, leitura, atualização e exclusão de grupos e membros de grupo através de API.
      • Multi-seleção para campos de personalização de projetos da lista de tipos.
      • Criação de backup para a interface da web.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "Ativar" @@ -760,7 +760,7 @@ pt: no_results: title: Não há pacotes de trabalho para exibir. description: Nenhum pacote criado ou todos os pacotes de trabalho foram filtrados. - limited_results: Apenas %{count} pacotes de trabalho podem ser exibidos no modo manual de classificação. Por favor, reduza os resultados através de filtragem. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Detalhes" people: "Pessoas" diff --git a/config/locales/crowdin/js-ro.yml b/config/locales/crowdin/js-ro.yml index 56a38e65c30..cea6b71dedc 100644 --- a/config/locales/crowdin/js-ro.yml +++ b/config/locales/crowdin/js-ro.yml @@ -288,7 +288,7 @@ ro: current_new_feature_html: > The release contains various new features and improvements:
      • New button in header navigation to create projects, users and work packages.
      • A new invite modal for users, groups and placeholder users allows to easily add or invite new users and assign them to work packages.
      • GitHub integration into OpenProject.
      • API v3 extensions for groups and more, i.e. create, read, update and delete groups and group members through the API.
      • Multi-selection for project custom fields of type list.
      • Creation of backup from the web interface.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "Activare" @@ -760,7 +760,7 @@ ro: no_results: title: Nu sunt pachete de lucru de afișat. description: Nu a fost creat niciun pachet de lucru, sau toate sunt eliminate prin filtru. - limited_results: Numai pachetele de lucru %{count} pot fi afișate în modul de sortare manuală. Vă rugăm să reduceți rezultatele prin filtrare. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Detalii" people: "Persoane" diff --git a/config/locales/crowdin/js-ru.yml b/config/locales/crowdin/js-ru.yml index 240e255c8e4..b8cf3a50366 100644 --- a/config/locales/crowdin/js-ru.yml +++ b/config/locales/crowdin/js-ru.yml @@ -288,7 +288,7 @@ ru: current_new_feature_html: > Релиз содержит различные новые функции и улучшения:
      • Новая кнопка навигации в заголовке для создания проектов, пользователей и пакетов работ.
      • Новый способ приглашения пользователей, групп и заполнителей позволяет легко добавлять или приглашать новых пользователей и прикреплять их к рабочим пакетам.
      • Интеграция GitHub в OpenProject.
      • Расширения API v3 для групп и более, в т.ч. создание, чтение, обновление и удаление групп и членов групп через API.
      • Множественный выбор пользовательских для настраиваемых полей типового списка.
      • Создание резервной копии из веб-интерфейса.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > Релиз содержит различные новые функции и улучшения:
      • Взгляните на наш Revit Add-in , который позволяет работать на рабочих пакетах BCF прямо в Revit.
      • Свойства IFC получили выделенную панель. Копирование GUIDs никогда не было проще.
      • Направление обратной плоскости отсечения в точке зрения BCF и соответствует будущему BCF 3.0 (теперь такое же направление, как и Solibri).
      • Исправлен просмотр моделей IFC на мобильном телефоне.
      • Фиксированный экспорт просмотра пакета работ с помощью снимка BCF.
      label_activate: "Активировать" @@ -760,7 +760,7 @@ ru: no_results: title: Нет пакетов работ для показа. description: Ничего не найдено. - limited_results: В ручной сортировке можно отобразить только %{count} рабочих пакетов. Пожалуйста, уменьшите результаты фильтрацией. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Детали" people: "Люди" diff --git a/config/locales/crowdin/js-sk.yml b/config/locales/crowdin/js-sk.yml index 987e7d15108..66656aea5db 100644 --- a/config/locales/crowdin/js-sk.yml +++ b/config/locales/crowdin/js-sk.yml @@ -289,7 +289,7 @@ sk: current_new_feature_html: > The release contains various new features and improvements:
      • New button in header navigation to create projects, users and work packages.
      • A new invite modal for users, groups and placeholder users allows to easily add or invite new users and assign them to work packages.
      • GitHub integration into OpenProject.
      • API v3 extensions for groups and more, i.e. create, read, update and delete groups and group members through the API.
      • Multi-selection for project custom fields of type list.
      • Creation of backup from the web interface.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "Aktivovať" @@ -761,7 +761,7 @@ sk: no_results: title: Žiadne pracovné balíčky na zobrazenie. description: Nevytvorili sa žiadne alebo všetky pracovné balíky sú odfiltrované. - limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Podrobnosti" people: "Ľudia" diff --git a/config/locales/crowdin/js-sl.yml b/config/locales/crowdin/js-sl.yml index 2f26280dbc2..1aed583443d 100644 --- a/config/locales/crowdin/js-sl.yml +++ b/config/locales/crowdin/js-sl.yml @@ -288,7 +288,7 @@ sl: current_new_feature_html: > The release contains various new features and improvements:
      • New button in header navigation to create projects, users and work packages.
      • A new invite modal for users, groups and placeholder users allows to easily add or invite new users and assign them to work packages.
      • GitHub integration into OpenProject.
      • API v3 extensions for groups and more, i.e. create, read, update and delete groups and group members through the API.
      • Multi-selection for project custom fields of type list.
      • Creation of backup from the web interface.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "Aktiviraj" @@ -760,7 +760,7 @@ sl: no_results: title: Nobenega delovnega paketa za prikaz. description: Ali noben ni bil ustvarjen ali pa so bili vsi delovni paketi filtrirani stran. - limited_results: Samo %{count} delovnih paketov je lahko prikazanih v načinu ročnega sortiranja. Prosimo zmanjšajte rezultate s filtri. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Podrobnosti" people: "Ljudje" diff --git a/config/locales/crowdin/js-sv.yml b/config/locales/crowdin/js-sv.yml index eaa1b5643ec..19562c58bfd 100644 --- a/config/locales/crowdin/js-sv.yml +++ b/config/locales/crowdin/js-sv.yml @@ -288,7 +288,7 @@ sv: current_new_feature_html: > The release contains various new features and improvements:
      • New button in header navigation to create projects, users and work packages.
      • A new invite modal for users, groups and placeholder users allows to easily add or invite new users and assign them to work packages.
      • GitHub integration into OpenProject.
      • API v3 extensions for groups and more, i.e. create, read, update and delete groups and group members through the API.
      • Multi-selection for project custom fields of type list.
      • Creation of backup from the web interface.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "Aktivera" @@ -760,7 +760,7 @@ sv: no_results: title: Inga arbetspaket att visa. description: Antingen finns det inga arbetspaket eller så har alla filtrerats bort. - limited_results: Endast %{count} arbetspaket kan visas i manuellt sorteringsläge. Minska resultaten genom filtrering. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Detaljer" people: "Personer" diff --git a/config/locales/crowdin/js-tr.yml b/config/locales/crowdin/js-tr.yml index a933a1df48c..915bd3072df 100644 --- a/config/locales/crowdin/js-tr.yml +++ b/config/locales/crowdin/js-tr.yml @@ -289,7 +289,7 @@ tr: current_new_feature_html: > The release contains various new features and improvements:
      • New button in header navigation to create projects, users and work packages.
      • A new invite modal for users, groups and placeholder users allows to easily add or invite new users and assign them to work packages.
      • GitHub integration into OpenProject.
      • API v3 extensions for groups and more, i.e. create, read, update and delete groups and group members through the API.
      • Multi-selection for project custom fields of type list.
      • Creation of backup from the web interface.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "Etkinleştir" @@ -761,7 +761,7 @@ tr: no_results: title: Görüntülecek bir iş paketi bulunmuyor. description: Ya hiç iş paketi oluşturulmamış, ya da tüm iş paketeri filtrelenmiş. - limited_results: Manuel sıralama modunda sadece %{count} iş paketi gösterilebilir. Lütfen sonuçları filtreleyerek azaltın. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Detaylar" people: "Kişiler" diff --git a/config/locales/crowdin/js-uk.yml b/config/locales/crowdin/js-uk.yml index 1733cd9a096..8dee6a1f1a5 100644 --- a/config/locales/crowdin/js-uk.yml +++ b/config/locales/crowdin/js-uk.yml @@ -289,7 +289,7 @@ uk: current_new_feature_html: > The release contains various new features and improvements:
      • New button in header navigation to create projects, users and work packages.
      • A new invite modal for users, groups and placeholder users allows to easily add or invite new users and assign them to work packages.
      • GitHub integration into OpenProject.
      • API v3 extensions for groups and more, i.e. create, read, update and delete groups and group members through the API.
      • Multi-selection for project custom fields of type list.
      • Creation of backup from the web interface.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "Активувати" @@ -761,7 +761,7 @@ uk: no_results: title: Немає пакетів робіт для показу. description: Або нічого не було створено, або всі пакети робіт відфільтровані. - limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Детальніше" people: "Люди" diff --git a/config/locales/crowdin/js-vi.yml b/config/locales/crowdin/js-vi.yml index deac6080ba5..75e106608e2 100644 --- a/config/locales/crowdin/js-vi.yml +++ b/config/locales/crowdin/js-vi.yml @@ -288,7 +288,7 @@ vi: current_new_feature_html: > The release contains various new features and improvements:
      • New button in header navigation to create projects, users and work packages.
      • A new invite modal for users, groups and placeholder users allows to easily add or invite new users and assign them to work packages.
      • GitHub integration into OpenProject.
      • API v3 extensions for groups and more, i.e. create, read, update and delete groups and group members through the API.
      • Multi-selection for project custom fields of type list.
      • Creation of backup from the web interface.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "Activate" @@ -760,7 +760,7 @@ vi: no_results: title: Không có gói công việc để hiển thị. description: Không có gì được tạo ra hoặc tất cả các gói công việc đã được lọc. - limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "Chi tiết" people: "Người" diff --git a/config/locales/crowdin/js-zh-CN.yml b/config/locales/crowdin/js-zh-CN.yml index d817d3785aa..fe532d8761a 100644 --- a/config/locales/crowdin/js-zh-CN.yml +++ b/config/locales/crowdin/js-zh-CN.yml @@ -289,7 +289,7 @@ zh-CN: current_new_feature_html: > 该版本包含各种新功能和改进:
      • 标题导航中提供了用于创建项目、用户和工作包的新按钮。
      • 新的用户、群组和占位符用户邀请模式,可轻松添加或邀请新用户并将其分配至工作包。
      • GitHub 集成到 OpenProject 中。
      • 适用于群组等内容的 API v3 扩展,即通过 API 创建、读取、更新和删除群组和群组成员。
      • 项目自定义字段类型列表支持多选。
      • 从网页界面创建备份。
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "激活" @@ -761,7 +761,7 @@ zh-CN: no_results: title: 没有要显示的工作包。 description: 没有已创建的工作包或所有工作包都被筛选排除。 - limited_results: 手动排序模式下只能显示 %{count} 个工作包。请通过筛选减少结果。 + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "详细信息" people: "人员" diff --git a/config/locales/crowdin/js-zh-TW.yml b/config/locales/crowdin/js-zh-TW.yml index d94dbff7935..f435385fcf1 100644 --- a/config/locales/crowdin/js-zh-TW.yml +++ b/config/locales/crowdin/js-zh-TW.yml @@ -288,7 +288,7 @@ zh-TW: current_new_feature_html: > The release contains various new features and improvements:
      • New button in header navigation to create projects, users and work packages.
      • A new invite modal for users, groups and placeholder users allows to easily add or invite new users and assign them to work packages.
      • GitHub integration into OpenProject.
      • API v3 extensions for groups and more, i.e. create, read, update and delete groups and group members through the API.
      • Multi-selection for project custom fields of type list.
      • Creation of backup from the web interface.
      bim: - learn_about_link: https://www.openproject.org/openproject-11-4-release + learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > The release contains various new features and improvements:
      • Take a look at our Revit Add-in which lets you work on BCF work packages directly in Revit.
      • IFC properties got a dedicated pane. Copying GUIDs has never been easier.
      • Reverse clipping plane direction in BCF viewpoint and become compliant with future BCF 3.0 (Now same direction as Solibri).
      • Fixed viewing IFC models on mobile.
      • Fixed export of work package views with BCF snapshot column.
      label_activate: "啟用" @@ -760,7 +760,7 @@ zh-TW: no_results: title: 無工作項目可顯示 description: 無工作項目或是被篩選器把工作項目隱藏了 - limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. property_groups: details: "詳細資料" people: "人員" diff --git a/config/locales/crowdin/lt.yml b/config/locales/crowdin/lt.yml index bca87032bcc..1e4b71997f5 100644 --- a/config/locales/crowdin/lt.yml +++ b/config/locales/crowdin/lt.yml @@ -1933,8 +1933,8 @@ lt: body: added_by: without_message: "%{user} pridėjo jus kaip narį į projektą '%{project}'." - with_message: "%{user} pridėjo jus kaip narį į projektą '%{project}' su prierašu:" - roles: "Jūs turite tokias roles" + with_message: "%{user} pridėjo jus kaip narį į projektą „%{project}“ su prierašu:" + roles: "Jūs turite tokias roles:" mail_member_updated_project: subject: "%{project} - Jūsų rolės buvo atnaujintos" body: diff --git a/config/locales/crowdin/pt.yml b/config/locales/crowdin/pt.yml index fcaecd504da..c3e1c397b95 100644 --- a/config/locales/crowdin/pt.yml +++ b/config/locales/crowdin/pt.yml @@ -169,8 +169,8 @@ pt: enabled_in_project: 'Habilitado no projeto' contained_in_type: 'Contido no tipo' confirm_destroy_option: "Removendo uma opção removerá todas as suas ocorrências (ex. em pacotes de trabalho). Tem certeza que você quer removê-la?" - reorder_alphabetical: "Reorder values alphabetically" - reorder_confirmation: "Warning: The current order of available values will be lost. Continue?" + reorder_alphabetical: "Reordenar valores alfabeticamente" + reorder_confirmation: "Aviso: A ordenação atual dos valores disponíveis será perdida. Continuar?" tab: no_results_title_text: Atualmente, não há campos personalizados. no_results_content_text: Criar um novo campo personalizado @@ -1420,7 +1420,7 @@ pt: label_deleted: "excluído" label_deleted_custom_field: "(campo personalizado excluído)" label_deleted_custom_option: "(opção excluída)" - label_missing_or_hidden_custom_option: "(missing value or lacking permissions to access)" + label_missing_or_hidden_custom_option: "(algum valor faltando ou falta permissões para acessar)" label_descending: "Decrescente" label_details: "Detalhes" label_development_roadmap: "Planejamento do desenvolvimento" @@ -2359,7 +2359,7 @@ pt: notifications: retention_text: > Defina o número de dias em que os eventos de notificação para usuários (a fonte para notificações no aplicativo) serão mantidos no sistema. Todos os eventos anteriores a esse horário serão excluídos. - delay_minutes_explanation: "Email sending can be delayed to allow users with configured in app notification to confirm the notification within the application before a mail is sent out. Users who read a notification within the application will not receive an email for the already read notification." + delay_minutes_explanation: "O envio de e-mail pode ser atrasado para permitir que os usuários com a notificação configurada no aplicativo confirmem a notificação dentro da aplicação antes que o e-mail seja enviado. Usuários que lerem uma notificação no aplicativo não receberão um e-mail dessa mesma notificação" display: first_date_of_week_and_year_set: > Se as opções "%{day_of_week_setting_name}" ou "%{first_week_setting_name}" forem definidas, a outra também deve ser definida, para evitar inconsistências no front-end. diff --git a/modules/avatars/config/locales/crowdin/ca.yml b/modules/avatars/config/locales/crowdin/ca.yml index c26737f2ba5..303b5964f47 100644 --- a/modules/avatars/config/locales/crowdin/ca.yml +++ b/modules/avatars/config/locales/crowdin/ca.yml @@ -23,18 +23,18 @@ ca: text_upload_instructions: | Puja el teu avatar personalitzat de 128 per 128 pixels. Les imatges més grans es re-dimensionaran i retallaran per encaixar. Una visualització prèvia de l'avatar es mostrarà abans de carregar-la, un cop seleccioni la imatge. - text_change_gravatar_html: 'Per a canviar o afegir el Gravatar per la seva direcció de correu electrònic, vagi a %{gravatar_url}.' + text_change_gravatar_html: 'Per a canviar o afegir el Gravatar pel correu electrònic, accedeix a %{gravatar_url}.' text_your_local_avatar: | - OpenProject li deixa pujar el seu avatar personalitzat. + OpenProject permet pujar el teu avatar personalitzat. text_local_avatar_over_gravatar: | - Si s'estableix un, aquest avatar personalitzat s'utilitzarà amb preferència sobre el gravatar de amunt. + Si s'estableix un, aquest avatar personalitzat s'utilitzarà amb preferència sobre el gravatar de sobre. text_your_current_gravatar: | - OpenProject utilitza el seu gravatar si en registra un, o una imatge o icona per defecte si existeix. + OpenProject utilitza el teu gravatar si n'has registrat un, o una imatge o icona per defecte si aquest existeix. L'actual gravatar es: settings: - enable_gravatars: 'Activa Gravatars' + enable_gravatars: 'Activa Gravatars d''usuari' gravatar_default: "Imatge Gravatar predeterminada" - enable_local_avatars: 'Activa avatars personalitzats' + enable_local_avatars: 'Activa avatars d''usuari personalitzats' diff --git a/modules/bim/config/locales/crowdin/ca.yml b/modules/bim/config/locales/crowdin/ca.yml index 328c59db8f9..44fa192287b 100644 --- a/modules/bim/config/locales/crowdin/ca.yml +++ b/modules/bim/config/locales/crowdin/ca.yml @@ -4,29 +4,29 @@ ca: label_bim: 'BIM' bcf: label_bcf: 'BCF' - label_imported_failed: 'Failed imports of BCF topics' - label_imported_successfully: 'Successfully imported BCF topics' - issues: "Issues" + label_imported_failed: 'Error a l''importar els elements BCF' + label_imported_successfully: 'Succés a l''importar els elements BCF' + issues: "Temes" recommended: 'recomanat' not_recommended: 'no recomanat' - no_viewpoints: 'No viewpoints' + no_viewpoints: 'Sense punts de vista' new_badge: "Nou" exceptions: - file_invalid: "BCF file invalid" + file_invalid: "Fitxer BCF invàlid" x_bcf_issues: zero: 'Sense problemes BCF' one: 'One BCF issue' other: '%{count} BCF issues' bcf_xml: - xml_file: 'BCF XML File' + xml_file: 'Fitxer BCF XML' import_title: 'Import' export: 'Exportar' - import_update_comment: '(Updated in BCF import)' - import_failed: 'Cannot import BCF file: %{error}' + import_update_comment: '(Actualitzat a l''importació del BCF)' + import_failed: 'No s''ha pogut importar el fitxer BCF: %{error}' import_failed_unsupported_bcf_version: 'Failed to read the BCF file: The BCF version is not supported. Please ensure the version is at least %{minimal_version} or higher.' - import_successful: 'Imported %{count} BCF issues' - import_canceled: 'BCF-XML import canceled.' - type_not_active: "The issue type is not activated for this project." + import_successful: 'Importats %{count} temes BCF' + import_canceled: 'Importació BCF-XML cancel·lada' + type_not_active: "Aquest tipus de tema no està activat per aquest projecte." import: num_issues_found: '%{x_bcf_issues} are contained in the BCF-XML file, their details are listed below.' button_prepare: 'Prepare import' diff --git a/modules/budgets/config/locales/crowdin/ca.yml b/modules/budgets/config/locales/crowdin/ca.yml index ff863073f3a..7db316af161 100644 --- a/modules/budgets/config/locales/crowdin/ca.yml +++ b/modules/budgets/config/locales/crowdin/ca.yml @@ -60,7 +60,7 @@ ca: label_budget_plural: "Budgets" label_budget_id: "Budget #%{id}" label_deliverable: "Budget" - label_example_placeholder: 'e.g., %{decimal}' + label_example_placeholder: 'ex. %{decimal}' label_view_all_budgets: "View all budgets" label_yes: "Sí" notice_budget_conflict: "WorkPackages must be of the same project." From 6d42d039d12820d2521b8d97e93b5a0cf91680d5 Mon Sep 17 00:00:00 2001 From: Eric Schubert Date: Fri, 15 Oct 2021 16:46:00 +0200 Subject: [PATCH 20/28] bump xeokit to 2.3.10 - config bug in xeokit bim viewer fixed - event propagation now works as expected --- frontend/package.json | 2 +- .../bim/ifc_models/ifc-viewer/ifc-viewer.component.ts | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index feec606ad03..565a25befba 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -71,7 +71,7 @@ "@uirouter/core": "^6.0.7", "@uirouter/rx": "^0.6.5", "@w11k/ngx-componentdestroyed": "^5.0.2", - "@xeokit/xeokit-bim-viewer": "2.3.7", + "@xeokit/xeokit-bim-viewer": "2.3.10", "autoprefixer": "^9.6.1", "browserslist": "^4.9.1", "cdk-drag-scroll": "^0.0.6", diff --git a/frontend/src/app/modules/bim/ifc_models/ifc-viewer/ifc-viewer.component.ts b/frontend/src/app/modules/bim/ifc_models/ifc-viewer/ifc-viewer.component.ts index 42653a5627f..81e84f43167 100644 --- a/frontend/src/app/modules/bim/ifc_models/ifc-viewer/ifc-viewer.component.ts +++ b/frontend/src/app/modules/bim/ifc_models/ifc-viewer/ifc-viewer.component.ts @@ -124,10 +124,11 @@ export class IFCViewerComponent implements OnInit, OnDestroy { // Key events for navigating the viewer shall not propagate further up in the DOM, i.e. // pressing the S-key shall not trigger the global search which listens on `document`. - @HostListener('keydown') - @HostListener('keyup') - cancelAllKeyEvents(event:KeyboardEvent) { - event.stopPropagation(); + @HostListener('keydown', ['$event']) + @HostListener('keyup', ['$event']) + @HostListener('keypress', ['$event']) + cancelAllKeyEvents($event:KeyboardEvent) { + $event.stopPropagation(); } @HostListener('mousedown') From aa8d412490907d94a7abfed06db4f79e208c9eaf Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Sat, 16 Oct 2021 03:12:43 +0000 Subject: [PATCH 21/28] update locales from crowdin [ci skip] --- config/locales/crowdin/js-lt.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/config/locales/crowdin/js-lt.yml b/config/locales/crowdin/js-lt.yml index 5e79a573165..d70a6de25f0 100644 --- a/config/locales/crowdin/js-lt.yml +++ b/config/locales/crowdin/js-lt.yml @@ -761,7 +761,7 @@ lt: no_results: title: Nėra rodytinų darbų paketų. description: Arba nebuvo niekas sukurta, arba visi darbų paketai buvo išfiltruoti. - limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. + limited_results: Rankinio rikiavimo režime gali būti rodomi tik %{count} darbų paketai. Prašome sumažinti rezultatų skaičių filtrais arba persijunkite į automatinį rikiavimą. property_groups: details: "Detali informacija" people: "Žmonės" @@ -928,7 +928,7 @@ lt: notice_successful_create: "Sėkmingas sukūrimas." notice_successful_delete: "Sėkmingas panaikinimas." notice_successful_update: "Sėkmingai atnaujinta." - notice_job_started: "užduoties vykdymas pradėtas." + notice_job_started: "darbas pradėtas." notice_bad_request: "Netinkama užklausa." relations: empty: Nėra jokių ryšių @@ -1003,7 +1003,7 @@ lt: lacking_permission_info: 'Jums trūksta teisių priskirti naudotojus projekte, kuriame dabar esate. Turėtumėte pasirinkti kitą projektą.' next_button: 'Kitas' no_results: 'Nerasta jokių projektų' - no_invite_rights: 'Jums neleidžiama kviesti narius į projektą' + no_invite_rights: 'Jums neleidžiama kviesti narių į projektą' type: required: 'Prašome pasirinkti kokio tipo dalyvį kviesti' user: @@ -1016,7 +1016,7 @@ lt: title: 'Statytinis naudotojas' title_no_ee: 'Statytiniai naudotojai (galimybė pasiekiama tik Enterprise Edition)' description: 'Neturi prieigos prie projekto ir jokie el. pašto laiškai nebuvo išsiųsti.' - description_no_ee: 'Neturi prieigos prie projekto ir jokie el. pašto laiškai nebuvo išsiųsti.
      Patikrinkite Enterprise Edition' + description_no_ee: 'Neturi prieigos prie projekto ir jokie el. pašto laiškai nebuvo išsiųsti.
      Pabandykite Enterprise Edition' principal: label: name_or_email: 'Vardas arba elektroninio pašto adresas' @@ -1040,7 +1040,7 @@ lt: next_button: 'Kitas' message: label: 'Kvietimo pranešimas' - description: 'Mes siųsime el. pašto laišką %{principal}, į kurį jūs galite pridėti asmeninį pranešimą. Paaiškinimas, kodėl šis pranešimas buvo atsiųstas galėtų būti naudingas gavėjui. Arba šiek tiek informacijos apie projektą galbūt galėtų padėti pradėti darbą su projektu.' + description: 'Mes siųsime el. pašto laišką %{principal}, į kurį jūs galite pridėti asmeninį pranešimą. Paaiškinimas, kodėl šis pranešimas buvo atsiųstas, galėtų būti naudingas gavėjui. Taipogi šiek tiek informacijos apie projektą galbūt galėtų padėti pradėti darbą su projektu.' next_button: 'Peržiūrėti kvietimą' summary: next_button: 'Siųsti pakvietimą' From 7c56354e3c0d1aa55761c45d585259a4fa5cfaa6 Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Mon, 18 Oct 2021 03:02:40 +0000 Subject: [PATCH 22/28] update locales from crowdin [ci skip] --- config/locales/crowdin/js-lt.yml | 2 +- modules/boards/config/locales/crowdin/js-lt.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/locales/crowdin/js-lt.yml b/config/locales/crowdin/js-lt.yml index d70a6de25f0..7edd3181eed 100644 --- a/config/locales/crowdin/js-lt.yml +++ b/config/locales/crowdin/js-lt.yml @@ -287,7 +287,7 @@ lt: standard: learn_about_link: https://www.openproject.org/openproject-11-3-release current_new_feature_html: > - Šioje laidoje yra įvairios naujos galimybės ir patobulinimai:
      • Naujas mygtukas navigacijos antraštėje skirtas kurti naujus projektus, naudotojus ir darbų paketus.
      • Naujas modalinis langas naudotojams, grupėms ir statytiniams naudotojams kurti leidžia lengvai pridėti naudotojus ir priskirti juos darbų paketams.
      • GitHub integracija į OpenProject.
      • API v3 praplėtimai grupėms ir ne tik, t.y. realizuota galimybė kurti, skaityti, atnaujinti ir pašalinti grupes ir grupių narius naudojant API.
      • Galimybė pasirinkti daugiau nei vieną audotoją projekto sąrašo tipo naudotojo laukuose.
      • Atsarginės kopijos kūrimas iš web sąsajos.
      + Šioje laidoje yra įvairios naujos galimybės ir patobulinimai:
      • Naujas mygtukas navigacijos antraštėje skirtas kurti naujus projektus, naudotojus ir darbų paketus.
      • Naujas modalinis langas naudotojams, grupėms ir statytiniams naudotojams kurti leidžia lengvai pridėti naudotojus ir priskirti juos darbų paketams.
      • GitHub integracija į OpenProject.
      • API v3 praplėtimai grupėms ir ne tik, t.y. realizuota galimybė kurti, skaityti, atnaujinti ir pašalinti grupes ir grupių narius naudojant API.
      • Galimybė pasirinkti daugiau nei vieną naudotoją projekto sąrašo tipo naudotojo laukuose.
      • Atsarginės kopijos kūrimas iš web sąsajos.
      bim: learn_about_link: https://www.openproject.org/blog/openproject-11-4-release current_new_feature_html: > diff --git a/modules/boards/config/locales/crowdin/js-lt.yml b/modules/boards/config/locales/crowdin/js-lt.yml index d78ec473f5e..c705a1facc7 100644 --- a/modules/boards/config/locales/crowdin/js-lt.yml +++ b/modules/boards/config/locales/crowdin/js-lt.yml @@ -9,7 +9,7 @@ lt: teaser_text: 'Pagerinkite Agile projektų valdymą naudodami lanksčius Lentų vaizdus. Sukurkite tiek lentų, kiek norite, bet kokiems dalykams, kuriuos norite suvaldyti.' upgrade_to_ee_text: 'Lentos yra Enterprise versijos galimybė. Prašome pereiti prie mokamo plano.' upgrade: 'Užsisakykite dabar' - personal_demo: 'Susisiekite su mumis norėdami gauti demo' + personal_demo: 'Susisiekite su mumis dėl demonstracijos' lists: delete: 'Pašalinti sąrašą' version: From 21dc93331a188b03f7bb99b9abdd4394c7345695 Mon Sep 17 00:00:00 2001 From: Henriette Darge Date: Mon, 18 Oct 2021 13:14:29 +0200 Subject: [PATCH 23/28] Allow scrolling within op-uc-container e.g for attribute help text in modals --- frontend/src/global_styles/content/user-content/_index.sass | 5 +++-- modules/documents/app/views/documents/show.html.erb | 3 +-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/src/global_styles/content/user-content/_index.sass b/frontend/src/global_styles/content/user-content/_index.sass index 6d18245bb85..ebfd40d7b6f 100644 --- a/frontend/src/global_styles/content/user-content/_index.sass +++ b/frontend/src/global_styles/content/user-content/_index.sass @@ -13,7 +13,9 @@ --op-uc-heading-base: 1.8rem --op-uc-heading-falloff: 0.85 display: block - overflow: hidden + overflow-x: hidden + overflow-y: auto + @include styled-scroll-bar font-size: var(--wiki-default-font-size) z-index: 0 padding-bottom: 1rem @@ -28,4 +30,3 @@ &_no-permalinks *:hover .op-uc-link_permalink display: none - diff --git a/modules/documents/app/views/documents/show.html.erb b/modules/documents/app/views/documents/show.html.erb index 660a3b24faf..0e06645ff81 100644 --- a/modules/documents/app/views/documents/show.html.erb +++ b/modules/documents/app/views/documents/show.html.erb @@ -48,9 +48,8 @@ See docs/COPYRIGHT.rdoc for more details. <% end %> <% end %> -
      +
      <%= format_text @document.description, attachments: @document.attachments %>
      <%= list_attachments(api_v3_document_resource(@document)) %> - From 15ddf8070d288266846d91d8b04d48ec998b7ec9 Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Tue, 19 Oct 2021 03:02:52 +0000 Subject: [PATCH 24/28] update locales from crowdin [ci skip] --- config/locales/crowdin/es.yml | 2 +- config/locales/crowdin/js-lt.yml | 2 +- config/locales/crowdin/js-ru.yml | 2 +- config/locales/crowdin/lt.yml | 2 +- modules/github_integration/config/locales/crowdin/js-lt.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/config/locales/crowdin/es.yml b/config/locales/crowdin/es.yml index 0037c52f534..a5989122d31 100644 --- a/config/locales/crowdin/es.yml +++ b/config/locales/crowdin/es.yml @@ -541,7 +541,7 @@ es: error_enterprise_only: "solo está disponible en OpenProject Enterprise Edition" error_unauthorized: "no se puede acceder." error_readonly: "se intentó escribir pero no se puede escribir." - email: "is not a valid email address." + email: "no es una dirección de correo válida." empty: "No puede estar vacío." even: "debe ser incluido." exclusion: "está reservado." diff --git a/config/locales/crowdin/js-lt.yml b/config/locales/crowdin/js-lt.yml index 7edd3181eed..0f0399866fb 100644 --- a/config/locales/crowdin/js-lt.yml +++ b/config/locales/crowdin/js-lt.yml @@ -761,7 +761,7 @@ lt: no_results: title: Nėra rodytinų darbų paketų. description: Arba nebuvo niekas sukurta, arba visi darbų paketai buvo išfiltruoti. - limited_results: Rankinio rikiavimo režime gali būti rodomi tik %{count} darbų paketai. Prašome sumažinti rezultatų skaičių filtrais arba persijunkite į automatinį rikiavimą. + limited_results: Rankinio rikiavimo režime gali būti rodomi tik %{count} darbų paketai. Prašome sumažinti rezultatų skaičių filtrais arba persijungti į automatinį rikiavimą. property_groups: details: "Detali informacija" people: "Žmonės" diff --git a/config/locales/crowdin/js-ru.yml b/config/locales/crowdin/js-ru.yml index b8cf3a50366..030ced5d2ff 100644 --- a/config/locales/crowdin/js-ru.yml +++ b/config/locales/crowdin/js-ru.yml @@ -760,7 +760,7 @@ ru: no_results: title: Нет пакетов работ для показа. description: Ничего не найдено. - limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. + limited_results: Только %{count} пакетов работ могут быть показаны в режиме ручной сортировки. Уменьшите результаты фильтрации или переключитесь на автоматическую сортировку. property_groups: details: "Детали" people: "Люди" diff --git a/config/locales/crowdin/lt.yml b/config/locales/crowdin/lt.yml index 1e4b71997f5..8d16370b409 100644 --- a/config/locales/crowdin/lt.yml +++ b/config/locales/crowdin/lt.yml @@ -579,7 +579,7 @@ lt: attachment: attributes: content_type: - not_whitelisted: "turi reikšmę '%{value}', kurios nėra leidžiamų įkelti tipų sąraše." + not_whitelisted: "turi reikšmę „%{value}“, kurios nėra leidžiamų įkelti tipų sąraše." capability: context: global: 'Globali' diff --git a/modules/github_integration/config/locales/crowdin/js-lt.yml b/modules/github_integration/config/locales/crowdin/js-lt.yml index f876c1cb4a0..1dcf5100278 100644 --- a/modules/github_integration/config/locales/crowdin/js-lt.yml +++ b/modules/github_integration/config/locales/crowdin/js-lt.yml @@ -28,7 +28,7 @@ lt: title: "Įtraukimo užklausos" copy_menu: label: Git fragmentai - description: Nukopijuoti git fragmentus į iškarpinę + description: Kopijuoti git fragmentus į iškarpinę git_actions: branch_name: Šakos pavadinimas commit_message: Commit pranešimas From 92e211b0b10c1cdd6a35b01f1628bfdcb1e947c3 Mon Sep 17 00:00:00 2001 From: Wieland Lindenthal Date: Tue, 19 Oct 2021 14:33:09 +0200 Subject: [PATCH 25/28] update npm-shrinkwrap --- frontend/npm-shrinkwrap.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/frontend/npm-shrinkwrap.json b/frontend/npm-shrinkwrap.json index d739a58ec6f..0b3ff712cf1 100644 --- a/frontend/npm-shrinkwrap.json +++ b/frontend/npm-shrinkwrap.json @@ -3295,18 +3295,18 @@ } }, "@xeokit/xeokit-bim-viewer": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/@xeokit/xeokit-bim-viewer/-/xeokit-bim-viewer-2.3.7.tgz", - "integrity": "sha512-q6U/viaCYI4s52ZjhCFcpzDpogdY3ZFrXo77Fl7RA3eFZyvyCgPXO2iGgjle2FTQ24XPq1BsMPHjhZgkMJt9xw==", + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@xeokit/xeokit-bim-viewer/-/xeokit-bim-viewer-2.3.10.tgz", + "integrity": "sha512-S1g78Tq0sE86XFbegcjw2TZ1fmK7KzFxNjJAhs9niTsoW3Dj48vtmvBDnT/NdopLazBRBAkrZRT3ynPizO7c6g==", "requires": { - "@xeokit/xeokit-sdk": "2.0.6", + "@xeokit/xeokit-sdk": "2.0.7", "http-server": "^13.0.2" } }, "@xeokit/xeokit-sdk": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@xeokit/xeokit-sdk/-/xeokit-sdk-2.0.6.tgz", - "integrity": "sha512-gPaDBXvUDTibUHMQZYnA+N72LrCpVvHS8qOmk7KbEwplLz4fIv96RsalTN0HfNXz8eSEF3ZvcnD9IscexCk98w==" + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@xeokit/xeokit-sdk/-/xeokit-sdk-2.0.7.tgz", + "integrity": "sha512-v49rDuOE1sbvqJUMZawlpFSxksb6WL+186xKbqQ4jZmSLmTqN7iVD/m0hHl38NoDzFSSkUOkXv8Eh0OlOmss3Q==" }, "@xtuc/ieee754": { "version": "1.2.0", From 0ab5b5a1640e01aca1722be982519cd944e35cfc Mon Sep 17 00:00:00 2001 From: Eric Schubert <38206611+Kharonus@users.noreply.github.com> Date: Tue, 19 Oct 2021 17:33:26 +0200 Subject: [PATCH 26/28] [#39184] Switching viewer dropdown fails to load (#9763) * [#39184] Switching viewer dropdown fails to load - https://community.openproject.org/work_packages/39184 - ifc viewer is now only initialized after view is initialized * Fix bim nav spec to check for xoekit init Co-authored-by: Wieland Lindenthal --- .../ifc-viewer/ifc-viewer.component.html | 12 ++- .../ifc-viewer/ifc-viewer.component.ts | 78 +++++++++++-------- .../bim/spec/features/bim_navigation_spec.rb | 6 +- .../support/pages/ifc_models/show_default.rb | 8 +- 4 files changed, 63 insertions(+), 41 deletions(-) diff --git a/frontend/src/app/modules/bim/ifc_models/ifc-viewer/ifc-viewer.component.html b/frontend/src/app/modules/bim/ifc_models/ifc-viewer/ifc-viewer.component.html index 7169533f3da..2fb651ca1c3 100644 --- a/frontend/src/app/modules/bim/ifc_models/ifc-viewer/ifc-viewer.component.html +++ b/frontend/src/app/modules/bim/ifc_models/ifc-viewer/ifc-viewer.component.html @@ -15,12 +15,14 @@
      -
      -
      @@ -46,11 +48,13 @@
      -
      -
      diff --git a/frontend/src/app/modules/bim/ifc_models/ifc-viewer/ifc-viewer.component.ts b/frontend/src/app/modules/bim/ifc_models/ifc-viewer/ifc-viewer.component.ts index 81e84f43167..69988a5ee76 100644 --- a/frontend/src/app/modules/bim/ifc_models/ifc-viewer/ifc-viewer.component.ts +++ b/frontend/src/app/modules/bim/ifc_models/ifc-viewer/ifc-viewer.component.ts @@ -27,6 +27,7 @@ //++ import { + AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, @@ -40,18 +41,19 @@ import { IfcModelsDataService } from 'core-app/modules/bim/ifc_models/pages/view import { I18nService } from 'core-app/modules/common/i18n/i18n.service'; import { CurrentUserService } from 'core-app/modules/current-user/current-user.service'; import { CurrentProjectService } from 'core-app/components/projects/current-project.service'; -import { BehaviorSubject } from "rxjs"; +import { BehaviorSubject, combineLatest, Subject } from 'rxjs'; +import { take } from "rxjs/operators"; @Component({ - selector: 'ifc-viewer', + selector: 'op-ifc-viewer', templateUrl: './ifc-viewer.component.html', styleUrls: ['./ifc-viewer.component.sass'], changeDetection: ChangeDetectionStrategy.OnPush, }) -export class IFCViewerComponent implements OnInit, OnDestroy { - private viewerUI:any; +export class IFCViewerComponent implements OnInit, OnDestroy, AfterViewInit { + private viewInitialized$ = new Subject(); - modelCount:number; + modelCount:number = this.ifcData.models.length; canManage = this.ifcData.allowed('manage_ifc_models'); @@ -63,55 +65,67 @@ export class IFCViewerComponent implements OnInit, OnDestroy { keyboardEnabled = false; - public inspectorVisible$:BehaviorSubject; + inspectorVisible$:BehaviorSubject = this.ifcViewerService.inspectorVisible$; @ViewChild('outerContainer') outerContainer:ElementRef; + @ViewChild('viewerContainer') viewerContainer:ElementRef; + @ViewChild('modelCanvas') modelCanvas:ElementRef; + @ViewChild('navCubeCanvas') navCubeCanvas:ElementRef; + + @ViewChild('toolbar') toolbarElement:ElementRef; + + @ViewChild('inspectorPane') inspectorElement:ElementRef; + constructor(private I18n:I18nService, private elementRef:ElementRef, public ifcData:IfcModelsDataService, private ifcViewerService:IFCViewerService, private currentUserService:CurrentUserService, private currentProjectService:CurrentProjectService) { - this.inspectorVisible$ = this.ifcViewerService.inspectorVisible$; } ngOnInit():void { - this.modelCount = this.ifcData.models.length; - if (this.modelCount === 0) { return; } - const element = jQuery(this.elementRef.nativeElement as HTMLElement); - - this.currentUserService - .hasCapabilities$( - [ - 'ifc_models/create', - 'ifc_models/update', - 'ifc_models/destroy', - ], - this.currentProjectService.id as string, - ) - .subscribe((manageIfcModelsAllowed) => { + // we have to wait until view is initialized before constructing the ifc viewer, + // as it needs all view children ready and rendered + combineLatest( + this.currentUserService + .hasCapabilities$( + [ + 'ifc_models/create', + 'ifc_models/update', + 'ifc_models/destroy', + ], + this.currentProjectService.id as string, + ), + this.viewInitialized$, + ) + .pipe(take(1)) + .subscribe(([manageIfcModelsAllowed]) => { this.ifcViewerService.newViewer( { - canvasElement: this.modelCanvas.nativeElement, // WebGL canvas - explorerElement: jQuery('.op-ifc-viewer--tree-panel')[0], // Left panel - toolbarElement: element.find('[data-qa-selector="op-ifc-viewer--toolbar-container"]')[0], // Toolbar - inspectorElement: element.find('[data-qa-selector="op-ifc-viewer--inspector-container"]')[0], // Toolbar - navCubeCanvasElement: element.find('[data-qa-selector="op-ifc-viewer--nav-cube-canvas"]')[0], - busyModelBackdropElement: element.find('.xeokit-busy-modal-backdrop')[0], + canvasElement: this.modelCanvas.nativeElement as HTMLElement, + explorerElement: document.getElementsByClassName('op-ifc-viewer--tree-panel')[0] as HTMLElement, // Left panel + toolbarElement: this.toolbarElement.nativeElement as HTMLElement, + inspectorElement: this.inspectorElement.nativeElement as HTMLElement, + navCubeCanvasElement: this.navCubeCanvas.nativeElement as HTMLElement, + busyModelBackdropElement: this.viewerContainer.nativeElement as HTMLElement, + keyboardEventsElement: this.modelCanvas.nativeElement as HTMLElement, enableEditModels: manageIfcModelsAllowed, - keyboardEventsElement: this.modelCanvas.nativeElement, // WebGL canvas }, this.ifcData.projects, ); }); + } + ngAfterViewInit():void { + this.viewInitialized$.next(); } ngOnDestroy():void { @@ -127,12 +141,12 @@ export class IFCViewerComponent implements OnInit, OnDestroy { @HostListener('keydown', ['$event']) @HostListener('keyup', ['$event']) @HostListener('keypress', ['$event']) - cancelAllKeyEvents($event:KeyboardEvent) { + cancelAllKeyEvents($event:KeyboardEvent):void { $event.stopPropagation(); } @HostListener('mousedown') - enableKeyBoard() { + enableKeyBoard():void { if (this.modelCount) { this.keyboardEnabled = true; this.ifcViewerService.setKeyboardEnabled(true); @@ -140,14 +154,14 @@ export class IFCViewerComponent implements OnInit, OnDestroy { } @HostListener('window:mousedown', ['$event.target']) - disableKeyboard(target:Element) { + disableKeyboard(target:Element):void { if (this.modelCount && !this.outerContainer.nativeElement?.contains(target)) { this.keyboardEnabled = false; this.ifcViewerService.setKeyboardEnabled(false); } } - enableFromIcon(event:MouseEvent) { + enableFromIcon(event:MouseEvent):boolean { this.enableKeyBoard(); // Focus on the canvas diff --git a/modules/bim/spec/features/bim_navigation_spec.rb b/modules/bim/spec/features/bim_navigation_spec.rb index 0f2a3eb0064..9788dc257c3 100644 --- a/modules/bim/spec/features/bim_navigation_spec.rb +++ b/modules/bim/spec/features/bim_navigation_spec.rb @@ -78,7 +78,7 @@ describe 'BIM navigation spec', model_page.page_shows_a_toolbar true model_tree.sidebar_shows_viewer_menu true expect(page).to have_selector('.wp-cards-container') - card_view.expect_work_package_listed work_package + card_view.expect_work_package_listed(work_package) end it 'can switch between the different view modes' do @@ -100,7 +100,7 @@ describe 'BIM navigation spec', details_view.go_back details_view.expect_closed - card_view.expect_work_package_listed work_package + card_view.expect_work_package_listed(work_package) # Go to viewer only model_page.switch_view 'Viewer' @@ -113,7 +113,7 @@ describe 'BIM navigation spec', model_page.model_viewer_visible false expect(page).to have_selector('.wp-cards-container') - card_view.expect_work_package_listed work_package + card_view.expect_work_package_listed(work_package) # Go to single view card_view.open_full_screen_by_details(work_package) diff --git a/modules/bim/spec/support/pages/ifc_models/show_default.rb b/modules/bim/spec/support/pages/ifc_models/show_default.rb index 9df65a6a0fd..66d2c58d7f8 100644 --- a/modules/bim/spec/support/pages/ifc_models/show_default.rb +++ b/modules/bim/spec/support/pages/ifc_models/show_default.rb @@ -54,8 +54,12 @@ module Pages end def model_viewer_visible(visible) - selector = '.op-ifc-viewer--model-canvas' - expect(page).to (visible ? have_selector(selector, wait: 10) : have_no_selector(selector, wait: 10)) + # Ensure the canvas is present + canvas_selector = '.op-ifc-viewer--model-canvas' + expect(page).to (visible ? have_selector(canvas_selector, wait: 10) : have_no_selector(canvas_selector, wait: 10)) + # Ensure Xeokit is initialized. Only then the toolbar is generated. + toolbar_selector = '.xeokit-toolbar' + expect(page).to (visible ? have_selector(toolbar_selector, wait: 10) : have_no_selector(toolbar_selector, wait: 10)) end def model_viewer_shows_a_toolbar(visible) From e37183350ecc3fd906997c118e7c733bd7064200 Mon Sep 17 00:00:00 2001 From: Markus Kahl Date: Wed, 20 Oct 2021 10:23:43 +0100 Subject: [PATCH 27/28] Add release-notes file --- docs/release-notes/11-4-1/README.md | 36 +++++++++++++++++++++++++++++ docs/release-notes/README.md | 7 ++++++ 2 files changed, 43 insertions(+) create mode 100644 docs/release-notes/11-4-1/README.md diff --git a/docs/release-notes/11-4-1/README.md b/docs/release-notes/11-4-1/README.md new file mode 100644 index 00000000000..2521a3787a0 --- /dev/null +++ b/docs/release-notes/11-4-1/README.md @@ -0,0 +1,36 @@ +--- +title: OpenProject 11.4.1 +sidebar_navigation: + title: 11.4.1 +release_version: 11.4.1 +release_date: 2021-10-20 +--- + +# OpenProject 11.4.1 + +Release date: 2021-10-20 + +We released [OpenProject 11.4.1](https://community.openproject.com/versions/1491). +The release contains several bug fixes and we recommend updating to the newest version. + + +#### Bug fixes and changes + +- Fixed: Today's Date line does not show up on My Page work package tables \[[#35748](https://community.openproject.com/wp/35748)\] +- Fixed: openproject configure tries to install postgresql 10 on upgrade, while 13 is already deployed \[[#39086](https://community.openproject.com/wp/39086)\] +- Fixed: Cannot add or remove users from group \[[#39090](https://community.openproject.com/wp/39090)\] +- Fixed: LDAP groups filter does not save synchronized group \[[#39120](https://community.openproject.com/wp/39120)\] +- Fixed: LDAP synchronized group finds only case-matching users \[[#39121](https://community.openproject.com/wp/39121)\] +- Fixed: Unnecessary deprecation warning shown on startup \[[#39125](https://community.openproject.com/wp/39125)\] +- Fixed: Cannot upload files with less common extensions (content type missing) \[[#39126](https://community.openproject.com/wp/39126)\] +- Fixed: Attachment whitelist feature not working with direct uploads enabled \[[#39130](https://community.openproject.com/wp/39130)\] +- Fixed: Revit bridge service in frontend distorts viewpoint data \[[#39135](https://community.openproject.com/wp/39135)\] +- Fixed: Help text modal text cut off \[[#39171](https://community.openproject.com/wp/39171)\] +- Fixed: Switching from "viewer" to "viewer and cards" fails to load viewer \[[#39184](https://community.openproject.com/wp/39184)\] + +#### Contributions +A big thanks to community members for reporting bugs and helping us identifying and providing fixes. + +Special thanks for reporting and finding bugs go to + +Klaas van Thoor, Evgeniy Belov diff --git a/docs/release-notes/README.md b/docs/release-notes/README.md index 699041234f3..963a3497658 100644 --- a/docs/release-notes/README.md +++ b/docs/release-notes/README.md @@ -12,6 +12,13 @@ Stay up to date and get an overview of the new features included in the releases +## 11.4.1 + +Release date: 2021-10-20 + +[Release Notes](11-4-1/) + + ## 11.4.0 Release date: 2021-10-04 From bf1465fe8a268e1ddbbfa12b838b24614f5b88ab Mon Sep 17 00:00:00 2001 From: Markus Kahl Date: Wed, 20 Oct 2021 10:23:44 +0100 Subject: [PATCH 28/28] Bumped version to 11.4.2 [ci skip] --- lib/open_project/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/open_project/version.rb b/lib/open_project/version.rb index 6ce180322be..bc2100bf3f0 100644 --- a/lib/open_project/version.rb +++ b/lib/open_project/version.rb @@ -35,7 +35,7 @@ module OpenProject module VERSION #:nodoc: MAJOR = 11 MINOR = 4 - PATCH = 1 + PATCH = 2 TINY = PATCH # Redmine compat class << self