diff --git a/app/models/journable/historic_active_record_relation.rb b/app/models/journable/historic_active_record_relation.rb index 1a1a3d986ca1..65943964f080 100644 --- a/app/models/journable/historic_active_record_relation.rb +++ b/app/models/journable/historic_active_record_relation.rb @@ -232,7 +232,7 @@ def substitute_custom_values_join_in_predicate(predicate) # but it has to the journals table. We join it to the journals table instead. journal_id = "customizable_journals.journal_id = journals.id" - predicate.gsub! /#{customized_type}.*AND #{customized_id}/m, journal_id + predicate.gsub! /#{customized_type}\s*AND #{customized_id}/m, journal_id end end diff --git a/app/views/digest_mailer/work_packages.html.erb b/app/views/digest_mailer/work_packages.html.erb index 802f6f887ac4..32965e9394de 100644 --- a/app/views/digest_mailer/work_packages.html.erb +++ b/app/views/digest_mailer/work_packages.html.erb @@ -60,7 +60,7 @@
-
<%= I18n.t(:'mail.work_packages.see_all') %>
diff --git a/app/workers/mails/reminder_job.rb b/app/workers/mails/reminder_job.rb
index 01e84db4ea28..bbc6eaba109e 100644
--- a/app/workers/mails/reminder_job.rb
+++ b/app/workers/mails/reminder_job.rb
@@ -32,7 +32,11 @@ class Mails::ReminderJob < Mails::DeliverJob
good_job_control_concurrency_with(
total_limit: 1,
- key: -> { "#{self.class.name}-#{arguments.last}" }
+ key: -> do
+ id = arguments.last.respond_to?(:id) ? arguments.last.id : arguments.last
+
+ "#{self.class.name}-#{id}"
+ end
)
private
diff --git a/config/locales/crowdin/js-ro.yml b/config/locales/crowdin/js-ro.yml
index 0a75d12a715b..4023c8b44802 100644
--- a/config/locales/crowdin/js-ro.yml
+++ b/config/locales/crowdin/js-ro.yml
@@ -37,7 +37,7 @@ ro:
clear_all: "Clear all"
loading: "Se încarcă..."
not_found: "Niciun articol găsit"
- type_to_search: "Introduceți textul de căutat"
+ type_to_search: "Tastează pentru a căuta"
autocomplete_select:
placeholder:
multi: 'Adaugă ”%{name}”'
@@ -66,15 +66,15 @@ ro:
button_back_to_list_view: "Înapoi la listă"
button_cancel: "Anulează"
button_close: "Închide"
- button_change_project: "Move to another project"
+ button_change_project: "Mută în alt proiect"
button_check_all: "Selectează tot"
- button_configure-form: "Configurați formularul"
+ button_configure-form: "Configurează formular"
button_confirm: "Confirmă"
button_continue: "Continuă"
button_copy: "Copiază"
button_copy_to_clipboard: "Copiză în clipboard"
button_copy_link_to_clipboard: "Copiază link-ul în clipboard"
- button_copy_to_other_project: "Duplicate in another project"
+ button_copy_to_other_project: "Copiază în alt proiect"
button_custom-fields: "Câmpuri personalizate"
button_delete: "Șterge"
button_delete_watcher: "Șterge observator"
@@ -141,7 +141,7 @@ ro:
revisions: "Show local modifications"
no_revisions: "No local modifications found"
preview: "Activaţi/Dezactivați previzualizarea"
- source_code: "Faceți click pentru a activa/dezactiva modul ierarhic."
+ source_code: "Fă clic pentru a activa/dezactiva modul ierarhic"
error_saving_failed: "Salvarea documentului a eșuat cu următoarea eroare: %{error}"
ckeditor_error: "A apărut o eroare în cadrul CKEditor"
mode:
@@ -171,7 +171,7 @@ ro:
macros: "Macro"
chose_macro: "Alegeți macro"
toc: "Cuprins"
- toolbar_help: "Faceți clic pentru a selecta widgetul și pentru a afișa bara de instrumente. Faceți dublu clic pentru a edita widgetul"
+ toolbar_help: "Fă clic pentru a selecta widgetul și pentru a afișa bara de instrumente. Fă dublu clic pentru a edita widgetul"
wiki_page_include:
button: "Includeți conținul altei pagini wiki"
text: "[Placeholder] Pagină wiki inclusă"
@@ -207,7 +207,7 @@ ro:
trial:
confirmation: "Confirmarea adresei de e-mail"
confirmation_info: >
- Ți-am trimis un e-mail pe %{date} către %{email}. Vă rugăm să vă verificați căsuța de e-mail și să faceți clic pe link-ul de confirmare furnizat pentru a începe perioada de probă de 14 zile.
+ Ți-am trimis un e-mail în %{date} către %{email}. Te rog să verifici căsuța de e-mail și să faci clic pe link-ul de confirmare furnizat pentru a începe perioada de probă de 14 zile.
form:
general_consent: >
Sunt de acord cu termenii serviciului și cu politica de confidențialitate.
@@ -228,7 +228,7 @@ ro:
try_another_email: "Sau încercați cu o altă adresă de e-mail."
next_steps: "Etapele următoare"
resend_link: "Retrimite"
- resend_success: "E-mailul a fost retrimis. Vă rugăm să vă verificați e-mailurile și să faceți clic pe link-ul de confirmare furnizat."
+ resend_success: "E-mailul a fost retrimis. Te rog să verifici e-mailurile și să faci clic pe link-ul de confirmare furnizat."
resend_warning: "Nu s-a putut retrimite e-mailul."
session_timeout: "Sesiunea dvs. a expirat. Vă rugăm să încercați să reîncărcați pagina sau să retrimiteți e-mailul."
status_label: "Stare:"
@@ -376,7 +376,7 @@ ro:
label_add_column_before: "Adauga o coloana inainte"
label_add_columns: "Adaugați coloane"
label_add_comment: "Adăugare comentariu"
- label_add_comment_title: "Comentați şi tastaţi @ pentru a notifica alte persoane"
+ label_add_comment_title: "Comentează și tastează @ pentru a notifica alte persoane"
label_add_row_after: "Adauga un rand dupa"
label_add_row_before: "Adauga un rand inainte"
label_add_selected_columns: "Adăugați coloanele selectate"
@@ -463,7 +463,7 @@ ro:
label_next: "Înainte"
label_no_color: "Nicio culoare"
label_no_data: "Nu există date de afișat"
- label_no_due_date: "fără dată de finalizare"
+ label_no_due_date: "fără dată finalizare"
label_no_start_date: "fără dată început"
label_no_date: "fără dată"
label_no_value: "Nici o valoare"
@@ -528,7 +528,7 @@ ro:
label_work_package_parent: "Pachet de lucru părinte"
label_work_package_plural: "Pachete de lucru"
label_watch: "Monitorizare"
- label_watch_work_package: "Urmăriți pachetul de lucru"
+ label_watch_work_package: "Urmărește pachetul de lucru"
label_watcher_added_successfully: "Observator adăugat cu succes!"
label_watcher_deleted_successfully: "Observator eliminat cu succes!"
label_work_package_details_you_are_here: "Sunteți pe fila %{tab} pentru %{type} %{subject}."
@@ -543,7 +543,7 @@ ro:
label_columns: "Coloane"
label_attachments: Atașamente
label_drop_files: "Aruncați fișierele aici pentru a atașa fișiere."
- label_drop_or_click_files: "Lăsați fișierele aici pentru a atașa fișiere."
+ label_drop_or_click_files: "Trage fișierele aici sau clic aici pentru a atașa."
label_drop_folders_hint: Nu puteți încărca dosare ca atașament. Vă rugăm să selectați fișiere individuale.
label_add_attachments: "Atașare fișiere"
label_formattable_attachment_hint: "Atașați și legați fișiere prin plasarea în acest câmp sau prin lipirea din clipboard."
@@ -601,7 +601,7 @@ ro:
calendar: "Tabloul de planificare săptămânală sau bisăptămânală afișează toate pachetele de lucru atribuite membrilor echipei dumneavoastră."
add_assignee: "Pentru a începe, adăugați persoane desemnate în planificatorul echipei."
add_existing: "Căutați pachetele de lucru existente și glisați-le în planificatorul echipei pentru a le atribui instantaneu unui membru al echipei și pentru a defini datele de început și de sfârșit."
- card: "Trageți pachetele de lucru pe orizontală pentru a le muta înapoi sau înainte în timp, trageți marginile pentru a schimba datele de început și de sfârșit și chiar trageți-le pe verticală pe un alt rând pentru a le atribui unui alt membru."
+ card: "Trage pachetele de lucru pe orizontală pentru a le muta înapoi sau înainte în timp, trage marginile pentru a schimba datele de început și de sfârșit și chiar trage-le pe verticală pe un alt rând pentru a le atribui unui alt membru."
notifications:
title: "Notificări"
no_unread: "Nu sunt notificari necitite"
@@ -680,23 +680,23 @@ ro:
work_package_created: "Pachete de lucru noi"
work_package_processed: "Toate modificările de stare"
work_package_prioritized: "Toate modificările prioritare"
- work_package_scheduled: "Toate modificările datei"
+ work_package_scheduled: "Toate modificările dății"
global:
immediately:
title: "Participant"
- description: "Notificări pentru toate activitățile din pachetele de lucru în care sunteți implicat (desemnat, responsabil sau observator)."
+ description: "Notificări pentru toate activitățile din pachetele de lucru în care ești implicat (desemnat, responsabil sau observator)."
delayed:
- title: "Neparticipantă"
+ title: "Unde nu participi"
description: "Notificări suplimentare pentru activitățile din toate proiectele."
date_alerts:
title: "Alerte dăți"
- description: "Notificări automate atunci când se apropie date importante pentru pachetele de lucru deschise în care sunteți implicat (desemnat, responsabil sau observator)."
+ description: "Notificări automate atunci când se apropie dăți importante pentru pachetele de lucru deschise în care ești implicat (desemnat, responsabil sau observator)."
teaser_text: "Cu alertele de date, veți fi notificat cu privire la următoarele date de început sau de sfârșit, astfel încât să nu ratați sau să uitați niciodată un termen limită important."
overdue: În caz de întârziere
project_specific:
title: "Setări notificare specifice proiectului"
description: "Aceste setări specifice proiectului prevalează asupra setărilor implicite de mai sus."
- add: "Adăugați o setare pentru proiect"
+ add: "Adaugă o setare pentru proiect"
already_selected: "Acest proiect este deja selectat"
remove: "Eliminați setările proiectului"
password_confirmation:
@@ -711,7 +711,7 @@ ro:
default: "-"
subject: "Introduceţi subiectul aici"
selection: "Vă rugăm să selectaţi"
- description: "Descriere: Faceți clic pentru a edita..."
+ description: "Descriere: Fă clic pentru a edita..."
relation_description: "Click pentru a adauga o descriere pentru această relaţie"
project:
required_outside_context: >
@@ -764,7 +764,7 @@ ro:
attribute_groups:
error_duplicate_group_name: "Numele %{group} este utilizat de mai multe ori. Fiecare grup trebuie să aibă un nume unic."
error_no_table_configured: "Vă rugăm să configurați un tabel pentru %{group}."
- reset_title: "Resetarea configurației formularului"
+ reset_title: "Resetare configurare formular"
confirm_reset: >
Antenție: Sunteți sigur că doriți să resetați congurația formularului? Această acțiune va reseta toate atributele înapoi la grupul implicit și va dezactiva TOATE câmpurile personalizate.
upgrade_to_ee: "Actualizare la ediția Enterprise on-premise"
@@ -772,7 +772,7 @@ ro:
more_information: "Mai multe informatii"
nevermind: "Asta e..."
edit:
- form_configuration: "Configurarea formularului"
+ form_configuration: "Configurare formular"
projects: "Proiecte"
settings: "Setări"
time_entry:
@@ -832,7 +832,7 @@ ro:
add_existing_relation: "Adăugarea unei relații existente"
update_description: "Setează sau actualizează descrierea acestei relații"
toggle_description: "Activați/Dezactivați descrierea legăturilor"
- update_relation: "Faceți click pentru a schimba tipul de legătură"
+ update_relation: "Fă click pentru a schimba tipul de legătură"
add_follower: "Adaugă urmăritor"
show_relations: "Arată relațiile"
add_predecessor: "Adăugați predecesorul"
@@ -840,10 +840,10 @@ ro:
save: "Salvează relația"
abort: "Anulează"
relations_autocomplete:
- placeholder: "Introduceți textul de căutat"
+ placeholder: "Tastează pentru a căuta"
parent_placeholder: "Alegeți un nou părinte sau apăsați Escape pentru a anula."
autocompleter:
- placeholder: "Introduceți textul de căutat"
+ placeholder: "Tastează pentru a cauta"
notFoundText: "Niciun articol găsit"
project:
placeholder: "Select project"
@@ -886,7 +886,7 @@ ro:
wiki_link: "Link la o pagină Wiki"
image: "Imagine"
sharing:
- share: "Distribuiți"
+ share: "Distribuie"
selected_count: "%{count} selected"
selection:
mixed: "Amestecat"
@@ -930,7 +930,7 @@ ro:
message_work_package_status_blocked: "Starea pachetului de lucru nu poate fi scrisă din cauza statutului închis și a versiunii închise care au fost atribuite."
placeholder_filter_by_text: "Subiect, descriere, comentarii, ..."
progress:
- title: "Work estimates and progress"
+ title: "Estimări și progrese lucrare"
baseline:
addition_label: "Added to view within the comparison time period"
removal_label: "Removed from view within the comparison time period"
@@ -953,7 +953,7 @@ ro:
hierarchy:
show: "Afișați modul ierarhic"
hide: "Ascundeți modul ierarhic"
- toggle_button: "Faceți click pentru a activa/dezactiva modul ierarhic."
+ toggle_button: "Fă clic pentru a activa/dezactiva modul ierarhic."
leaf: "Frunza pachetului de lucru la nivelul %{level}."
children_collapsed: "Nivelul ierarhic %{level}, prăbușit. Faceți clic pentru a afișa copiii filtrați"
children_expanded: "Nivelul ierarhic %{level}, extins. Faceți clic pentru a restrânge copiii filtrați"
@@ -975,9 +975,9 @@ ro:
createdAt: "Creat pe"
description: "Descriere"
date: "Dată"
- percentComplete: "% Complete"
- percentCompleteAlternative: "Progress"
- dueDate: "Data de finalizare"
+ percentComplete: "% finalizată"
+ percentCompleteAlternative: "Progres"
+ dueDate: "Dată finalizare"
duration: "Durată"
spentTime: "Timp consumat"
category: "Categorie"
@@ -1194,8 +1194,8 @@ ro:
few: "%{count} words"
other: "%{count} words"
zen_mode:
- button_activate: "Activați modul zen"
- button_deactivate: "Dezactivați modul zen"
+ button_activate: "Activează modul zen"
+ button_deactivate: "Dezactivează modul zen"
global_search:
all_projects: "In toate proiectele"
close_search: "Inchide cautarea"
diff --git a/config/locales/crowdin/ro.yml b/config/locales/crowdin/ro.yml
index a3faa6de720d..fca2c5fd3991 100644
--- a/config/locales/crowdin/ro.yml
+++ b/config/locales/crowdin/ro.yml
@@ -73,7 +73,7 @@ ro:
order: "Comandați ediția Enterprise on-premise"
paste: "Lipiți token-ul de suport pentru ediția Enterprise"
required_for_feature: "Acest add-on este disponibil numai cu un token de asistență pentru ediția Enterprise activ."
- enterprise_link: "Pentru mai multe informații, faceți click aici."
+ enterprise_link: "Pentru mai multe informații, fă clic aici."
start_trial: "Începeți o încercare gratuită"
book_now: "Rezervă acum"
get_quote: "Obțineți o ofertă"
@@ -103,11 +103,11 @@ ro:
title: "Quarantined attachments"
error_cannot_act_self: "Cannot perform actions on your own uploaded files."
attribute_help_texts:
- note_public: "Orice text și imagini pe care le adăugați în acest câmp sunt vizibile public pentru toți utilizatorii conectați!"
+ note_public: "Orice text și imagini pe care le adaugi în acest câmp sunt vizibile public pentru toți utilizatorii conectați!"
text_overview: "În această vizualizare, puteți crea texte de ajutor personalizate pentru vizualizarea atributelor. Atunci când sunt definite, aceste texte pot fi afișate făcând clic pe pictograma de ajutor de lângă atributul care îi aparține."
label_plural: "Texte de ajutor pentru atribute"
show_preview: "Previzualizare text"
- add_new: "Adăugați text de ajutor"
+ add_new: "Adaugă text de ajutor"
edit: "Editați textul de ajutor pentru %{attribute_caption}"
background_jobs:
status:
@@ -138,7 +138,7 @@ ro:
OpenProject va filtra numai pentru numele de utilizator furnizate în acest subarbore.
Exemplu: ou=users,dc=example,dc=com
filter_string: |
- Adăugați un filtru RFC4515 opțional care să se aplice rezultatelor returnate pentru utilizatorii filtrați în LDAP.
+ Adaugă un filtru RFC4515 opțional care să se aplice rezultatelor returnate pentru utilizatorii filtrați în LDAP.
Acesta poate fi utilizat pentru a restricționa setul de utilizatori care sunt găsiți de OpenProject pentru autentificare și sincronizare de grup.
filter_string_concat: |
OpenProject va filtra întotdeauna pentru atributul de autentificare furnizat de utilizator pentru a identifica înregistrarea. Dacă furnizați un filtru aici,
@@ -212,7 +212,7 @@ ro:
heading: For all projects
description: This custom field is enabled in all projects since the "For all projects" option is checked. It cannot be deactivated for individual projects.
text_add_new_custom_field: >
- Dacă doriți să adăugați noi câmpuri personalizate în cadrul unui proiect va trebui, mai întâi, să le creați.
+ Dacă vrei să adaugi noi câmpuri personalizate în cadrul unui proiect va trebui, mai întâi, să le creezi.
is_enabled_globally: "Este activat/ă la nivel global"
enabled_in_project: "Activat/ă în proiect"
contained_in_type: "Înclusă în tipul"
@@ -467,11 +467,11 @@ ro:
upsale:
title: Utilizatori de tip Placeholder
description: >
- Utilizatorii de tip Placeholder sunt o modalitate de a atribui pachete de lucru unor utilizatori care nu fac parte din proiectul dumneavoastră. Aceștia pot fi utili într-o serie de scenarii; de exemplu, dacă aveți nevoie să urmăriți sarcinile pentru o resursă care nu este încă numită sau disponibilă sau dacă nu doriți să acordați acces la OpenProject acelei persoane, dar doriți totuși să urmăriți sarcinile care îi sunt atribuite.
+ Utilizatorii de tip substituție sunt o modalitate de a atribui pachete de lucru utilizatorilor care nu fac parte din proiectul tău. Acesta poate fi utilă într-o serie de scenarii; de exemplu, dacă trebuie să urmărești sarcinile pentru o resursă care nu este încă numită sau disponibilă, sau dacă nu vrei să acorzi acestei persoane acces la OpenProject dar totuși vrei să urmărești sarcinile care le-au fost atribuite.
prioritiies:
edit:
priority_color_text: |
- Faceți click pentru a desemna sau schimba culoarea acestui nivel de prioritate.
+ Fă clic pentru a desemna sau schimba culoarea acestui nivel de prioritate.
Poate fi utilizate pentru a evidenția pachetele de lucru dintr-un tabel.
reportings:
index:
@@ -488,7 +488,7 @@ ro:
Check this option to exclude work packages with this status from totals of Work,
Remaining work, and % Complete in a hierarchy.
status_color_text: |
- Faceți click pentru a desemna sau schimba culoarea pentru acest flux de lucru.
+ Fă click pentru a desemna sau schimba culoarea pentru acest flux de lucru.
Acesta este afișat în butonul de statut și poate fi folosit pentru a evidenția pachetele de lucru din tabel.
index:
no_results_title_text: În acest moment nu există stări pentru pachetele de lucru.
@@ -508,7 +508,7 @@ ro:
no_results_content_text: Creare tip nou
edit:
settings: "Setări"
- form_configuration: "Configurarea formularului"
+ form_configuration: "Configurare formular"
more_info_text_html: >
Ediția Enterprise vă permite să personalizați configurația formularului cu aceste suplimente suplimentare:
no_member: Acest proiect nu are în prezent niciun membru care să poată fi adăugat. - add_members: Adăugați un nou membru la acest proiect pentru a selecta din nou utilizatorii. + add_members: Adaugă un nou membru la acest proiect pentru a selecta din nou utilizatorii. configuration_modal: title: 'Configurați această placă' display_settings: diff --git a/modules/budgets/config/locales/crowdin/ro.yml b/modules/budgets/config/locales/crowdin/ro.yml index 70b126a98d8e..3e14db49036a 100644 --- a/modules/budgets/config/locales/crowdin/ro.yml +++ b/modules/budgets/config/locales/crowdin/ro.yml @@ -46,7 +46,7 @@ ro: budget: "Bugete" attributes: budget: "Buget" - button_add_budget_item: "Adăugați costurile planificate" + button_add_budget_item: "Adaugă costurile planificate" button_add_budget: "Adaugă bugetul" button_add_cost_type: "Adaugați acest câmp la un pachet de lucru" button_cancel_edit_budget: "Anularea bugetului de editare" diff --git a/modules/costs/config/locales/crowdin/ro.yml b/modules/costs/config/locales/crowdin/ro.yml index 5dd3e9b46714..ee2c56466cd7 100644 --- a/modules/costs/config/locales/crowdin/ro.yml +++ b/modules/costs/config/locales/crowdin/ro.yml @@ -80,7 +80,7 @@ ro: description_date_for_new_rate: "Data pentru noul tarif" group_by_others: "nici într-un grup" label_between: "între" - label_cost_filter_add: "Adăugați un filtru de intrare a costurilor" + label_cost_filter_add: "Adaugă un filtru de intrare a costurilor" label_costlog: "Costuri unitare înregistrate" label_cost_plural: "Costuri" label_cost_type_plural: "Tipuri de costuri" @@ -99,10 +99,10 @@ ro: label_generic_user: "Utilizator generic" label_greater_or_equal: ">=" label_group_by: "Grupează după" - label_group_by_add: "Adăugați un câmp de grupare" + label_group_by_add: "Adaugă un câmp de grupare" label_hourly_rate: "Tarif orar" label_include_deleted: "Includeți șters" - label_work_package_filter_add: "Adăugați un filtru pentru pachetul de lucru" + label_work_package_filter_add: "Adaugă un filtru pentru pachetul de lucru" label_kind: "Tip" label_less_or_equal: "<=" label_log_costs: "Costurile unitare ale buștenilor" diff --git a/modules/grids/config/locales/crowdin/js-ro.yml b/modules/grids/config/locales/crowdin/js-ro.yml index e6076f81f324..baa855447a78 100644 --- a/modules/grids/config/locales/crowdin/js-ro.yml +++ b/modules/grids/config/locales/crowdin/js-ro.yml @@ -1,7 +1,7 @@ ro: js: grid: - add_widget: 'Adăugați widget' + add_widget: 'Adaugă widget' remove: 'Eliminați widget-ul' configure: 'Configurați widget-ul' upsale: diff --git a/modules/reporting/config/locales/crowdin/ro.yml b/modules/reporting/config/locales/crowdin/ro.yml index e7c623090825..3806854507bc 100644 --- a/modules/reporting/config/locales/crowdin/ro.yml +++ b/modules/reporting/config/locales/crowdin/ro.yml @@ -69,7 +69,7 @@ ro: label_filter_add: "Adăugare filtru" label_filter_plural: "Filtre" label_group_by: "Grupează după" - label_group_by_add: "Adăugați atributul Group-by" + label_group_by_add: "Adaugă atributul Grupare-după" label_inactive: "Inactiv" label_no: "Nu" label_none: "Sincronizați datele" diff --git a/modules/two_factor_authentication/config/locales/crowdin/ro.yml b/modules/two_factor_authentication/config/locales/crowdin/ro.yml index 3a3b11bd3c82..64dfc95a3038 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/ro.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/ro.yml @@ -95,7 +95,7 @@ ro: keep_safe_warning: "Fie le salvați în managerul de parole, fie imprimați această pagină și puneți-o într-un loc sigur." regenerate_warning: "Avertisment: Dacă ați creat coduri de rezervă înainte, acestea vor fi invalidate și nu vor mai funcționa." devices: - add_new: "Adăugați un nou dispozitiv 2FA" + add_new: "Adaugă un nou dispozitiv 2FA" register: "Dispozitivul de înregistrare" confirm_default: "Confirmați schimbarea dispozitivului implicit" confirm_device: "Confirmați dispozitivul" @@ -107,7 +107,7 @@ ro: registration_complete: "Înregistrarea dispozitivului 2FA este completă!" registration_failed_token_invalid: "Înregistrarea dispozitivului 2FA a eșuat, token-ul nu era valid." registration_failed_update: "Înregistrarea dispozitivului 2FA a eșuat, token-ul era valid, dar dispozitivul nu a putut fi actualizat." - confirm_send_failed: "Confirmarea dispozitivului dvs. 2FA a eșuat." + confirm_send_failed: "Confirmarea dispozitivului tău 2FA a eșuat." button_complete_registration: "Completați înregistrarea 2FA" text_confirm_to_complete_html: "Vă rugăm să completați înregistrarea dispozitivului dvs %{identifier} prin introducerea unei parole unice de la dispozitivul dvs. implicit." text_confirm_to_change_default_html: "Vă rugăm să confirmați schimbarea dispozitivului implicit în %{new_identifier} introducând o parolă unică de pe dispozitivul dvs. implicit actual." diff --git a/modules/webhooks/config/locales/crowdin/ro.yml b/modules/webhooks/config/locales/crowdin/ro.yml index a2bf11fb3906..eba92dedef14 100644 --- a/modules/webhooks/config/locales/crowdin/ro.yml +++ b/modules/webhooks/config/locales/crowdin/ro.yml @@ -24,7 +24,7 @@ ro: name: "Înregistrarea timpului" outgoing: no_results_table: Nu au fost definite încă niciun fel de webhooks. - label_add_new: Adăugați un nou webhook + label_add_new: Adaugă un nou webhook label_edit: Editați webhook label_event_resources: Resurse pentru evenimente events: @@ -38,7 +38,7 @@ ro: enabled: 'Webhook este activat' disabled: 'Webhook este dezactivat' enabled_text: 'Webhook va emite sarcini utile pentru evenimentele definite mai jos.' - disabled_text: 'Faceți clic pe butonul de editare pentru a activa webhook-ul.' + disabled_text: 'Fă clic pe butonul de editare pentru a activa webhook-ul.' deliveries: no_results_table: Nu au fost efectuate livrări pentru acest webhook în ultimele zile. title: 'Livrări recente' diff --git a/spec/mailers/digest_mailer_spec.rb b/spec/mailers/digest_mailer_spec.rb index 6b6b4d9fba2d..4dabc26717c4 100644 --- a/spec/mailers/digest_mailer_spec.rb +++ b/spec/mailers/digest_mailer_spec.rb @@ -120,6 +120,16 @@ .to have_text(expected_text, normalize_ws: true) end + it "includes a reference to the notification center if there are more than the maximum number of shown work packages" do + stub_const("DigestMailer::MAX_SHOWN_WORK_PACKAGES", 0) + + expect(mail_body) + .to have_text I18n.t(:"mail.work_packages.more_to_see.one") + + expect(mail_body) + .to have_link(I18n.t(:"mail.work_packages.see_all"), href: notifications_url) + end + context "with only a deleted work package for the digest" do let(:work_package) { nil } diff --git a/spec/models/journable/historic_active_record_relation_spec.rb b/spec/models/journable/historic_active_record_relation_spec.rb index 1bd66072f114..f0f97e53e1eb 100644 --- a/spec/models/journable/historic_active_record_relation_spec.rb +++ b/spec/models/journable/historic_active_record_relation_spec.rb @@ -220,7 +220,7 @@ end end - describe "when searching for custom fields" do + describe "when searching for a single custom field" do let(:custom_field) do create(:text_wp_custom_field, name: "Text CF", @@ -284,6 +284,109 @@ end end end + + describe "when searching for two custom fields (concatenated into string as Query#results does)" do + let(:text_custom_field) do + create(:text_wp_custom_field, + name: "Text CF", + types: project.types, + projects: [project]) + end + let!(:monday_text_cf_journal) do + create(:journal_customizable_journal, + journal: monday_journal, + custom_field: text_custom_field, + value: "Monday_CV") + end + let!(:wednesday_text_cf_journal) do + create(:journal_customizable_journal, + journal: wednesday_journal, + custom_field: text_custom_field, + value: "Wednesday_CV") + end + let!(:friday_text_cf_journal) do + create(:journal_customizable_journal, + journal: friday_journal, + custom_field: text_custom_field, + value: "Friday_CV") + end + let(:int_custom_field) do + create(:integer_wp_custom_field, + name: "Int CF", + types: project.types, + projects: [project]) + end + let!(:monday_int_cf_journal) do + create(:journal_customizable_journal, + journal: monday_journal, + custom_field: int_custom_field, + value: "1") + end + let!(:wednesday_int_cf_journal) do + create(:journal_customizable_journal, + journal: wednesday_journal, + custom_field: int_custom_field, + value: "2") + end + let!(:friday_int_cf_journal) do + create(:journal_customizable_journal, + journal: friday_journal, + custom_field: int_custom_field, + value: "3") + end + let(:work_package_attributes) do + { custom_values: { text_custom_field.id => "Friday_CV", int_custom_field.id => "3" } } + end + let(:text_filter) do + Queries::WorkPackages::Filter::CustomFieldFilter.create!( + name: text_custom_field.column_name, + context: build_stubbed(:query, project:), + operator: "~", + values: text_values + ) + end + let(:int_filter) do + Queries::WorkPackages::Filter::CustomFieldFilter.create!( + name: int_custom_field.column_name, + context: build_stubbed(:query, project:), + operator: "=", + values: int_values + ) + end + # Done just like Query#results does it by fetching Query#statement + let(:relation) { WorkPackage.where("(#{text_filter.where}) AND (#{int_filter.where})") } + + context "with the current value at the current time" do + let(:text_values) { %w(Friday_CV) } + let(:int_values) { "3" } + let(:historic_relation) { relation.at_timestamp(Timestamp.new("PT0S")) } + + it "returns the requested work package" do + expect(subject).to include work_package + end + end + + context "with matching historic values" do + let(:text_values) { %w(Wednesday) } + let(:int_values) { "2" } + let(:historic_relation) { relation.at_timestamp(wednesday) } + + it "returns the requested work package" do + expect(subject).to include work_package + end + end + + # Guards against regression #58600 + context "with only one filter matching historic values" do + let(:text_values) { %w(Friday) } + let(:int_values) { "2" } + let(:historic_relation) { relation.at_timestamp(wednesday) } + + it "returns no work package" do + expect(subject).to be_empty + end + end + end end describe "foo OR bar (Arel::Nodes::Grouping)" do |