Repository: urlaubsverwaltung/urlaubsverwaltung
Pull request #5308 (2025-04-11 15:04:16)

Update help url
<!--

Thanks for contributing to the Urlaubsverwaltung.
Please review the following notes before submitting you pull request.

Please look for other issues or pull requests which already work on this topic. Is somebody already on it? Do you need to synchronize?

# Security Vulnerabilities

🛑 STOP! 🛑 If your contribution fixes a security vulnerability, please do not submit it.
Instead, please open a report of a security vulnerability via
[Report a security vulnerability](https://github.com/urlaubsverwaltung/urlaubsverwaltung/security/advisories/new)


# Describing Your Changes

If, having reviewed the notes above, you're ready to submit your pull request, please
provide a brief description of the proposed changes.

If they:
 🐞 fix a bug, please describe the broken behaviour and how the changes fix it.
    Please label with 'type: bug' and 'status: new'
    
 🎁 make an enhancement, please describe the new functionality and why you believe it's useful.
    Please label with 'type: enhancement' and 'status: new'
 
If your pull request relates to any existing issues,
please reference them by using the issue number prefixed with #.

-->



Patch:
diff --git a/src/main/java/org/synyx/urlaubsverwaltung/web/MenuProperties.java b/src/main/java/org/synyx/urlaubsverwaltung/web/MenuProperties.java
index 8e6ee2535..a0dc90ef4 100644
--- a/src/main/java/org/synyx/urlaubsverwaltung/web/MenuProperties.java
+++ b/src/main/java/org/synyx/urlaubsverwaltung/web/MenuProperties.java
@@ -27,7 +27,7 @@ public class MenuProperties {
 
         @URL
         @NotEmpty
-        private String url = "https://urlaubsverwaltung.cloud/hilfe/?source=open-source#dokumentation";
+        private String url = "https://urlaubsverwaltung.cloud/hilfe/?utm_source=urlaubsverwaltung-open-source#dokumentation-urlaubsverwaltung";
 
         public String getUrl() {
             return url;
diff --git a/src/main/resources/messages_el.properties b/src/main/resources/messages_el.properties
index 1b3333653..fcd387108 100644
--- a/src/main/resources/messages_el.properties
+++ b/src/main/resources/messages_el.properties
@@ -271,7 +271,7 @@ applications.sort.optgroup.person.label=Άτομο
 applications.sort.optgroup.statistics.label=Στατιστικά
 applications.statistics.all.button=Όλοι οι εργαζόμενοι
 applications.statistics.allowed=Επιτρέπεται
-applications.statistics.days.unit={0, choice, 0#{0} Ημέρες|1#1 Ημέρα|1.5#{0} Ημέρες}
+applications.statistics.days.unit={0, choice, 0#{0} days|1#1 day|1.5#{0} days}
 applications.statistics.days.value={0}
 applications.statistics.days={0, choice, 0#{0} Ημέρες|1#1 Ημέρα|1.5#{0} Ημέρες}
 applications.statistics.error.period=Προσαρμόστε το χρονικό διάστημα.
@@ -504,25 +504,25 @@ federalState.NETHERLANDS=Ολλανδία
 federalState.NONE=Κανένας κανονισμός επίσημων αργιών
 federalState.POLAND=Πολωνία
 federalState.SPAIN_ANDALUCIA=Ανδαλουσία
-federalState.SPAIN_ARAGON=Αραγωνία
-federalState.SPAIN_ASTURIAS=Αστούρια
+federalState.SPAIN_ARAGON=Aragon
+federalState.SPAIN_ASTURIAS=Asturias
 federalState.SPAIN_BALEARIC_ISLAND=Βαλεαρίδες Νήσοι
 federalState.SPAIN_BARCELONA=Βαρκελώνη
 federalState.SPAIN_CANARY_ISLANDS=Καναριακά Νησιά
-federalState.SPAIN_CANTABRIA=Κανταβρία
+federalState.SPAIN_CANTABRIA=Cantabria
 federalState.SPAIN_CASTILE_AND_LEON=Καστίλη και Λεόν
-federalState.SPAIN_CASTILE_LA_MANCHA=Καστίλη - Λα Μάντσα
+federalState.SPAIN_CASTILE_LA_MANCHA=Castile - La Mancha
 federalState.SPAIN_CATALONIA=Καταλονία
-federalState.SPAIN_CEUTA=Θέουτα
-federalState.SPAIN_EUSKADI=Χώρα των Βάσκων
-federalState.SPAIN_EXTREMADURA=Εξτρεμαδούρα
+federalState.SPAIN_CEUTA=Ceuta
+federalState.SPAIN_EUSKADI=Euskadi
+federalState.SPAIN_EXTREMADURA=Extremadura
 federalState.SPAIN_GALICIA=Γαλικία
 federalState.SPAIN_LA_RIOJA=La Rioja
 federalState.SPAIN_MADRID=Μαδρίτη
-federalState.SPAIN_MELILLA=Μελίγια
-federalState.SPAIN_MURCIA=Μούρθια
-federalState.SPAIN_NAVARRA=Ναβάρα
-federalState.SPAIN_VALENCIA=Βαλένθια
+federalState.SPAIN_MELILLA=Melilla
+federalState.SPAIN_MURCIA=Murcia
+federalState.SPAIN_NAVARRA=Navarra
+federalState.SPAIN_VALENCIA=Valencia
 federalState.SWITZERLAND_AARGAU=Ααργκάου
 federalState.SWITZERLAND_APPENZELL_AUSSERRHODEN=Απένζελ Αουσερχόντεν
 federalState.SWITZERLAND_APPENZELL_INNERRHODEN=Απενζέλ Ινερχόντεν
@@ -554,8 +554,8 @@ federalState.UNITED_KINGDOM_ENGLAND=Αγγλία
 federalState.UNITED_KINGDOM_GUERNSEY=Γκέρνσεϊ
 federalState.UNITED_KINGDOM_ISLE_OF_MAN=Νήσος του Μαν
 federalState.UNITED_KINGDOM_JERSEY=Τζέρσεϊ
-federalState.UNITED_KINGDOM_NORTHERN_IRELAND=Βόρεια Ιρλανδία
-federalState.UNITED_KINGDOM_SCOTLAND=Σκωτία
+federalState.UNITED_KINGDOM_NORTHERN_IRELAND=Northern Ireland
+federalState.UNITED_KINGDOM_SCOTLAND=Scotland
 federalState.UNITED_KINGDOM_WALES=Ουαλία
 federalState.USA_MARYLAND=Μέριλαντ
 federalState.USA_VIRGINIA=Βιρτζίνια
@@ -675,12 +675,12 @@ overtime.record.header.title.new=Καταχώρηση υπερωρίας
 overtime.record.new=Καταχώρηση υπερωρίας
 overtime.title=Υπερωρίες
 overview.absences.overview.link.text=Επισκόπηση άδειας
-overview.calendar.button.next.label=Επόμενος Μήνας
-overview.calendar.button.previous.label=Προηγούμενος Μήνας
+overview.calendar.button.next.label=Nächster Monat
+overview.calendar.button.previous.label=Voriger Monat
 overview.calendar.share.link.text=Κοινή χρήση ημερολογίου
 overview.calendar.title=Ημερολόγιο
 overview.header.title=Επισκόπηση του {0} από {1,number,#}
-overview.person.departments.list.label=Τμήματα του {0}
+overview.person.departments.list.label=Abteilungen von {0}
 overview.reduced.info=Δυστυχώς, δεν έχετε τα απαιτούμενα δικαιώματα για να δείτε περισσότερες πληροφορίες από το {0}.
 overview.reduced.title=Επισκόπηση
 overview.sicknotes.sickdays.1=Υπάρχουν
@@ -693,16 +693,16 @@ overview.sicknotes.sickdays.days={0, choice, 0#{0} Ημέρες|1#1 Ημέρα|1
 overview.title=Επισκόπηση για
 overview.vacations.days={0, choice, 0#{0} Ημέρες|1#1 Ημέρα|1.5#{0} Ημέρες}
 overview.vacations.expired.days={0, choice, 0#{0} Ημέρες|1#1 Ημέρα|1.5#{0} Ημέρες}
-overview.vacations.expired.description={0} από {1} ημέρες υπόλοιπης άδειας έχουν λήξει.
-overview.vacations.expired=Ληγμένος υπόλοιπος άδειας
+overview.vacations.expired.description={0} von {1} Resturlaubstagen sind verfallen.
+overview.vacations.expired=Verfallener Resturlaub
 overview.vacations.holidayLeave.1=Ζητείται
 overview.vacations.holidayLeave.2={0, choice, 0#{0} ημέρες|1#1 ημέρα|1.5#{0} ημέρες} διακοπών
 overview.vacations.holidayLeaveAllowed={0, choice, 0#{0} ημέρες|1#1 ημέρα|1.5#{0} ημέρες} έχουν εγκριθεί.
 overview.vacations.otherLeave.1=Ζητείται
 overview.vacations.otherLeave.2={0, choice, 0#{0} ημέρες|1#1 ημέρα|1.5#{0} ημέρες} άλλων απουσιών
 overview.vacations.otherLeaveAllowed={0, choice, 0#{0} ημέρες είναι|1#1 ημέρα είναι|1.5#{0} ημέρες είναι} εγκεκριμένες
-overview.year.selection.button=Επίλεξε ένα άλλο έτος για την επισκόπηση. Το τρέχον επιλεγμένο έτος είναι το {0,number,#}.
-overview.year.selection.item.link=Επισκόπηση για το {0,number,#}
+overview.year.selection.button=Wähle ein anderes Jahr für die Übersicht. Aktuell ausgewählt ist {0,number,#}.
+overview.year.selection.item.link=Übersicht für {0,number,#}
 pagination.page.last=Τελευταία σελίδα, σελίδα {0}
 pagination.page.next=Επόμενη σελίδα
 pagination.page.previous=Προηγούμενη σελίδα
@@ -749,7 +749,7 @@ person.account.vacation.left.1=Απομένουν
 person.account.vacation.left.2={0} ημέρες διακοπών
 person.account.vacation.left.alreadyUsedNextYear=Ήδη {0, choice, 0#{0} ημέρες|1#1 ημέρα|1.5#{0} ημέρες} προγραμματισμένες για το επόμενο έτος
 person.account.vacation.left.remaining=συμπεριλαμβανομένου {0} υπόλοιπες ημέρες διακοπών
-person.account.vacation.left.remainingExpired=και {0} ημέρες υπόλοιπης άδειας έχουν λήξει
+person.account.vacation.left.remainingExpired=und {0} Tage Resturlaub sind verfallen
 person.account.vacation.noInformation=Δεν υπάρχουν διαθέσιμες πληροφορίες
 person.account.vacation.title=Δικαίωμα διακοπών για
 person.account.workingTime.federalState=βασισμένο στο
@@ -761,12 +761,12 @@ person.data.firstName=Όνομα
 person.data.inactive=Ανενεργός χρήστης
 person.data.lastName=Επώνυμο
 person.form.annualVacation.actualVacation=Κατ΄ αναλογία δικαίωμα διακοπών
-person.form.annualVacation.annualVacation.group.legend=Δικαίωμα άδειας
+person.form.annualVacation.annualVacation.group.legend=Urlaubsanspruch
 person.form.annualVacation.annualVacation=Ετήσιο δικαίωμα άδειας
 person.form.annualVacation.comment.placeholder=Εδώ μπορείτε να εισάγετε ένα σχόλιο...
 person.form.annualVacation.comment=Σχολιάστε την αλλαγή του δικαιώματος άδειας
 person.form.annualVacation.description=Εάν επιλεγεί ένα ολόκληρο έτος ως χρονική περίοδος, το «Δικαίωμα ετήσιων διακοπών» και το «Δικαίωμα αναλογίας διακοπών» δεν διαφέρουν.
-person.form.annualVacation.error.expiryDateLocally.invalidYear=πρέπει να βρίσκεται εντός του έτους {0}.
+person.form.annualVacation.error.expiryDateLocally.invalidYear=muss im Jahr {0} liegen.
 person.form.annualVacation.error.holidaysAccountValidFrom.invalidRange=Η περίοδος πρέπει να είναι μεγαλύτερη από μία ημέρα.
 person.form.annualVacation.error.holidaysAccountValidFrom.invalidRangeReversed=πρέπει να είναι πριν από το «Μέχρι».
 person.form.annualVacation.error.holidaysAccountValidFrom.invalidYear=πρέπει να είναι στο έτος {0}.
@@ -788,8 +788,8 @@ person.form.annualVacation.remainingVacation.expire=Λήξη υπολοίπου
 person.form.annualVacation.remainingVacation.expiryDate.global-info.none=Στην {0} δεν έχει ρυθμιστεί καμία ημερομηνία. Ορίστε μια συνολική ημερομηνία λήξης εκεί ή μια μεμονωμένη εδώ.
 person.form.annualVacation.remainingVacation.expiryDate.global-info.settings=Ρυθμίσεις
 person.form.annualVacation.remainingVacation.expiryDate.global-info=Στο {0} έχει ρυθμιστεί το {1}. Μπορείτε να αντικαταστήσετε την ημερομηνία ή να την αφήσετε κενή και να χρησιμοποιήσετε την παγκόσμια ρύθμιση.
-person.form.annualVacation.remainingVacation.expiryDate=Ημερομηνία λήξης της υπόλοιπης άδειας
-person.form.annualVacation.remainingVacation.notExpiring=Μέρος της υπόλοιπης άδειας που δεν λήγει στην ημερομηνία λήξης
+person.form.annualVacation.remainingVacation.expiryDate=Verfallsdatum des Resturlaubs
+person.form.annualVacation.remainingVacation.notExpiring=Anteil des Resturlaubs, welcher nicht zum Verfallsdatum verfällt
 person.form.annualVacation.remainingVacation=Μέρες διακοπών που απομένουν
 person.form.annualVacation.title=Δικαίωμα διακοπών {0} για
 person.form.basedata.additionalInformation.maxChars=500 χαρακτήρες
@@ -821,12 +821,12 @@ person.form.permissions.roles.SECOND_STAGE_AUTHORITY.departments.description=Ο
 person.form.permissions.roles.SECOND_STAGE_AUTHORITY.departments.none.description=Ο χρήστης δεν είναι υπεύθυνος για κανένα τμήμα ακόμα.
 person.form.permissions.roles.SECOND_STAGE_AUTHORITY.description=είναι υπεύθυνος για την τελική έγκριση στην έγκριση των αιτημάτων στο δεύτερο επίπεδο εξουσιοδότησης
 person.form.permissions.roles.SECOND_STAGE_AUTHORITY=Δεύτερο επίπεδο εξουσιοδότησης
-person.form.permissions.roles.SICK_NOTE_VIEW_ADD_EDIT.description=μπορεί να διαχειρίζεται τις ιατρικές βεβαιώσεις όλων των εργαζομένων για τους οποίους είναι υπεύθυνος/-η. Αυτή η λειτουργία περιλαμβάνεται ήδη στα δικαιώματα του γραφείου.
-person.form.permissions.roles.SICK_NOTE_VIEW_ADD_EDIT=Διαχείριση ιατρικών βεβαιώσεων
+person.form.permissions.roles.SICK_NOTE_VIEW_ADD_EDIT.description=darf Krankmeldungen aller Mitarbeitenden für die {0} verantwortlich ist, pflegen. Diese Funktionalität ist bereits in der Office-Berechtigung integriert.
+person.form.permissions.roles.SICK_NOTE_VIEW_ADD_EDIT=Pflege von Krankmeldungen
 person.form.permissions.roles.USER.description=έχει πρόσβαση στη διαχείριση των διακοπών και μπορούν να υποβάλει αίτηση για άδεια για τον εαυτό του
 person.form.permissions.roles.USER=Χρήστης
-person.form.permissions.roles.additional_roles.description=Πρόσθετα δικαιώματα
-person.form.permissions.roles.basic_roles.description=Δικαιώματα
+person.form.permissions.roles.additional_roles.description=Zusätzliche Berechtigungen
+person.form.permissions.roles.basic_roles.description=Berechtigungen
 person.form.permissions.title=Δικαιώματα
 person.form.workingTime.description=Οι ημέρες της εβδομάδας επηρεάζουν το πόσες ημέρες διακοπών αφαιρούνται από τον λογαριασμό διακοπών όταν ο χρήστης κάνει αίτηση για διακοπές. Επίσης, οι ημέρες της εβδομάδας επηρεάζουν τις ημέρες ασθενείας, αφού μόνο οι εργάσιμες ημέρες θεωρούνται ως ημέρες ασθενείας.
 person.form.workingTime.error.mandatory=Πρέπει να επιλεγεί τουλάχιστον μία ημέρα της εβδομάδας.
@@ -934,7 +934,7 @@ persons.sort.vacationDaysLeft.asc=Υπόλοιπο δικαιώματος αδε
 persons.sort.vacationDaysLeft.desc=Υπόλοιπο δικαιώματος αδείας (φθίνουσα)
 persons.sort.vacationDaysLeftRemaining.asc=Υπολειπόμενη άδεια (αύξουσα)
 persons.sort.vacationDaysLeftRemaining.desc=Υπολειπόμενη άδεια (φθίνουσα)
-privacy-box.title=Απόρρητο
+privacy-box.title=Privacy
 settings.absenceTypes.action.approveToApply.label=Απαιτούμενη διαδικασία έγκρισης
 settings.absenceTypes.action.approveToCancel.label=Απαιτούμενη διαδικασία ακύρωσης
 settings.absenceTypes.action.color.label=Χρώμα
@@ -963,9 +963,9 @@ settings.avatar.gravatarEnabled.activation.true=Ενεργοποίηση
 settings.avatar.gravatarEnabled.activation=Εμφάνιση άβαταρ χρησιμοποιώντας την εξωτερική υπηρεσία Gravatar
 settings.betaTag=BETA
 settings.calendar.description=Για να μπορέσετε να συνδέσετε τα ραντεβού με ένα ημερολόγιο, πρέπει να ορίσετε την έναρξη και το τέλος μιας εργάσιμης ημέρας (πλήρης ώρα μεταξύ 0 και 24 η ώρα).
-settings.calendar.google.action.authenticate.description=Η διαδικασία ταυτοποίησης δεν έχει ολοκληρωθεί με επιτυχία ακόμη.
-settings.calendar.google.action.authenticate.success=Η σύνδεση με το Ημερολόγιο Google έχει πραγματοποιηθεί με επιτυχία.
-settings.calendar.google.action.authenticate=Επίτρεψε την πρόσβαση...
+settings.calendar.google.action.authenticate.description=Handshake not yet successfully completed.
+settings.calendar.google.action.authenticate.success=Connection to the Google Calendar is established.
+settings.calendar.google.action.authenticate=Allow access...
 settings.calendar.google.active.false=απενεργοποίηση
 settings.calendar.google.active.true=ενεργοποίηση
 settings.calendar.google.active=Σύνδεση
@@ -1096,7 +1096,7 @@ sicknote.edit.header.title=Επεξεργασία σημείωσης ασθέν
 sicknote.edit.title=Επεξεργασία σημείωσης ασθένειας
 sicknote.error.halfDayPeriod=Για ένα σημείωμα ασθενείας μισής ημέρας, οι ημερομηνίες έναρξης και λήξης πρέπει να είναι οι ίδιες.
 sicknote.error.illegalMaximumSickPayDays=Η εισαγόμενη περίοδος για τη λήξη της αμοιβής ασθενείας είναι μικρότερη από το νόμιμο ελάχιστο.
-sicknote.error.noValidPermissionToApplySickNote=Δεν μπορεί να δημιουργηθεί ιατρική βεβαίωση για τον χρήστη, επειδή δεν έχεις την απαραίτητη άδεια.
+sicknote.error.noValidPermissionToApplySickNote=Für den Benutzer kann keine Krankmeldung erstellt werden, da du keine Berechtigung dazu hast.
 sicknote.error.noValidWorkingTime=Δεν μπορεί να δημιουργηθεί σημείωμα ασθενείας για τον χρήστη, καθώς δεν υπάρχουν διαθέσιμες πληροφορίες σχετικά με τις ώρες εργασίας του χρήστη. Ελέγξτε και διορθώστε τα δεδομένα χρήστη εάν χρειάζεται.
 sicknote.extend.accept.button.text=Αποδοχή παράτασης
 sicknote.extend.child.paragraph.current=Έχετε ένα παιδικό σημείωμα ασθενείας από {0} έως {1}.


Test patch:
diff --git a/src/test/java/org/synyx/urlaubsverwaltung/web/MenuPropertiesTest.java b/src/test/java/org/synyx/urlaubsverwaltung/web/MenuPropertiesTest.java
index afcea847b..5d9f999cf 100644
--- a/src/test/java/org/synyx/urlaubsverwaltung/web/MenuPropertiesTest.java
+++ b/src/test/java/org/synyx/urlaubsverwaltung/web/MenuPropertiesTest.java
@@ -29,20 +29,20 @@ class MenuPropertiesTest {
     @Test
     void helpUrlDefault() {
         final MenuProperties menuProperties = new MenuProperties();
-        assertThat(menuProperties.getHelp().getUrl()).isEqualTo("https://urlaubsverwaltung.cloud/hilfe/?source=open-source#dokumentation");
+        assertThat(menuProperties.getHelp().getUrl()).isEqualTo("https://urlaubsverwaltung.cloud/hilfe/?utm_source=urlaubsverwaltung-open-source#dokumentation-urlaubsverwaltung");
     }
 
     @Test
     void helpUrlIsGiven() {
         final MenuProperties menuProperties = new MenuProperties();
-        menuProperties.getHelp().setUrl("https://urlaubsverwaltung.cloud/hilfe/?source=open-source#dokumentation");
+        menuProperties.getHelp().setUrl("https://urlaubsverwaltung.cloud/hilfe/?utm_source=urlaubsverwaltung-open-source#dokumentation-urlaubsverwaltung");
         final Set<ConstraintViolation<MenuProperties>> violations = validator.validate(menuProperties);
 
         assertThat(violations).isEmpty();
     }
 
     @ParameterizedTest
-    @ValueSource(strings = {"", " ", "NotAnEmail"})
+    @ValueSource(strings = {"", " ", "NotAnUrl"})
     @NullSource
     void helpUrlIsWrong(String input) {
         final MenuProperties menuProperties = new MenuProperties();