chore: ensure translations are sensible
Also fix some translations
This commit is contained in:
parent
2c2edca6fa
commit
79d4b72780
@ -19,14 +19,14 @@ ValueRequiredLabeledSimple fieldLabel@Text: #{fieldLabel} wird benötigt
|
||||
ValueRequiredLabeledMultiWord fieldLabel@Text: „#{fieldLabel}“ wird benötigt
|
||||
UnsupportedAuthPredicate authTagT@Text shownRoute@Text: „#{authTagT}“ wurde auf eine Route angewandt, die dies nicht unterstützt: „#{shownRoute}“
|
||||
WorkflowScopeGlobal: Systemweit
|
||||
WorkflowScopeTermSchool tid@TermId ssh@SchoolId: #{tid} #{ssh}
|
||||
WorkflowScopeCourse tid@TermId ssh@SchoolId csh@CourseShorthand: #{tid} #{ssh} #{csh}
|
||||
WorkflowScopeTermSchool tid@TermId ssh@SchoolId !ident-ok: #{tid} #{ssh}
|
||||
WorkflowScopeCourse tid@TermId ssh@SchoolId csh@CourseShorthand !ident-ok: #{tid} #{ssh} #{csh}
|
||||
SecretJSONFieldDecryptFailure: Konnte versteckte vertrauliche Daten nicht entschlüsseln
|
||||
German: Deutsch
|
||||
GermanGermany: Deutsch (Deutschland)
|
||||
English: Englisch
|
||||
EnglishEurope: Englisch (Europa)
|
||||
ShortSexNotKnown: unb.
|
||||
ShortSexMale: m
|
||||
ShortSexMale !ident-ok: m
|
||||
ShortSexFemale: w
|
||||
ShortSexNotApplicable: k.A.
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
TestDownloadMaxSize: Maximale Dateigröße
|
||||
TestDownloadMode: Modus
|
||||
HeadingAdminCrontab: Crontab
|
||||
AdminInstanceId: Instanz-Nummer:in
|
||||
HeadingAdminCrontab !ident-ok: Crontab
|
||||
AdminInstanceId: Instanz-Nummer
|
||||
AdminCrontabNotGenerated: (Noch) keine Crontab generiert
|
||||
CronMatchAsap: ASAP
|
||||
CronMatchAsap !ident-ok: ASAP
|
||||
CronMatchNone: Nie
|
||||
ErrMsgCiphertext: Verschlüsselte Fehlermeldung
|
||||
AmbiguousNameCandidatesRemoved n@Int: #{show n} #{pluralDE n "uneindeutiger Kandidat/uneindeutige Kandidatin" "uneindeutige Kandiat:innen"} entfernt
|
||||
@ -22,7 +22,7 @@ NoParentCandidatesInferred: Keine neuen Unterstudiengänge inferiert
|
||||
StudyDegreeChangeSuccess: Zuordnung Abschlüsse aktualisiert
|
||||
StudyTermsShort: Studiengangkürzel
|
||||
StudyTermsChangeSuccess: Zuordnung Studiengänge aktualisiert
|
||||
StudyCandidateIncidence: Synchronisation
|
||||
StudyCandidateIncidence !ident-ok: Synchronisation
|
||||
StudyTermIsNew: Neu
|
||||
AdminFeaturesHeading: Studiengänge
|
||||
StudyTermsParentMissing: Elternteil wird benötigt
|
||||
@ -52,7 +52,7 @@ BearerTokenRoutesTip: Wenn die Token-Validität nach Routen eingeschränkt und k
|
||||
BearerTokenRouteMissing: Route wird benötigt
|
||||
BearerTokenRestrictions: Routen-spezifische Einschränkungen
|
||||
BearerTokenRestrictRoutes: Token-Validität nach Routen einschränken
|
||||
BearerTokenRestrictRoute: Route
|
||||
BearerTokenRestrictRoute !ident-ok: Route
|
||||
BearerTokenRestrictValue: Einschränkung
|
||||
BearerTokenAdditionalAuth: Zusätzliche Authorisierung
|
||||
BearerTokenAdditionalAuthTip: Wird hier nichts angegeben, werden keine Einschränkungen daran gesetzt, wer das Token verwenden kann. Es reicht dann der Besitz.
|
||||
@ -74,7 +74,7 @@ StudyFeatureParentInference: Unterstudiengang-Inferenz
|
||||
StudyFeatureInferenceNoNameConflicts: Keine Konflikte beobachtet
|
||||
StudyFeatureInferenceNameConflictsHeading: Studiengangseinträge mit beobachteten Konflikten
|
||||
|
||||
AdminHeading: Administration
|
||||
AdminHeading !ident-ok: Administration
|
||||
AdminPageEmpty: Diese Seite soll eine Übersichtsseite für Administrator:innen werden. Aktuell finden sich hier nur Links zu wichtigen Administrator-Funktionalitäten.
|
||||
BearerTokenImpersonate: Auftreten als
|
||||
BearerTokenImpersonateNone: Keine Änderung
|
||||
@ -85,7 +85,7 @@ BearerTokenImpersonateRandomNegative: Anzahl muss positiv sein
|
||||
BearerTokenImpersonateRandomCount: Anzahl
|
||||
BearerTokenImpersonateUnknownUser email@UserEmail: Ein Nutzer/Eine Nutzerin mit E-Mail #{email} ist dem System nicht bekannt
|
||||
BearerTokenImpersonateRandomWeightActivity: Nach Aktivität gewichten
|
||||
BearerTokenArchiveName: tokens.zip
|
||||
BearerTokenArchiveName !ident-ok: tokens.zip
|
||||
|
||||
TestDownloadDirect: Direkte Generierung
|
||||
TestDownloadInTransaction: Generierung während Datenbank-Transaktion
|
||||
|
||||
@ -22,7 +22,7 @@ CourseApplication: Bewerbung
|
||||
AllocationCoursePriority i@Natural: #{i}. Wahl
|
||||
AllocationCourseNoApplication: Keine Bewerbung
|
||||
ApplicationPriority: Priorität
|
||||
ApplicationVeto: Veto
|
||||
ApplicationVeto !ident-ok: Veto
|
||||
ApplicationVetoTip: Bewerber:in mit Veto werden garantiert nicht dem Kurs zugeteilt
|
||||
ApplicationRatingPoints: Bewertung
|
||||
ApplicationRatingPointsTip: Bewerber:in mit 5.0 werden garantiert nicht dem Kurs zugeteilt
|
||||
@ -66,8 +66,8 @@ AllocationTotalCourses: Gewünschte Anzahl von Kursen
|
||||
AllocationTotalCoursesTip: Sie werden im Laufe dieser Zentralanmeldung maximal so vielen Kursen zugeteilt, wie Sie hier angeben
|
||||
AllocationRegistered: Teilnahme an der Zentralanmeldung erfolgreich registriert
|
||||
AllocationRegistrationEdited: Einstellungen zur Teilnahme an der Zentralanmeldung erfolgreich angepasst
|
||||
AllocationTitle termText@Text ssh'@SchoolShorthand allocation@AllocationName: #{termText} - #{ssh'}: #{allocation}
|
||||
AllocationShortTitle termText@Text ssh'@SchoolShorthand ash@AllocationShorthand: #{termText} - #{ssh'} - #{ash}
|
||||
AllocationTitle termText@Text ssh'@SchoolShorthand allocation@AllocationName !ident-ok: #{termText} - #{ssh'}: #{allocation}
|
||||
AllocationShortTitle termText@Text ssh'@SchoolShorthand ash@AllocationShorthand !ident-ok: #{termText} - #{ssh'} - #{ash}
|
||||
AllocationNotificationNewCourse: Benachrichtigung bei neuen Kursen
|
||||
AllocationNotificationNewCourseTip: Wollen Sie per E-Mail benachrichtigt werden, wenn für diese Zentralanmeldung ein neuer Kurs eingetragen wird? Dies überschreibt die systemweite Einstellung in "Anpassen".
|
||||
AllocationNotificationNewCourseSuccessForceOn: Sie werden benachrichtigt, wenn ein neuer Kurs eingetragen wird
|
||||
@ -93,8 +93,8 @@ AllocationUsersTitle tid@TermId ssh@SchoolId ash@AllocationShorthand: #{tid}-#{s
|
||||
#templates allocation/show/course
|
||||
AllocationNoApplication: Keine Bewerbung
|
||||
CourseAllocationCourseParticipants: Teilnehmer:innen
|
||||
CourseMembersCount n@Int: #{n}
|
||||
CourseMembersCountLimited n@Int max@Int: #{n}/#{max}
|
||||
CourseMembersCount n@Int !ident-ok: #{n}
|
||||
CourseMembersCountLimited n@Int max@Int !ident-ok: #{n}/#{max}
|
||||
|
||||
#templates allocation/accept
|
||||
ComputedAllocation: Berechnete Vergabe
|
||||
@ -110,7 +110,7 @@ AllocationMatchedUsers: Neu zugeteilt
|
||||
|
||||
#templates allocation/show
|
||||
AllocationSchool: Institut
|
||||
AllocationSemester: Semester
|
||||
AllocationSemester !ident-ok: Semester
|
||||
AllocationDescription: Beschreibung
|
||||
AllocationStaffDescription: Beschreibung für Dozierende
|
||||
AllocationStaffRegisterFrom: Eintragung der Kurse ab
|
||||
@ -145,12 +145,12 @@ AllocationCourseRestrictionDontRestrict: Nicht einschränken
|
||||
AllocationCourseRestrictionSubstitutes: Kurse, die aktuell Nachrücker akzeptieren
|
||||
AllocationCourseRestrictionCustom: Benutzerdefiniert
|
||||
|
||||
AllocationName: Name
|
||||
AllocationName !ident-ok: Name
|
||||
Allocation: Zentralanmeldung
|
||||
AllocationActive: Aktiv
|
||||
AllocationUsersApplied: Bewerbungen
|
||||
AllocationUsersAssigned: Zuweisungen
|
||||
AllocationUsersVetoed: Vetos
|
||||
AllocationUsersVetoed !ident-ok: Vetos
|
||||
AllocationUsersRequested: Angefragte Plätze
|
||||
AllocationUsersPriority: Zentrale Dringlichkeit
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
CourseApplicationTitle displayName@Text csh@CourseShorthand: Bewerbung für #{csh}: #{displayName}
|
||||
CourseApplicationArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand appId@CryptoFileNameCourseApplication displayName@Text: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldCase (toPathPiece appId)}-#{foldCase displayName}
|
||||
CourseApplicationArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand appId@CryptoFileNameCourseApplication displayName@Text !ident-ok: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldCase (toPathPiece appId)}-#{foldCase displayName}
|
||||
CourseApplicationsAllocatedDirectory: zentral
|
||||
CourseApplicationsNotAllocatedDirectory: direkt
|
||||
CsvColumnApplicationsAllocation: Zentralanmeldung über die die Bewerbung eingegangen ist
|
||||
@ -18,7 +18,7 @@ ApplicationUserColumns: Bewerbung
|
||||
ApplicationRatingColumns: Bewertung
|
||||
ApplicationGeneratedColumns: Stammdaten
|
||||
ApplicationGeneratedColumnsTip: Stammdaten eines/einer Bewerbers/Bewerberin sind Daten, welche dem System zu diesem/dieser Benutzer/Benutzerin bekannt sind und welche der/die Benutzer/Benutzerin im Zuge der Bewerbung nicht beeinflussen kann.
|
||||
CourseApplicationVeto: Veto
|
||||
CourseApplicationVeto !ident-ok: Veto
|
||||
CourseApplicationNoVeto: Kein Veto
|
||||
CourseApplicationNoRatingPoints: Keine Bewertung
|
||||
CourseApplicationNoRatingComment: Kein Kommentar
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
FilterCourse: Kurs
|
||||
FilterCourseShort: Kürzel
|
||||
FilterTerm: Semester
|
||||
FilterTerm !ident-ok: Semester
|
||||
FilterCourseSchoolShort: Institut
|
||||
FilterRegistered: Angemeldet
|
||||
FilterCourseSearch: Volltext-Suche
|
||||
@ -16,7 +16,7 @@ CourseLecturerAlreadyAdded: Diese:r Nutzer:in ist bereits als Kursverwalter:in e
|
||||
CourseLecturerType: Rolle
|
||||
LecturerType: Rolle
|
||||
CourseLecturerRightsIdentical: Alle Sorten von Kursverwalter:innen haben identische Rechte.
|
||||
CourseAllocationOption term@Text name@Text: #{name} (#{term})
|
||||
CourseAllocationOption term@Text name@Text !ident-ok: #{name} (#{term})
|
||||
CourseAllocationParticipate: Teilnahme an Zentralanmeldung
|
||||
CourseAllocationParticipateTip: Wird an einer Zentralanmeldung teilgenommen, kann es sein, dass Sie bestimmte Rechte, die Sie normalerweise bzgl. Ihres Kurses hätten, nicht ausüben können (z.B. Studierende direkt zum Kurs anmelden, Studierende abmelden, ...).
|
||||
CourseNoAllocationsAvailable: Es sind aktuell keine Zentralanmeldungen verfügbar
|
||||
@ -33,7 +33,7 @@ CourseSchoolMultipleTip: Es stehen für Sie mehrere Institute zur Auswahl. Stell
|
||||
CourseName: Kurstitel
|
||||
CourseShorthand: Kürzel
|
||||
CourseShorthandUnique: Muss nur innerhalb Institut und Semester eindeutig sein. Wird verbatim in die Url der Kursseite übernommen.
|
||||
CourseSemester: Semester
|
||||
CourseSemester !ident-ok: Semester
|
||||
CourseDescriptionPlaceholder: Bitte mindestens die Modulbeschreibung angeben
|
||||
CourseHomepageExternal: Externe Homepage
|
||||
CourseSemesterMultipleTip: Es stehen für Sie aktuell mehrere Semester zur Auswahl. Stellen Sie bitte sicher, dass Sie das für den Kurs korrekte Semester wählen.
|
||||
@ -188,7 +188,7 @@ AssistantsFor: Assistent:innen
|
||||
TutorsFor n@Int: #{pluralDE n "Tutor:in" "Tutor:innen"}
|
||||
CorrectorsFor n@Int: #{pluralDE n "Korrektor:in" "Korrektor:innen"}
|
||||
CourseParticipantsHeading: Kursteilnehmer:innen
|
||||
CourseParticipantsCount n@Int: #{n}
|
||||
CourseParticipantsCount n@Int !ident-ok: #{n}
|
||||
CourseParticipantsCountOf n@Int m@Int: #{n} von #{m}
|
||||
CourseVisibility: Sichtbarkeit
|
||||
CourseInvisible: Dieser Kurs ist momentan nur für Dozierende, Assistent:innen, Tutor:innen, Korrektor:innen, angemeldete Teilnehmer:innen und Bewerber:innen sichtbar.
|
||||
@ -202,7 +202,7 @@ CourseApplicationTemplateApplication: Bewerbungsvorlage(n)
|
||||
CourseApplicationTemplateRegistration: Anmeldungsvorlage(n)
|
||||
NotRegistered: Sie sind zu diesem Kurs nicht angemeldet.
|
||||
CourseApplicationDeleteToEdit: Um Ihre Bewerbung zu editieren müssen Sie sie zunächst zurückziehen und sich erneut bewerben.
|
||||
CourseMaterial: Material
|
||||
CourseMaterial !ident-ok: Material
|
||||
CourseMaterialNotFree: Das Kursmaterial ist nur für Mitglieder des Kurses einsehbar, also z.B. für Teilnehmer:innen, Tutor:innen, Korrektor:innen und Verwalter:innen.
|
||||
CourseMaterialsFoundHere: Material zum Kurs finden Sie hier
|
||||
CourseMaterialsNoneVisible: Aktuell gibt es zu diesem Kurs kein Material, oder nur Material auf das Sie keinen Zugriff haben (z.B. aufgrund von Fristen bzgl. der Sichtbarkeit).
|
||||
|
||||
@ -5,7 +5,7 @@ CourseEventTime: Zeit
|
||||
CourseEventRoom: Regulärer Raum
|
||||
CourseEventRoomHidden: Raum nur für Teilnehmer:innen
|
||||
CourseEventRoomHiddenTip: Soll der Raum nur angemeldeten Kursteilnehmer:innen angezeigt werden?
|
||||
CourseEventRoomIsUnset: —
|
||||
CourseEventRoomIsUnset !ident-ok: —
|
||||
CourseEventRoomIsHidden: Raum wird nur Kurs-assoziierten Personen (Teilnehmer:innen, Tutor:innen, Korrektor:innen, etc.) angezeigt
|
||||
CourseEventNote: Notiz
|
||||
CourseEventActions: Aktionen
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
CourseNews: Aktuelles
|
||||
CourseNewsArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand newsTitle@Text: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldCase newsTitle}
|
||||
CourseNewsArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand newsTitle@Text !ident-ok: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldCase newsTitle}
|
||||
CourseNewsFiles: Dateien
|
||||
CourseNewsLastEdited time@Text: Zuletzt verändert: #{time}
|
||||
CourseNewsActionEdit: Bearbeiten
|
||||
|
||||
@ -12,8 +12,8 @@ ExamAutoOccurrenceMinimizeRooms: Verwendete Räume/Termine minimieren
|
||||
ExamAutoOccurrenceMinimizeRoomsTip: Soll, für die Aufteilung, die Liste an Räumen/Terminen zunächst reduziert werden, sodass nur so wenige Räume verwendet werden, wie nötig (größte zuerst)?
|
||||
ExamAutoOccurrenceOccurrencesChangedInFlight: Raumliste wurde verändert
|
||||
ExamAutoOccurrenceParticipantsAssigned num@Int64: Verteilungstabelle erfolgreich gespeichert und #{num} #{pluralDE num "Teilnehmer:in" "Teilnehmer:innen"} zugewiesen
|
||||
Proportion c@Text of'@Text prop@Rational: #{c}/#{of'} (#{rationalToFixed2 (100 * prop)}%)
|
||||
ProportionNoRatio c@Text of'@Text: #{c}/#{of'}
|
||||
Proportion c@Text of'@Text prop@Rational !ident-ok: #{c}/#{of'} (#{rationalToFixed2 (100 * prop)}%)
|
||||
ProportionNoRatio c@Text of'@Text !ident-ok: #{c}/#{of'}
|
||||
ExamCorrectHeading examname@Text: Prüfungsergebnisse für #{examname} eintragen
|
||||
ExamCorrectErrorNeedleTooShort: Dieser Identifikator ist zu kurz.
|
||||
ExamCorrectErrorMultipleMatchingParticipants: Dem Identifikator konnten mehrere Prüfungsteilnehmer:innen zugeordnet werden.
|
||||
@ -119,7 +119,7 @@ ExamOccurrenceStartMustBeAfterExamStart eoName@ExamOccurrenceName: Beginn des Te
|
||||
ExamOccurrenceEndMustBeBeforeExamEnd eoName@ExamOccurrenceName: Ende des Termins #{eoName} liegt nach dem Ende der Prüfung
|
||||
ExamOccurrenceDuplicate eoRoom@Text eoRange@Text: Raum #{eoRoom}, Termin #{eoRange} kommt mehrfach mit der selben Beschreibung vor
|
||||
ExamOccurrenceDuplicateName eoName@ExamOccurrenceName: Interne Terminbezeichnung #{eoName} kommt mehrfach vor
|
||||
ExamOccurrenceRoomIsUnset: —
|
||||
ExamOccurrenceRoomIsUnset !ident-ok: —
|
||||
ExamOccurrenceRoomIsHidden: Raum wird nur Teilnehmer:innen angezeigt
|
||||
ExamOccurrenceCannotBeDeletedDueToRegistrations eoName@ExamOccurrenceName: Termin #{eoName} kann nicht gelöscht werden, da noch Teilnehmer:innen diesem Termin zugewiesen sind. Über die Liste von Prüfungsteilnehmern können Sie zunächst die entsprechenden Terminzuweisungen entfernen.
|
||||
ExamRegistrationMustFollowSchoolSeparationFromStart dayCount@Int: Nach Regeln des Instituts #{pluralDE dayCount "muss" "müssen"} zwischen "Anmeldung ab" und "Beginn" mindestens #{dayCount} #{pluralDE dayCount "Tag" "Tage"} liegen.
|
||||
@ -183,8 +183,8 @@ ExamUsersResultSet count@Int64: Prüfungsergebnis für #{show count} #{pluralDE
|
||||
ExamUsersHeading: Prüfungsteilnehmer:innen
|
||||
ExamCorrectHeadDate: Zeit
|
||||
ExamCorrectHeadParticipant: Teilnehmer:in
|
||||
ExamCorrectHeadPart exampartnum@ExamPartNumber: #{exampartnum}
|
||||
ExamCorrectHeadStatus: Status
|
||||
ExamCorrectHeadPart exampartnum@ExamPartNumber !ident-ok: #{exampartnum}
|
||||
ExamCorrectHeadStatus !ident-ok: Status
|
||||
ExamCorrectUserCandidatesMore: und weitere
|
||||
ExamCorrectExamResultDelete: Prüfungsergebnis löschen
|
||||
ExamCorrectExamResultNone: Keine Änderung
|
||||
@ -199,7 +199,7 @@ ExamCloseHeading: Prüfung abschließen
|
||||
ExamAutoOccurrenceHeading: Automatische Raum-/Terminverteilung
|
||||
|
||||
#templates /exam-show
|
||||
ExamShowOnline: Online/Offline
|
||||
ExamShowOnline !ident-ok: Online/Offline
|
||||
ExamShowSynchronicity: Synchron/Asynchron
|
||||
ExamNever: Nie
|
||||
ExamShowAids: Erlaubte Hilfsmittel
|
||||
@ -211,7 +211,7 @@ ExamBonusRule: Prüfungsbonus aus Übungsbetrieb
|
||||
ExamOccurrenceRule: Verfahren
|
||||
ExamOccurrenceRuleParticipant: Termin- bzw. Raumzuteilungsverfahren
|
||||
ExamRegisteredCount: Anmeldungen
|
||||
ExamRegisteredCountOf num@Int64 count@Int64: #{num}/#{count}
|
||||
ExamRegisteredCountOf num@Int64 count@Int64 !ident-ok: #{num}/#{count}
|
||||
ExamOccurrences: Termine
|
||||
GradingFrom: Ab
|
||||
ExamNoShow: Nicht erschienen
|
||||
@ -247,7 +247,7 @@ PointsMustBeMonotonic: Punktegrenzen müssen aufsteigend sein
|
||||
ExamModeFormNone: Keine Angabe
|
||||
ExamModeFormCustom: Benutzerdefiniert
|
||||
ExamModeFormAids: Erlaubte Hilfsmittel
|
||||
ExamModeFormOnline: Online/Offline
|
||||
ExamModeFormOnline !ident-ok: Online/Offline
|
||||
ExamModeFormSynchronicity: Synchron/Asynchron
|
||||
ExamModeFormRequiredEquipment: Erforderliche Hilfsmittel
|
||||
ExamModeFormRequiredEquipmentIdentificationTip: Es wird stets ein Hinweis angezeigt, dass Teilnehmer sich ausweisen können müssen.
|
||||
@ -271,8 +271,8 @@ ExamRegistrationRegisteredWithoutField n@Int: #{n} #{pluralDE n "Teilnehmer:in w
|
||||
ExamRegistrationParticipantsRegistered n@Int: #{n} #{pluralDE n "Teilnehmer:in wurde" "Teilnehmer:innen wurden"} zur Prüfung angemeldet
|
||||
ExamOpenBook: Open Book
|
||||
ExamClosedBook: Closed Book
|
||||
ExamOnline: Online
|
||||
ExamOffline: Offline
|
||||
ExamOnline !ident-ok: Online
|
||||
ExamOffline !ident-ok: Offline
|
||||
ExamSynchronous: Synchron
|
||||
ExamAsynchronous: Asynchron
|
||||
ExamRequiredEquipmentNone: Nichts
|
||||
|
||||
@ -43,7 +43,7 @@ ExamFinishedSince time@Text: Prüfungsergebnisse sichtbar seit #{time}
|
||||
|
||||
|
||||
#templates exam-office/*
|
||||
ExamUserSyncOfficeName: Name
|
||||
ExamUserSyncOfficeName !ident-ok: Name
|
||||
ExamUserSyncTime: Zeitpunkt
|
||||
ExamUserSyncSchools: Institute
|
||||
ExamUserSyncLastChange: Zuletzt geändert
|
||||
|
||||
@ -14,7 +14,7 @@ ExternalExamCorrectErrorNoMatchingUsers: Dem Identifikator konnte kein Studieren
|
||||
ExternalExamEdited coursen@CourseName examn@ExamName: Prüfung „#{examn}“ für Kurs „#{coursen}“ erfolgreich bearbeitet.
|
||||
ExternalExamExists coursen@CourseName examn@ExamName: Prüfung „#{examn}“ für Kurs „#{coursen}“ existiert bereits.
|
||||
ExternalExamEdit coursen@CourseName examn@ExamName: Bearbeiten: #{coursen}, #{examn}
|
||||
ExternalExamSemester: Semester
|
||||
ExternalExamSemester !ident-ok: Semester
|
||||
ExternalExamSchool: Institut
|
||||
ExternalExamCourseName: Veranstaltung
|
||||
ExternalExamCourseNameTip: Muss nur innerhalb von Semester und Institut eindeutig sein.
|
||||
@ -55,15 +55,15 @@ ExternalExamUserMarkSynchronisedCsvTip: Sollen beim CSV-Export automatisch alle
|
||||
ExternalExamUserCsvName tid@TermId ssh@SchoolId coursen@CourseName examn@ExamName: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase coursen}-#{foldedCase examn}-teilnehmer
|
||||
ExternalExamUserSynchronised: Synchronisiert
|
||||
ExternalExamAction: Aktion
|
||||
ExampleUser1FirstName: Max ZweiterName
|
||||
ExampleUser1Surname: Mustermann
|
||||
ExampleUser1DisplayName: Max Mustermann
|
||||
ExampleUser2FirstName: Martha
|
||||
ExampleUser2Surname: Musterstudent
|
||||
ExampleUser2DisplayName: Musterstudent Martha
|
||||
ExampleUser3FirstName: Maria
|
||||
ExampleUser3Surname: Beispiel
|
||||
ExampleUser3DisplayName: Beispiel
|
||||
ExampleUser1FirstName !ident-ok: Max ZweiterName
|
||||
ExampleUser1Surname !ident-ok: Mustermann
|
||||
ExampleUser1DisplayName !ident-ok: Max Mustermann
|
||||
ExampleUser2FirstName !ident-ok: Martha
|
||||
ExampleUser2Surname !ident-ok: Musterstudent
|
||||
ExampleUser2DisplayName !ident-ok: Musterstudent Martha
|
||||
ExampleUser3FirstName !ident-ok: Maria
|
||||
ExampleUser3Surname !ident-ok: Beispiel
|
||||
ExampleUser3DisplayName !ident-ok: Beispiel
|
||||
|
||||
ExternalExamUserCsvSheetName tid@TermId ssh@SchoolId coursen@CourseName examn@ExamName: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase coursen}-#{foldedCase examn} Teilnehmer
|
||||
ExternalExamUserMarkSynchronised: Prüfungsleistung als synchronisiert markieren
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
MaterialList: Material
|
||||
MaterialName: Name
|
||||
MaterialList !ident-ok: Material
|
||||
MaterialName !ident-ok: Name
|
||||
MaterialType: Art
|
||||
MaterialTypePlaceholder: Folien, Code, Beispiel, ...
|
||||
MaterialTypeSlides: Folien
|
||||
MaterialTypeCode: Code
|
||||
MaterialTypeCode !ident-ok: Code
|
||||
MaterialTypeExample: Beispiel
|
||||
MaterialDescription: Beschreibung
|
||||
MaterialVisibleFrom: Sichtbar für Teilnehmer:innen ab
|
||||
@ -11,8 +11,8 @@ MaterialVisibleFromTip: Ohne Datum nie sichtbar für Teilnehmer:innen; leer lass
|
||||
MaterialVisibleFromEditWarning: Das Datum der Veröffentlichung liegt in der Vergangenheit und sollte nicht mehr verändert werden, da dies die Benutzer:innen verwirren könnte.
|
||||
MaterialInvisible: Dieses Material ist für Teilnehmer:innen momentan unsichtbar!
|
||||
MaterialFiles: Dateien
|
||||
MaterialHeading materialName@MaterialName: #{materialName}
|
||||
MaterialListHeading: Materialien
|
||||
MaterialHeading materialName@MaterialName !ident-ok: #{materialName}
|
||||
MaterialListHeading !ident-ok: Material
|
||||
MaterialNewHeading: Neues Material veröffentlichen
|
||||
MaterialNewTitle: Neues Material
|
||||
MaterialEditHeading materialName@MaterialName: Material "#{materialName}" editieren
|
||||
@ -23,8 +23,8 @@ MaterialDeleteCaption: Wollen Sie das unten aufgeführte Material wirklich lösc
|
||||
MaterialDelHasFiles count@Int64: inklusive #{count} #{pluralDE count "Datei" "Dateien"}
|
||||
MaterialIsVisible: Achtung, dieses Material wurde bereits veröffentlicht.
|
||||
MaterialDeleted materialName@MaterialName: Material "#{materialName}" gelöscht
|
||||
MaterialArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand materialName@MaterialName: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase materialName}
|
||||
MaterialVideo materialName@MaterialName: #{materialName} - Video
|
||||
MaterialArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand materialName@MaterialName !ident-ok: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase materialName}
|
||||
MaterialVideo materialName@MaterialName !ident-ok: #{materialName} - Video
|
||||
MaterialVideoUnsupported: Ihr Browser scheint keine eingebetten Videos zu unterstützen
|
||||
MaterialVideoDownload: Herunterladen
|
||||
MaterialFree: Kursmaterialien ohne Anmeldung zugänglich
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
ParticipantsList: Kursteilnehmerlisten
|
||||
ParticipantsIntersect: Überschneidung von Kursteilnehmer:innen
|
||||
ParticipantsCsvName tid@TermId ssh@SchoolId: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-kursteilnehmer:innen
|
||||
ParticipantsIntersectCourseOption tid@TermId ssh@SchoolId coursen@CourseName: #{tid} - #{ssh} - #{coursen}
|
||||
ParticipantsIntersectCourseOption tid@TermId ssh@SchoolId coursen@CourseName !ident-ok: #{tid} - #{ssh} - #{coursen}
|
||||
ParticipantsIntersectCourses: Kurse
|
||||
CourseParticipantsRegisteredWithoutField n@Int: #{n} #{pluralDE n "Teilnehmeri:in wurde ohne assoziiertes Studienfach" "Teilnehmer:innen wurden ohne assoziierte Studienfächer"} angemeldet, da #{pluralDE n "kein eindeutiges Hauptfach bestimmt werden konnte" "keine eindeutigen Hauptfächer bestimmt werden konnten"}
|
||||
ParticipantsCsvSheetName tid@TermId ssh@SchoolId: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)} Kursteilnehmer:innen
|
||||
|
||||
@ -7,8 +7,8 @@ SheetNoOldUnassigned: Alle Abgaben inaktiver Blätter sind bereits einem Korrekt
|
||||
SheetDelHasSubmissions objs@Int: Inkl. #{objs} #{pluralDE objs "Abgabe" "Abgaben"}!
|
||||
SheetDeleteQuestion: Wollen Sie das unten aufgeführte Übungsblatt und alle zugehörigen Abgaben wirklich löschen?
|
||||
SheetDeleted: Übungsblatt gelöscht
|
||||
SheetArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand shn@SheetName: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase shn}
|
||||
SheetTypeArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand shn@SheetName renderedSft@Text: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase shn}-#{foldCase renderedSft}
|
||||
SheetArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand shn@SheetName !ident-ok: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase shn}
|
||||
SheetTypeArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand shn@SheetName renderedSft@Text !ident-ok: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase shn}-#{foldCase renderedSft}
|
||||
SheetEditOk tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName: Übungsblatt #{sheetName} wurde gespeichert in Kurs #{tid}-#{ssh}-#{csh}
|
||||
SheetNameDup tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName: Es gibt bereits ein Übungsblatt #{sheetName} in diesem Kurs #{tid}-#{ssh}-#{csh}
|
||||
SheetVisibleFrom: Sichtbar für Teilnehmer:innen ab
|
||||
@ -17,7 +17,7 @@ SheetActiveFrom: Aktiv ab/Beginn Abgabezeitraum
|
||||
SheetActiveTo: Aktiv bis/Ende Abgabezeitraum
|
||||
SheetSolutionFrom: Lösung ab
|
||||
SheetSolutionFromTip: Ohne Datum nie für Teilnehmer:innen sichtbar, Korrektor:innen können diese Dateien immer herunterladen
|
||||
SheetName: Name
|
||||
SheetName !ident-ok: Name
|
||||
SheetDescription: Hinweise für Teilnehmer:innen
|
||||
SheetRequireExam: Anmeldung zu einer Prüfung voraussetzen?
|
||||
SheetRequireExamTip: Wenn die Anmeldung zu einer Prüfung vorausgesetzt wird, können nur Kursteilnehmer:innen abgeben, die zum Zeitpunkt der Abgabe auch zur gewählten Prüfung angemeldet sind. Auch der Download von Übungsblatt-Dateien wird nur zur Prüfung angemeldeten Kursteilnehmer:innen erlaubt.
|
||||
@ -142,7 +142,7 @@ PersonalisedSheetFilesDownloadSurnames: Mit Nachnamen
|
||||
PersonalisedSheetFilesDownloadMatriculations: Mit Matrikelnummern
|
||||
PersonalisedSheetFilesDownloadGroups: Mit festen Abgabegruppen
|
||||
|
||||
SheetCorrectorNormal: Normal
|
||||
SheetCorrectorNormal !ident-ok: Normal
|
||||
SheetCorrectorMissing: Abwesend
|
||||
SheetCorrectorExcused: Entschuldigt
|
||||
SheetGradingPoints maxPoints@Points: #{maxPoints} #{pluralDE maxPoints "Punkt" "Punkte"}
|
||||
|
||||
@ -24,7 +24,7 @@ SubmissionCorrectionHead tid@TermId ssh@SchoolId csh@CourseShorthand sheetNa
|
||||
CorrectionPseudonyms: Abgaben-Pseudonyme
|
||||
CorrectionPseudonymsTip: Eine Abgabe pro Zeile, bei Gruppenabgaben mehrere Pseudonyme (komma-separiert) innerhalb einer Zeile. Kleine Schreibfehler werden u.U. automatisch korrigiert.
|
||||
PseudonymSheet: Übungsblatt
|
||||
CorrectionPseudonymSheet termDesc@Text csh@CourseShorthand shn@SheetName: #{termDesc} » #{csh} » #{shn}
|
||||
CorrectionPseudonymSheet termDesc@Text csh@CourseShorthand shn@SheetName !ident-ok: #{termDesc} » #{csh} » #{shn}
|
||||
SubmissionPseudonyms: Pseudonyme
|
||||
UnknownPseudonym pseudonym@Text: Unbekanntes Pseudonym "#{pseudonym}"
|
||||
SheetGroupTooLarge sheetGroupDesc@Text: Abgabegruppe zu groß: #{sheetGroupDesc}
|
||||
@ -34,7 +34,7 @@ SheetNoGroupSubmission sheetGroupDesc@Text: Gruppenabgabe ist für dieses Blatt
|
||||
SheetDuplicatePseudonym: Folgende Pseudonyme kamen mehrfach vor; alle Vorkommen außer dem Ersten wurden ignoriert:
|
||||
SheetCreateExisting: Folgende Pseudonyme haben bereits abgegeben:
|
||||
SubmissionCorrCreate: Abgaben registrieren
|
||||
SubmissionTypeArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand shn@SheetName subId@CryptoFileNameSubmission renderedSfType@Text: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase shn}-#{foldCase (toPathPiece subId)}-#{foldCase renderedSfType}
|
||||
SubmissionTypeArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand shn@SheetName subId@CryptoFileNameSubmission renderedSfType@Text !ident-ok: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase shn}-#{foldCase (toPathPiece subId)}-#{foldCase renderedSfType}
|
||||
NoOpenSubmissions: Keine unkorrigierten Abgaben vorhanden
|
||||
ColumnRatingPoints: Punktzahl
|
||||
RatingComment: Kommentar
|
||||
@ -98,7 +98,7 @@ SubmissionSheetMarking: Hinweise für Korrektor:innen
|
||||
SubmissionGradingSummaryTitle intgr@Integer: #{intgr} #{pluralDE intgr "Abgabe" "Abgaben"}
|
||||
SubmissionNoUploadExpected: Es ist keine Abgabe von Dateien vorgesehen.
|
||||
SubmissionFilesCorrected: Abgegebene & Korrigierte Dateien
|
||||
SubmissionOriginal: Original
|
||||
SubmissionOriginal !ident-ok: Original
|
||||
EditedBy name@Text time@Text: #{time} durch #{name}
|
||||
SubmissionReplace: Abgabe ersetzen
|
||||
|
||||
@ -135,10 +135,10 @@ SubmissionDeleteCosubmittorsWarning n@Int: Bei #{pluralDE n "der oben aufgeführ
|
||||
GenericShort: Kürzel
|
||||
GenericBack: Zurück
|
||||
GenericChange: Änderung
|
||||
GenericNumChange: +/-
|
||||
GenericMin: Min
|
||||
GenericAvg: Avg
|
||||
GenericMax: Max
|
||||
GenericNumChange !ident-ok: +/-
|
||||
GenericMin !ident-ok: Min
|
||||
GenericAvg !ident-ok: Avg
|
||||
GenericMax !ident-ok: Max
|
||||
GenericAll: Insgesamt
|
||||
SubmissionFilesUnchanged: Abgabedateien beibehalten
|
||||
SubmissionFilesUnchangedTip: Sollen die bestehenden Abgabedateien beim Ersetzen der Abgabe unverändert übernommen werden?
|
||||
|
||||
@ -10,7 +10,7 @@ HelpSubject: Betreff
|
||||
HelpRequest: Supportanfrage/Verbesserungsvorschlag
|
||||
HelpSent: Ihre Supportanfrage wurde weitergeleitet.
|
||||
AdditionalFaqs: Weitere häufig gestellte Fragen
|
||||
HelpName: Name
|
||||
HelpName !ident-ok: Name
|
||||
HelpTitle : Hilfe
|
||||
HelpSendLastError: Letzte Fehlermeldung anhängen
|
||||
HelpError: Letzte Fehlermeldung
|
||||
|
||||
@ -2,7 +2,7 @@ MailTestSubject: Uni2work Test-E-Mail
|
||||
MailTestContent: Dies ist eine Test-E-Mail versandt von Uni2work. Von Ihrer Seite ist keine Handlung notwendig.
|
||||
MailTestDateTime: Test der Datumsformattierung:
|
||||
MailSubjectSupport: Supportanfrage
|
||||
MailSubjectSupportCustom customSubject@Text: [Support] #{customSubject}
|
||||
MailSubjectSupportCustom customSubject@Text !ident-ok: [Support] #{customSubject}
|
||||
MailSubjectPasswordReset: Uni2work-Passwort ändern bzw. setzen
|
||||
CommUndisclosedRecipients: Verborgene Empfänger:innen
|
||||
CommAllRecipients: alle-empfaenger
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
TitleMetrics: Metriken
|
||||
MetricNoSamples: Keine Messwerte
|
||||
MetricName: Name
|
||||
MetricName !ident-ok: Name
|
||||
MetricValue: Wert
|
||||
|
||||
@ -1,13 +1,16 @@
|
||||
ChangelogItemFeature: Feature
|
||||
ChangelogItemBugfix: Bugfix
|
||||
SexNotKnown: Unknown
|
||||
SexMale: Male
|
||||
SexFemale: Female
|
||||
SexNotApplicable: Not applicable
|
||||
NoSubmissions: No submission
|
||||
CorrectorSubmissions: External submission via pseudonym
|
||||
UserSubmissions: Direct submission in Uni2work
|
||||
SystemExamOffice: Exam office
|
||||
SystemFaculty: Faculty member
|
||||
SystemStudent: Student
|
||||
BothSubmissions: Submission either directly in Uni2work or externally via pseudonym
|
||||
ChangelogItemFeature !ident-ok: Feature
|
||||
ChangelogItemBugfix !ident-ok: Bugfix
|
||||
|
||||
SexNotKnown: Unbekannt
|
||||
SexMale: Männlich
|
||||
SexFemale: Weiblich
|
||||
SexNotApplicable: Keine Angabe
|
||||
|
||||
NoSubmissions: Keine Abgabe
|
||||
CorrectorSubmissions: Abgabe extern mit Pseudonym
|
||||
UserSubmissions: Direkte Abgabe in Uni2work
|
||||
BothSubmissions: Abgabe direkt in Uni2work oder extern mit Pseudonym
|
||||
|
||||
SystemExamOffice: Prüfungsverwaltung
|
||||
SystemFaculty: Fakultätsmitglied
|
||||
SystemStudent: Student:in
|
||||
|
||||
@ -1,13 +1,16 @@
|
||||
ChangelogItemFeature: Feature
|
||||
ChangelogItemBugfix: Bugfix
|
||||
|
||||
SexNotKnown: Unknown
|
||||
SexMale: Male
|
||||
SexFemale: Female
|
||||
SexNotApplicable: Not applicable
|
||||
|
||||
NoSubmissions: No submission
|
||||
CorrectorSubmissions: External submission via pseudonym
|
||||
UserSubmissions: Direct submission in Uni2work
|
||||
BothSubmissions: Submission either directly in Uni2work or externally via pseudonym
|
||||
|
||||
SystemExamOffice: Exam office
|
||||
SystemFaculty: Faculty member
|
||||
SystemStudent: Student
|
||||
BothSubmissions: Submission either directly in Uni2work or externally via pseudonym
|
||||
|
||||
@ -4,7 +4,7 @@ NewsUpcomingSheets: Anstehende Übungsblätter
|
||||
NewsUpcomingExams: Bevorstehende Prüfungen
|
||||
NewsHideHiddenSystemMessages: Versteckte Nachrichten nicht mehr anzeigen
|
||||
NewsShowHiddenSystemMessages: Versteckte Nachrichten anzeigen
|
||||
NewsExamOccurrenceRoomIsUnset: —
|
||||
NewsExamOccurrenceRoomIsUnset !ident-ok: —
|
||||
NewsExamOccurrenceRoomIsHidden: Raum wird nur Teilnehmer:innen angezeigt
|
||||
NewsExamRegistered: Zur Prüfung angemeldet
|
||||
NewsExamNotRegistered: Nicht zur Prüfung angemeldet
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
HeadingSchoolList: Institute
|
||||
SchoolShort: Kürzel
|
||||
SchoolName: Name
|
||||
SchoolName !ident-ok: Name
|
||||
SchoolLdapOrganisations: Assoziierte LDAP-Fragmente
|
||||
SchoolLdapOrganisationsTip: Beim Login via LDAP werden dem Nutzer/der Nutzerin alle Institute zugeordnet deren assoziierte LDAP-Fragmente im Eintrag des Nutzer/der Nutzerin gefunden werden
|
||||
SchoolLdapOrganisationMissing: LDAP-Fragment wird benötigt
|
||||
@ -21,4 +21,4 @@ SchoolLecturer: Dozent:in
|
||||
SchoolEvaluation: Kursumfragenverwaltung
|
||||
SchoolExamOffice: Prüfungsverwaltung
|
||||
SchoolAllocation: Zentralanmeldungs-Administration
|
||||
SchoolAdmin: Admin
|
||||
SchoolAdmin !ident-ok: Admin
|
||||
@ -14,7 +14,7 @@ SchoolExamDiscouragedModes: Exam designs to warn against
|
||||
ExamCloseMode: Exam closure
|
||||
SchoolUpdated ssh: Successfully edited #{ssh}
|
||||
SchoolTitle ssh: Department „#{ssh}“
|
||||
TitleSchoolNew: Neues Institut anlegen
|
||||
TitleSchoolNew: Create new department
|
||||
SchoolCreated ssh: Successfully created #{ssh}
|
||||
SchoolExists ssh: A department named „#{ssh}“ already exists
|
||||
SchoolAdmin: Admin
|
||||
|
||||
@ -8,12 +8,12 @@ CsvPresetExcel: Excel-Kompatibel
|
||||
CsvCustom: Benutzerdefiniert
|
||||
CsvDelimiter: Trennzeichen
|
||||
CsvUseCrLf: Zeilenumbrüche
|
||||
CsvQuoting: Quoting
|
||||
CsvQuoting !ident-ok: Quoting
|
||||
CsvQuotingTip: Wann sollen Anführungszeichen (") um Felder platziert werden, um Interpretation von im Feld enthaltenen Zeichen als Trennzeichen zu verhindern?
|
||||
CsvEncoding: Encoding
|
||||
CsvEncoding !ident-ok: Encoding
|
||||
CsvEncodingTip: CSV-Dateien können in einer anderen Zeichenkodierung als dem vom System standardmäßig verwendeten UTF-8 exportiert werden. Beachten Sie dass es bei nicht-UTF-8 Zeichenkodierungen wmgl. zu Darstellungsproblemen mit Sonderzeichen kommt.
|
||||
CsvUTF8: UTF-8 (Unicode)
|
||||
CsvCP1252: Windows CP-1252 ("ANSI")
|
||||
CsvUTF8 !ident-ok: UTF-8 (Unicode)
|
||||
CsvCP1252 !ident-ok: Windows CP-1252 ("ANSI")
|
||||
CsvDelimiterNull: Null-Byte
|
||||
CsvDelimiterTab: Tabulator
|
||||
CsvDelimiterComma: Komma
|
||||
@ -22,8 +22,8 @@ CsvDelimiterSemicolon: Strichpunkt
|
||||
CsvDelimiterBar: Senkrechter Strich
|
||||
CsvDelimiterSpace: Leerzeichen
|
||||
CsvDelimiterUnitSep: Teilgruppentrennzeichen
|
||||
CsvCrLf: DOS (CRLF)
|
||||
CsvLf: Unix (LF)
|
||||
CsvCrLf !ident-ok: DOS (CRLF)
|
||||
CsvLf !ident-ok: Unix (LF)
|
||||
CsvQuoteNone: Nie
|
||||
CsvQuoteMinimal: Nur wenn nötig
|
||||
CsvQuoteAll: Immer
|
||||
@ -32,4 +32,4 @@ CsvChangeOptionsLabel: Export-Optionen
|
||||
CsvPresetXlsx: .xlsx Dateien (ECMA-376; Excel ≥2010)
|
||||
CsvFormatField: Dateiformat
|
||||
CsvFormatCsv: .csv (Comma-Separated Values)
|
||||
CsvFormatXlsx: .xlsx (Office Open XML)
|
||||
CsvFormatXlsx !ident-ok: .xlsx (Office Open XML)
|
||||
|
||||
@ -109,7 +109,7 @@ SubmissionGroupName: Group name
|
||||
TitleChangeUserDisplayEmail: Set display email
|
||||
LanguageChanged: Language changed successfully
|
||||
|
||||
AllocNotifyNewCourseDefault: Systemweite Einstellung
|
||||
AllocNotifyNewCourseForceOff: Nein
|
||||
AllocNotifyNewCourseForceOn: Ja
|
||||
AllocNotifyNewCourseDefault: System-wide setting
|
||||
AllocNotifyNewCourseForceOff: No
|
||||
AllocNotifyNewCourseForceOn: Yes
|
||||
Settings: Settings
|
||||
@ -1,6 +1,6 @@
|
||||
Ident: Identifikation
|
||||
AuthModeSet: Authentifizierung
|
||||
NameSet: Name
|
||||
NameSet !ident-ok: Name
|
||||
UserCreated: Account erstellt
|
||||
LastLogin: Letzter Login
|
||||
|
||||
|
||||
@ -12,7 +12,7 @@ SystemMessageAuthenticatedOnly: Nur angemeldet
|
||||
SystemMessageSeverity: Schwere
|
||||
SystemMessagePriority: Priorität
|
||||
SystemMessagePriorityNegative: Priorität darf nicht negativ sein
|
||||
SystemMessageId: Id
|
||||
SystemMessageId !ident-ok: Id
|
||||
SystemMessageSummaryContent: Zusammenfassung / Inhalt
|
||||
SystemMessageSummary: Zusammenfassung
|
||||
SystemMessageContent: Inhalt
|
||||
|
||||
@ -11,7 +11,7 @@ LectureStart: Beginn Vorlesungen
|
||||
TermEdited tid@TermId: Semester #{tid} erfolgreich editiert.
|
||||
TermNewTitle: Semester editieren/anlegen.
|
||||
InvalidInput: Eingaben bitte korrigieren.
|
||||
Term: Semester
|
||||
Term !ident-ok: Semester
|
||||
TermPlaceholder: W/S + vierstellige Jahreszahl
|
||||
TermStartDay: Erster Tag
|
||||
TermStartDayTooltip: Üblicherweise immer 1. April oder 1. Oktober
|
||||
|
||||
@ -18,7 +18,7 @@ LdapSyncedBefore: Letzte LDAP-Synchronisation vor
|
||||
UserSystemFunctions: Systemweite Rollen
|
||||
UserSystemFunctionsSaved: Systemweite Rollen gespeichert
|
||||
UserSystemFunctionsNotChanged: Es wurden keine systemweiten Rollen angepasst
|
||||
AuthPWHash pwHash@Text: Uni2work
|
||||
AuthPWHash pwHash@Text !ident-ok: Uni2work
|
||||
AuthPWHashAlreadyConfigured: Nutzer:in meldet sich bereits per Uni2work-Kennung an
|
||||
AuthPWHashConfigured: Nutzer:in meldet sich nun per Uni2work-Kennung an
|
||||
UsersCourseSchool: Institut
|
||||
@ -32,7 +32,7 @@ AuthLDAPLookupFailed: Nutzer:in konnte aufgrund eines LDAP-Fehlers nicht nachges
|
||||
AuthLDAPInvalidLookup: Bestehender Nutzer/Bestehende Nutzerin konnte nicht eindeutig einem LDAP-Eintrag zugeordnet werden
|
||||
AuthLDAPAlreadyConfigured: Nutzer:in meldet sich bereits per Campus-Kennung in Uni2work an
|
||||
AuthLDAPConfigured: Nutzer:in meldet sich nun per Campus-Kennung in Uni2work an
|
||||
AuthLDAP: Campus
|
||||
AuthLDAP !ident-ok: LMU-Account
|
||||
PasswordResetQueued: Link zum Passwort-Zurücksetzen versandt
|
||||
UserAssimilateUser: Benutzer:in
|
||||
AssimilateUserNotFound: E-Mail Adresse konnte keinem Benutzer/keiner Benutzerin zugeordnet werden
|
||||
@ -76,4 +76,4 @@ AllUsersLdapSync: Alle LDAP-Synchronisieren
|
||||
UserHijack: Sitzung übernehmen
|
||||
AuthKindLDAP: Campus-Kennung
|
||||
AuthKindPWHash: Uni2work-Kennung
|
||||
Name: Name
|
||||
Name !ident-ok: Name
|
||||
@ -32,7 +32,7 @@ AuthLDAPLookupFailed: User could not be looked up due to a LDAP error
|
||||
AuthLDAPInvalidLookup: Existing user could not be uniquely matched with a LDAP entry
|
||||
AuthLDAPAlreadyConfigured: User already logs in using their campus account
|
||||
AuthLDAPConfigured: User now logs in using their campus account
|
||||
AuthLDAP: Campus
|
||||
AuthLDAP: LMU-Account
|
||||
PasswordResetQueued: Sent link to reset password
|
||||
UserAssimilateUser: User
|
||||
AssimilateUserNotFound: Email could not be resolved to an user
|
||||
|
||||
@ -4,7 +4,7 @@ WorkflowScopeKindSchool: Pro Institut
|
||||
WorkflowScopeKindTermSchool: Pro Institut & Semester
|
||||
WorkflowScopeKindCourse: Pro Veranstaltung
|
||||
WorkflowDefinitionScope: Bereich
|
||||
WorkflowDefinitionName: Name
|
||||
WorkflowDefinitionName !ident-ok: Name
|
||||
WorkflowDefinitionDescriptions: Beschreibung
|
||||
WorkflowDefinitionDescriptionsLanguageExists: Eine Beschreibung in dieser Sprache existiert bereits
|
||||
WorkflowDefinitionGraph: Spezifikation
|
||||
@ -26,7 +26,7 @@ WorkflowDefinitionWarningLinterIssues: Es sind folgende Linter issues aufgetrete
|
||||
|
||||
WorkflowDefinitionListTitle: Workflow-Definitionen
|
||||
WorkflowDefinitionInstanceCount: Instanzen
|
||||
WorkflowDefinitionWorkflowCount: Workflows
|
||||
WorkflowDefinitionWorkflowCount !ident-ok: Workflows
|
||||
WorkflowDefinitionConcreteInstanceCount num@Int64: #{num} Instanzen
|
||||
WorkflowDefinitionConcreteWorkflowCount num@Int64: #{num} Workflows
|
||||
WorkflowDefinitionDeleteQuestion: Wollen Sie die unten aufgeführte Workflow-Definition wirklich löschen?
|
||||
@ -35,7 +35,7 @@ WorkflowDefinitionInstantiateTitle: Workflow-Definition instanziieren
|
||||
WorkflowDefinitionInstantiated: Instanz angelegt
|
||||
|
||||
WorkflowScope: Bereich
|
||||
WorkflowInstanceName: Name
|
||||
WorkflowInstanceName !ident-ok: Name
|
||||
WorkflowInstanceCategory: Kategorie
|
||||
WorkflowInstanceCollision: Es existiert bereits eine Workflow-Instanz mit diesem Namen und Bereich
|
||||
WorkflowInstanceListTitle: Workflow-Instanzen
|
||||
@ -44,7 +44,7 @@ WorkflowInstanceDescriptions: Instanz-Beschreibung
|
||||
WorkflowInstanceDescriptionsLanguageExists: Eine Instanz-Beschreibung in dieser Sprache existiert bereits
|
||||
WorkflowInstanceCreated: Instanz angelegt
|
||||
WorkflowInstanceDescriptionTitle: Instanz-Titel
|
||||
WorkflowInstanceWorkflowCount: Workflows
|
||||
WorkflowInstanceWorkflowCount !ident-ok: Workflows
|
||||
|
||||
WorkflowInstanceInitiateSuccess: Workflow erfolgreich initiiert
|
||||
|
||||
@ -58,8 +58,8 @@ GlobalWorkflowInstancesTitle: Workflows (Systemweit)
|
||||
GlobalWorkflowInstanceInitiateHeading workflowInstanceTitle@Text: Worklow initiieren: #{workflowInstanceTitle}
|
||||
GlobalWorkflowInstanceInitiateTitle: Worklow initiieren
|
||||
|
||||
SchoolWorkflowInstancesHeading ssh@SchoolId: Workflows (#{ssh})
|
||||
SchoolWorkflowInstancesTitle ssh@SchoolId: Workflows (#{ssh})
|
||||
SchoolWorkflowInstancesHeading ssh@SchoolId !ident-ok: Workflows (#{ssh})
|
||||
SchoolWorkflowInstancesTitle ssh@SchoolId !ident-ok: Workflows (#{ssh})
|
||||
|
||||
SchoolWorkflowInstanceInitiateHeading ssh@SchoolId workflowInstanceTitle@Text: Worklow initiieren: #{ssh}, #{workflowInstanceTitle}
|
||||
SchoolWorkflowInstanceInitiateTitle ssh@SchoolId: Worklow initiieren: #{ssh}
|
||||
@ -89,7 +89,7 @@ WorkflowWorkflowWorkflowHistoryActionLabel: Aktion
|
||||
WorkflowWorkflowWorkflowHistoryFromLabel: Vorheriger Zustand
|
||||
WorkflowWorkflowWorkflowHistoryToLabel: Neuer Zustand
|
||||
WorkflowWorkflowWorkflowHistoryPayloadLabel: Datensatz-Änderungen
|
||||
WorkflowWorkflowFilesArchiveName wwCID@CryptoFileNameWorkflowWorkflow wpl@WorkflowPayloadLabel stCID@CryptoUUIDWorkflowStateIndex: #{foldCase (toPathPiece wwCID)}-#{foldCase (toPathPiece stCID)}-#{foldCase (foldMap unidecode (toPathPiece wpl))}.zip
|
||||
WorkflowWorkflowFilesArchiveName wwCID@CryptoFileNameWorkflowWorkflow wpl@WorkflowPayloadLabel stCID@CryptoUUIDWorkflowStateIndex !ident-ok: #{foldCase (toPathPiece wwCID)}-#{foldCase (toPathPiece stCID)}-#{foldCase (foldMap unidecode (toPathPiece wpl))}.zip
|
||||
WorkflowWorkflowWorkflowStateHeading: Zustand/Daten
|
||||
WorkflowWorkflowWorkflowPayloadHeading: Aktueller Datensatz
|
||||
WorkflowWorkflowWorkflowStateStateLabel: Aktueller Zustand
|
||||
@ -102,14 +102,14 @@ WorkflowPayloadBoolTrue: Ja
|
||||
WorkflowPayloadBoolFalse: Nein
|
||||
WorkflowPayloadUserGone: Gelöschte:r Benutzer:in
|
||||
|
||||
TopWorkflowInstancesHeading: Workflows
|
||||
TopWorkflowInstancesTitle: Workflows
|
||||
TopWorkflowInstancesHeading !ident-ok: Workflows
|
||||
TopWorkflowInstancesTitle !ident-ok: Workflows
|
||||
|
||||
GlobalWorkflowWorkflowWorkflowHeading workflowWorkflowId@CryptoFileNameWorkflowWorkflow: Workflow #{toPathPiece workflowWorkflowId}
|
||||
GlobalWorkflowWorkflowWorkflowTitle workflowWorkflowId@CryptoFileNameWorkflowWorkflow: Workflow #{toPathPiece workflowWorkflowId}
|
||||
GlobalWorkflowWorkflowWorkflowHeading workflowWorkflowId@CryptoFileNameWorkflowWorkflow !ident-ok: Workflow #{toPathPiece workflowWorkflowId}
|
||||
GlobalWorkflowWorkflowWorkflowTitle workflowWorkflowId@CryptoFileNameWorkflowWorkflow !ident-ok: Workflow #{toPathPiece workflowWorkflowId}
|
||||
|
||||
SchoolWorkflowWorkflowWorkflowHeading ssh@SchoolId workflowWorkflowId@CryptoFileNameWorkflowWorkflow: Workflow #{ssh}, #{toPathPiece workflowWorkflowId}
|
||||
SchoolWorkflowWorkflowWorkflowTitle ssh@SchoolId workflowWorkflowId@CryptoFileNameWorkflowWorkflow: Workflow #{ssh}, #{toPathPiece workflowWorkflowId}
|
||||
SchoolWorkflowWorkflowWorkflowHeading ssh@SchoolId workflowWorkflowId@CryptoFileNameWorkflowWorkflow !ident-ok: Workflow #{ssh}, #{toPathPiece workflowWorkflowId}
|
||||
SchoolWorkflowWorkflowWorkflowTitle ssh@SchoolId workflowWorkflowId@CryptoFileNameWorkflowWorkflow !ident-ok: Workflow #{ssh}, #{toPathPiece workflowWorkflowId}
|
||||
|
||||
WorkflowWorkflowListScopeTitle rScope@Text: Laufende Workflows - #{rScope}
|
||||
WorkflowWorkflowListScopeHeading rScope@Text: Laufende Workflows (#{rScope})
|
||||
@ -132,7 +132,7 @@ WorkflowWorkflowListIsFinal: Abgeschlossen?
|
||||
|
||||
WorkflowGraphFormUploadIsDirectory: Upload ist Verzeichnis
|
||||
WorkflowGraphFormInvalidNumberOfFiles: Es muss genau eine Datei hochgeladen werden
|
||||
WorkflowCourseOption tid@TermId ssh@SchoolId coursen@CourseName: #{tid} - #{ssh} - #{coursen}
|
||||
WorkflowCourseOption tid@TermId ssh@SchoolId coursen@CourseName !ident-ok: #{tid} - #{ssh} - #{coursen}
|
||||
YAMLFieldDecodeFailure yamlFailure@String: Konnte YAML nicht parsen: #{yamlFailure}
|
||||
|
||||
WGFTextInput: Textfeld
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
#messages or constructors that are used all over the code
|
||||
|
||||
Logo: Uni2work
|
||||
Logo !ident-ok: Uni2work
|
||||
EmailInvitationWarning: Diese Adresse konnte keinem Uni2work-Benutzer/keiner Uni2work-Benutzerin zugeordnet werden. Es wird eine Einladung per E-Mail versandt.
|
||||
BoolIrrelevant: —
|
||||
BoolIrrelevant !ident-ok: —
|
||||
FieldPrimary: Hauptfach
|
||||
FieldSecondary: Nebenfach
|
||||
MultiEmailFieldTip: Es sind mehrere, Komma-separierte, E-Mail-Adressen möglich
|
||||
|
||||
@ -1 +1 @@
|
||||
PrintDebugForStupid name@Text: Debug message "#{name}"
|
||||
PrintDebugForStupid name@Text !ident-ok: Debug message "#{name}"
|
||||
|
||||
@ -44,8 +44,8 @@ BtnAcceptApplications: Bewerbungen akzeptieren
|
||||
BtnAcceptApplicationsTip: Mit dem untigen Knopf können Sie den Kurs (höchstens bis zur angegeben Maximalkapazität, falls eingestellt) mit Bewerbern auffüllen. Die Bewertungen der Bewerbungen werden dabei berücksichtigt (Unbewertet wird behandelt wie eine Note zwischen 2.3 und 2.7). Bewerber mit Veto oder 5.0 werden nicht angemeldet.
|
||||
BtnExamAutoOccurrenceCalculate: Verteilungstabelle berechnen
|
||||
BtnExamAutoOccurrenceAccept: Verteilung akzeptieren
|
||||
BtnExamAutoOccurrenceNudgeUp: +
|
||||
BtnExamAutoOccurrenceNudgeDown: -
|
||||
BtnExamAutoOccurrenceNudgeUp !ident-ok: +
|
||||
BtnExamAutoOccurrenceNudgeDown !ident-ok: -
|
||||
BtnSetDisplayEmail: E-Mail-Adresse setzen
|
||||
BtnAuthLDAP: Auf Campus-Kennung umstellen
|
||||
BtnAuthPWHash: Auf Uni2work-Kennung umstellen
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
MassInputAddDimension: +
|
||||
MassInputDeleteCell: -
|
||||
MassInputAddDimension !ident-ok: +
|
||||
MassInputDeleteCell !ident-ok: -
|
||||
|
||||
@ -5,7 +5,7 @@ BreadcrumbCryptoIDDispatch: CryptoID-Weiterleitung
|
||||
BreadcrumbCourseAppsFiles: Bewerbungsdateien
|
||||
BreadcrumbCourseNotes: Kursnotizen
|
||||
BreadcrumbHiWis: Korrektor:innen
|
||||
BreadcrumbMaterial: Material
|
||||
BreadcrumbMaterial !ident-ok: Material
|
||||
BreadcrumbSheet: Übungsblatt
|
||||
BreadcrumbTutorial: Tutorium
|
||||
BreadcrumbExam: Prüfung
|
||||
@ -16,7 +16,7 @@ BreadcrumbCourseFavourite: Favorisieren
|
||||
BreadcrumbCourse: Kurs
|
||||
BreadcrumbAllocationRegister: Teilnahme registrieren
|
||||
BreadcrumbAllocation: Zentralanmeldung
|
||||
BreadcrumbTerm: Semester
|
||||
BreadcrumbTerm !ident-ok: Semester
|
||||
BreadcrumbSchool: Institut
|
||||
BreadcrumbUser: Benutzer:in
|
||||
BreadcrumbStatic: Statische Resource
|
||||
@ -37,10 +37,10 @@ BreadcrumbAllocationInfo: Ablauf einer Zentralanmeldung
|
||||
BreadcrumbCourseParticipantInvitation: Einladung als Kursteilnehmer:in
|
||||
BreadcrumbMaterialArchive: Archiv
|
||||
BreadcrumbMaterialFile: Datei
|
||||
BreadcrumbMaterialVideo: Video
|
||||
BreadcrumbMaterialVideo !ident-ok: Video
|
||||
BreadcrumbSheetArchive: Dateien
|
||||
BreadcrumbSheetIsCorrector: Korrektor:in-Überprüfung
|
||||
BreadcrumbSheetPseudonym: Pseudonym
|
||||
BreadcrumbSheetPseudonym !ident-ok: Pseudonym
|
||||
BreadcrumbSheetCorrectorInvite: Einladung als Korrektor:in
|
||||
BreadcrumbSheetFile: Datei
|
||||
BreadcrumbTutorialRegister: Anmelden
|
||||
@ -54,7 +54,7 @@ BreadcrumbCourseNewsFile: Datei
|
||||
BreadcrumbExternalExam: Externe Prüfung
|
||||
BreadcrumbExternalExamList: Externe Prüfungen
|
||||
BreadcrumbExternalExamNew: Neue externe Prüfung
|
||||
BreadcrumbExternalExamShow coursen@CourseName examn@ExamName: #{coursen}, #{examn}
|
||||
BreadcrumbExternalExamShow coursen@CourseName examn@ExamName !ident-ok: #{coursen}, #{examn}
|
||||
BreadcrumbExternalExamEdit: Editieren
|
||||
BreadcrumbExternalExamUsers: Teilnehmer:in
|
||||
BreadcrumbExternalExamGrades: Prüfungsleistungen
|
||||
@ -70,13 +70,13 @@ BreadcrumbAllocationCompute: Platzvergabe berechnen
|
||||
BreadcrumbAllocationAccept: Platzvergabe akzeptieren
|
||||
BreadcrumbAllocationAddUser: Bewerber:in hinzufügen
|
||||
BreadcrumbMessageHide: Verstecken
|
||||
BreadcrumbFaq: FAQ
|
||||
BreadcrumbFaq !ident-ok: FAQ
|
||||
BreadcrumbSheetPersonalisedFiles: Personalisierte Dateien herunterladen
|
||||
BreadcrumbCourseSheetPersonalisedFiles: Vorlage für personalisierte Übungsblatt-Dateien herunterladen
|
||||
BreadcrumbAdminCrontab: Crontab
|
||||
BreadcrumbAdminCrontab !ident-ok: Crontab
|
||||
BreadcrumbAdminWorkflowDefinitionList: Workflow-Definitionen
|
||||
BreadcrumbAdminWorkflowDefinitionNew: Neue Workflow-Definition
|
||||
BreadcrumbAdminWorkflowDefinitionEdit renderedWorkflowScope'@Text wfdn@WorkflowDefinitionName: #{wfdn} (#{renderedWorkflowScope'})
|
||||
BreadcrumbAdminWorkflowDefinitionEdit renderedWorkflowScope'@Text wfdn@WorkflowDefinitionName !ident-ok: #{wfdn} (#{renderedWorkflowScope'})
|
||||
BreadcrumbAdminWorkflowDefinitionDelete: Löschen
|
||||
BreadcrumbAdminWorkflowDefinitionInstantiate: Instanziieren
|
||||
BreadcrumbAdminWorkflowInstanceList: Workflow-Instanzen
|
||||
@ -84,26 +84,25 @@ BreadcrumbAdminWorkflowInstanceNew: Neue Workflow-Instanz
|
||||
BreadcrumbAdminWorkflowInstanceEdit: Instanz bearbeiten
|
||||
BreadcrumbAdminWorkflowWorkflowList: Initiierte Workflows
|
||||
BreadcrumbAdminWorkflowWorkflowNew: Workflow initiieren
|
||||
BreadcrumbWorkflowInstanceEdit win@WorkflowInstanceName: #{win}
|
||||
BreadcrumbWorkflowInstanceEdit win@WorkflowInstanceName !ident-ok: #{win}
|
||||
BreadcrumbWorkflowInstanceDelete: Löschen
|
||||
BreadcrumbWorkflowInstanceWorkflowList: Laufende Workflows
|
||||
BreadcrumbWorkflowInstanceInitiate: Workflow starten
|
||||
BreadcrumbWorkflowInstanceList: Workflows
|
||||
BreadcrumbWorkflowInstanceList !ident-ok: Workflows
|
||||
BreadcrumbWorkflowInstanceNew: Neuer Workflow
|
||||
BreadcrumbWorkflowWorkflowList: Laufende Workflows
|
||||
BreadcrumbWorkflowWorkflow workflow@CryptoFileNameWorkflowWorkflow: #{toPathPiece workflow}
|
||||
BreadcrumbWorkflowWorkflow workflow@CryptoFileNameWorkflowWorkflow !ident-ok: #{toPathPiece workflow}
|
||||
BreadcrumbWorkflowWorkflowFiles: Dateien
|
||||
BreadcrumbWorkflowWorkflowEdit: Editieren
|
||||
BreadcrumbWorkflowWorkflowDelete: Löschen
|
||||
BreadcrumbGlobalWorkflowInstanceList: Systemweite Workflows
|
||||
BreadcrumbTopWorkflowInstanceList: Workflows
|
||||
BreadcrumbTopWorkflowInstanceList !ident-ok: Workflows
|
||||
BreadcrumbTopWorkflowWorkflowList: Laufende Workflows
|
||||
BreadcrumbError: Fehler
|
||||
BreadcrumbMenu: Login
|
||||
BreadcrumbUserAdd: Benutzer:in anlegen
|
||||
BreadcrumbUserNotifications: Benachrichtigungs-Einstellungen
|
||||
BreadcrumbUserPassword: Passwort
|
||||
BreadcrumbAdminHeading: Administration
|
||||
BreadcrumbAdminHeading !ident-ok: Administration
|
||||
BreadcrumbAdminFeaturesHeading: Studiengänge
|
||||
BreadcrumbAdminTest: Admin-Demo
|
||||
BreadcrumbAdminErrMsg: Fehlermeldung entschlüsseln
|
||||
@ -167,7 +166,7 @@ BreadcrumbSubmissionOwn: Abgabe
|
||||
BreadcrumbCorrection: Korrektur
|
||||
BreadcrumbSubmissionDelete: Abgabe löschen
|
||||
BreadcrumbCorrectorAssignTitle: Korrektor:in zuweisen
|
||||
BreadcrumbMaterialList: Material
|
||||
BreadcrumbMaterialList !ident-ok: Material
|
||||
BreadcrumbMaterialNew: Neues Material veröffentlichen
|
||||
BreadcrumbMaterialEdit: Material bearbeiten
|
||||
BreadcrumbMaterialDelete: Material löschen
|
||||
@ -178,5 +177,5 @@ BreadcrumbCorrectionsCreate: Abgaben registrieren
|
||||
BreadcrumbCorrectionsGrade: Korrekturen eintragen
|
||||
BreadcrumbMessageList: Systemnachrichten
|
||||
BreadcrumbGlossary: Begriffsverzeichnis
|
||||
BreadcrumbLogin: Login
|
||||
BreadcrumbLogin !ident-ok: Login
|
||||
BreadcrumbNews: Aktuell
|
||||
@ -99,7 +99,6 @@ BreadcrumbGlobalWorkflowInstanceList: System-wide workflows
|
||||
BreadcrumbTopWorkflowInstanceList: Workflows
|
||||
BreadcrumbTopWorkflowWorkflowList: Running workflows
|
||||
BreadcrumbError: Error
|
||||
BreadcrumbMenu: Login
|
||||
BreadcrumbUserAdd: Add user
|
||||
BreadcrumbUserNotifications: Notification settings
|
||||
BreadcrumbUserPassword: Password
|
||||
@ -161,7 +160,7 @@ BreadcrumbSheetDelete: Delete exercise sheet
|
||||
BreadcrumbSubmissions: Submissions
|
||||
BreadcrumbSubmissionNew: Create submission
|
||||
BreadcrumbSubmissionOwn: Submission
|
||||
BreadcrumbCorrection: Korrektur
|
||||
BreadcrumbCorrection: Correction
|
||||
BreadcrumbSubmissionDelete: Delete submission
|
||||
BreadcrumbCorrectorAssignTitle: Assign corrector
|
||||
BreadcrumbMaterialList: Material
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
MenuAdminHeading: Administration
|
||||
MenuAdminHeading !ident-ok: Administration
|
||||
MenuAdminFeaturesHeading: Studiengänge
|
||||
MenuInfoLecturerTitle: Hinweise für Veranstalter:innen
|
||||
MenuInfoLecturerCourses: Veranstaltungen
|
||||
@ -22,8 +22,8 @@ MenuInstance: Instanz-Identifikation
|
||||
MenuHealth: Instanz-Zustand
|
||||
MenuHelp: Hilfe
|
||||
MenuProfile: Anpassen
|
||||
MenuLogin: Login
|
||||
MenuLogout: Logout
|
||||
MenuLogin !ident-ok: Login
|
||||
MenuLogout !ident-ok: Logout
|
||||
MenuAllocationList: Zentralanmeldungen
|
||||
MenuCourseList: Kurse
|
||||
MenuCourseMembers: Kursteilnehmer:innen
|
||||
@ -51,7 +51,7 @@ MenuCorrections: Korrekturen
|
||||
MenuCorrectionsOwn: Meine Korrekturen
|
||||
MenuSubmissions: Abgaben
|
||||
MenuSheetList: Übungsblätter
|
||||
MenuMaterialList: Material
|
||||
MenuMaterialList !ident-ok: Material
|
||||
MenuMaterialNew: Neues Material veröffentlichen
|
||||
MenuMaterialEdit: Material bearbeiten
|
||||
MenuMaterialDelete: Material löschen
|
||||
@ -107,11 +107,11 @@ MenuAllocationPriorities: Zentrale Dringlichkeiten
|
||||
MenuAllocationCompute: Platzvergabe berechnen
|
||||
|
||||
MenuAllocationAddUser: Bewerber:in hinzufügen
|
||||
MenuFaq: FAQ
|
||||
MenuFaq !ident-ok: FAQ
|
||||
MenuSheetPersonalisedFiles: Personalisierte Dateien herunterladen
|
||||
MenuCourseSheetPersonalisedFiles: Vorlage für personalisierte Übungsblatt-Dateien herunterladen
|
||||
MenuAdminCrontab: Crontab
|
||||
MenuAdminWorkflowDefinitionList: Workflows
|
||||
MenuAdminCrontab !ident-ok: Crontab
|
||||
MenuAdminWorkflowDefinitionList !ident-ok: Workflows
|
||||
MenuAdminWorkflowDefinitionNew: Neue Workflow-Definition
|
||||
MenuAdminWorkflowDefinitionDelete: Löschen
|
||||
MenuAdminWorkflowInstanceList: Workflow-Instanzen
|
||||
@ -125,9 +125,9 @@ MenuWorkflowWorkflowList: Laufende Workflows
|
||||
MenuWorkflowWorkflowEdit: Editieren
|
||||
MenuWorkflowWorkflowDelete: Löschen
|
||||
MenuGlobalWorkflowInstanceList: Systemweite Workflows
|
||||
MenuTopWorkflowInstanceList: Workflows
|
||||
MenuTopWorkflowInstanceList !ident-ok: Workflows
|
||||
MenuTopWorkflowWorkflowList: Laufende Workflows
|
||||
MenuTopWorkflowWorkflowListHeader: Workflows
|
||||
MenuTopWorkflowWorkflowListHeader !ident-ok: Workflows
|
||||
MenuGlossary: Begriffsverzeichnis
|
||||
MenuVersion: Versionsgeschichte
|
||||
MenuCourseNewsNew: Neue Kursnachricht
|
||||
|
||||
@ -46,7 +46,7 @@ MenuTermCreate: Create new semester
|
||||
MenuCourseNew: Create new course
|
||||
MenuTermEdit: Edit semester
|
||||
MenuTermCurrent: Current semester
|
||||
MenuCorrection: Korrektur
|
||||
MenuCorrection: Correction
|
||||
MenuCorrections: Corrections
|
||||
MenuCorrectionsOwn: My corrections
|
||||
MenuSubmissions: Submissions
|
||||
|
||||
@ -31,7 +31,7 @@ SubmissionsCourse tid@TermId ssh@SchoolId csh@CourseShorthand: Alle Abgaben Kurs
|
||||
SubmissionsSheet sheetName@SheetName: Abgaben für #{sheetName}
|
||||
SheetList tid@TermId ssh@SchoolId csh@CourseShorthand: #{tid}-#{ssh}-#{csh} Übersicht Übungsblätter
|
||||
SheetNewHeading tid@TermId ssh@SchoolId csh@CourseShorthand: #{tid}-#{ssh}-#{csh} Neues Übungsblatt anlegen
|
||||
SheetTitle tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName: #{tid}-#{ssh}-#{csh} #{sheetName}
|
||||
SheetTitle tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName !ident-ok: #{tid}-#{ssh}-#{csh} #{sheetName}
|
||||
SheetTitleNew tid@TermId ssh@SchoolId csh@CourseShorthand : #{tid}-#{ssh}-#{csh}: Neues Übungsblatt
|
||||
SheetEditHead tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName: #{tid}-#{ssh}-#{csh} #{sheetName} editieren
|
||||
SheetDelHead tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName: #{sheetName} wirklich aus Kurs #{tid}-#{ssh}-#{csh} herauslöschen? Alle assoziierten Abgaben und Korrekturen gehen ebenfalls verloren!
|
||||
|
||||
@ -1,14 +1,14 @@
|
||||
ExamOccurrenceStart: Prüfungsbeginn
|
||||
#general table-discriptions
|
||||
TableEmail: Email
|
||||
TableEmail: E-Mail
|
||||
TableStudyTerm: Studiengang
|
||||
TableStudyFeatureAge: Fachsemester
|
||||
TableStudyFeatureDegree: Abschluss
|
||||
TableStudyFeatureType:
|
||||
TableStudyFeatureType !empty-ok:
|
||||
TableStudyFeatureValid: Aktiv
|
||||
TableStudyFeatureUpdate: Abgeglichen
|
||||
TableHeadingFilter: Filter
|
||||
TableTerm: Semester
|
||||
TableHeadingFilter !ident-ok: Filter
|
||||
TableTerm !ident-ok: Semester
|
||||
TableCourseSchool: Institut
|
||||
TableSubmissionGroup: Feste Abgabegruppe
|
||||
TableNoSubmissionGroup: Keine feste Abgabegruppe
|
||||
@ -18,7 +18,7 @@ TableSchool: Institut
|
||||
TableCourse: Kurs
|
||||
TableCourseMembers: Teilnehmer:innen
|
||||
TableExamOccurrence: Termin/Raum
|
||||
TableExamName: Name
|
||||
TableExamName !ident-ok: Name
|
||||
TableExamTime: Termin
|
||||
TableExamRegistration: Prüfungsanmeldung
|
||||
TableExamResult: Prüfungsergebnis
|
||||
@ -44,7 +44,7 @@ TableTutorialName: Bezeichnung
|
||||
TableTutorialType: Art
|
||||
TableTutorialRoom: Regulärer Raum
|
||||
TableTutorialRoomHidden: Raum nur für Teilnehmer
|
||||
TableTutorialRoomIsUnset: —
|
||||
TableTutorialRoomIsUnset !ident-ok: —
|
||||
TableTutorialRoomIsHidden: Raum wird nur Teilnehmern angezeigt
|
||||
TableTutorialTime: Zeit
|
||||
TableTutorialDeregisterUntil: Abmeldungen bis
|
||||
@ -53,12 +53,12 @@ TableNoFilter: Keine Einschränkung
|
||||
TableUserMatriculation: Matrikelnummer
|
||||
TableColumnStudyFeatures: Studiendaten
|
||||
TableSchoolShort: Kürzel
|
||||
TableSchoolName: Name
|
||||
TableSchoolName !ident-ok: Name
|
||||
TableExamRegisterFrom: Anmeldung ab
|
||||
TableExamRegisterTo: Anmeldung bis
|
||||
TableAction: Aktion
|
||||
SelectColumn: Auswahl
|
||||
CsvExport: CSV-Export
|
||||
TableProportion c@Text of'@Text prop@Rational: #{c}/#{of'} (#{rationalToFixed2 (100 * prop)}%)
|
||||
TableProportionNoRatio c@Text of'@Text: #{c}/#{of'}
|
||||
TableProportion c@Text of'@Text prop@Rational !ident-ok: #{c}/#{of'} (#{rationalToFixed2 (100 * prop)}%)
|
||||
TableProportionNoRatio c@Text of'@Text !ident-ok: #{c}/#{of'}
|
||||
TableExamFinished: Ergebnisse sichtbar ab
|
||||
@ -30,4 +30,4 @@ TableCourseDescription: Beschreibung
|
||||
RowCount count@Int64: #{count} #{pluralDE count "passender Eintrag" "passende Einträge"} insgesamt
|
||||
JSONFieldDecodeFailure aesonFailure@String: Konnte JSON nicht parsen: #{aesonFailure}
|
||||
DBTIRowsMissing n@Int: #{pluralDE n "Eine Zeile ist" "Einige Zeilen sind"} aus der Datenbank verschwunden, seit das Formular für Sie generiert wurde
|
||||
Page num@Int64: #{num}
|
||||
Page num@Int64 !ident-ok: #{num}
|
||||
|
||||
@ -6,7 +6,7 @@ RGCourseCorrectors: Korrektor:innen
|
||||
RGCourseTutors: Tutor:innen
|
||||
RGCourseUnacceptedApplicants: Nicht akzeptierte Bewerber:innen
|
||||
RecipientToggleAll: Alle/Keine
|
||||
CommCourseTestSubject customSubject@Text: [TEST] #{customSubject}
|
||||
CommCourseTestSubject customSubject@Text !ident-ok: [TEST] #{customSubject}
|
||||
UtilCommCourseSubject: Kursmitteilung
|
||||
CommRecipients: Empfänger:innen
|
||||
CommRecipientsTip: Sie selbst erhalten immer eine Kopie der Nachricht
|
||||
@ -73,14 +73,14 @@ UtilExamResultGrade: Note
|
||||
UtilExamResultPass: Bestanden/Nicht Bestanden
|
||||
UtilExamResultNoShow: Nicht erschienen
|
||||
UtilExamResultVoided: Entwertet
|
||||
CourseOption tid@TermId ssh@SchoolId csh@CourseShorthand coursen@CourseName: #{tid} - #{ssh} - #{csh}: #{coursen}
|
||||
RoomReferenceNone: —
|
||||
RoomReferenceSimple: Text
|
||||
CourseOption tid@TermId ssh@SchoolId csh@CourseShorthand coursen@CourseName !ident-ok: #{tid} - #{ssh} - #{csh}: #{coursen}
|
||||
RoomReferenceNone !ident-ok: —
|
||||
RoomReferenceSimple !ident-ok: Text
|
||||
RoomReferenceLink: Link & Anweisungen
|
||||
RoomReferenceSimpleText: Raum
|
||||
RoomReferenceSimpleTextPlaceholder: Raum
|
||||
RoomReferenceLinkLink: Link
|
||||
RoomReferenceLinkLinkPlaceholder: URL
|
||||
RoomReferenceLinkLink !ident-ok: Link
|
||||
RoomReferenceLinkLinkPlaceholder !ident-ok: URL
|
||||
RoomReferenceLinkInstructions: Anweisungen
|
||||
RoomReferenceLinkInstructionsPlaceholder: Anweisungen
|
||||
|
||||
@ -92,8 +92,8 @@ InvitationCollision: Einladung konnte nicht angenommen werden da ein derartiger
|
||||
InvitationDeclined: Einladung wurde abgelehnt
|
||||
|
||||
#sheetType.hs
|
||||
SheetTypeBonus': Bonus
|
||||
SheetTypeNormal': Normal
|
||||
SheetTypeBonus' !ident-ok: Bonus
|
||||
SheetTypeNormal' !ident-ok: Normal
|
||||
SheetTypeInformational': Ohne Anrechung
|
||||
SheetTypeNotGraded: Keine Korrektur
|
||||
SheetGradingBonusIncluded: Erzielte Bonuspunkte wurden hier bereits zu den erreichten normalen Punkten hinzugezählt.
|
||||
@ -124,19 +124,19 @@ CorrectionInvisibleRatingNotDone: Die Bewertung ist nicht als „Abgeschlossen
|
||||
CorrectionInvisibleWarning: Die Bewertung dieser Abgabe ist aktuell für mindestens eine an der Abgabe beteiligte Person nicht sichtbar!
|
||||
CorrectionInvisibleReasons: Mögliche Gründe hierfür:
|
||||
|
||||
Plugin: Plugin
|
||||
Plugin !ident-ok: Plugin
|
||||
|
||||
PreviouslyUploadedInfo: Bereits hochgeladene Dateien
|
||||
PreviouslyUploadedDeletionInfo: Nur ausgewählte und unten hinzugefügte Dateien werden erneut hochgeladen
|
||||
AddMoreFiles: Weitere Dateien hinzufügen:
|
||||
MessageError: Fehler
|
||||
MessageWarning: Warnung
|
||||
MessageInfo: Information
|
||||
MessageInfo !ident-ok: Information
|
||||
MessageSuccess: Erfolg
|
||||
ShortFieldPrimary: HF
|
||||
ShortFieldSecondary: NF
|
||||
SheetGradingPassPoints': Bestehen nach Punkten
|
||||
SheetGradingPassBinary': Bestanden/Nicht bestanden
|
||||
SheetGradingPassAlways': Automatisch bestanden, sobald korrigiert
|
||||
SheetTypeNormal: Normal
|
||||
SheetTypeBonus: Bonus
|
||||
SheetTypeNormal !ident-ok: Normal
|
||||
SheetTypeBonus !ident-ok: Bonus
|
||||
@ -18,6 +18,7 @@ import qualified Data.Foldable as F
|
||||
import qualified Data.HashMap.Strict as HashMap
|
||||
import qualified Data.HashSet as HashSet
|
||||
import qualified Data.Map.Strict as Map
|
||||
import qualified Data.Set as Set
|
||||
|
||||
import qualified Text.Parsec as P
|
||||
import qualified Text.Parsec.Text.Lazy as P
|
||||
@ -28,6 +29,8 @@ import qualified Data.List.NonEmpty as NonEmpty
|
||||
|
||||
import qualified Data.Text as Text
|
||||
|
||||
import qualified Data.Char as Char
|
||||
|
||||
import Utils.TH.AlphaConversion (alphaConvE)
|
||||
|
||||
|
||||
@ -46,6 +49,7 @@ instance Semigroup (f (MsgDef f g)) => Semigroup (MsgFile f g) where
|
||||
data MsgDef f g = MsgDef
|
||||
{ msgDefVars :: InsOrdHashMap String (f (g TH.Type))
|
||||
, msgDefContent :: [MsgDefContent]
|
||||
, msgDefAnnotations :: Set MsgDefAnnotation
|
||||
} deriving (Generic, Typeable)
|
||||
|
||||
deriving stock instance Eq (f (g TH.Type)) => Eq (MsgDef f g)
|
||||
@ -55,6 +59,23 @@ data MsgDefContent = MsgDefContentLiteral String
|
||||
| MsgDefContentSplice Bool {- Recurse? -} TH.Exp
|
||||
deriving (Eq, Ord, Show, Generic, Typeable)
|
||||
|
||||
data MsgDefAnnotation = MsgDefIdenticalOk
|
||||
| MsgDefEmptyOk
|
||||
deriving (Eq, Ord, Read, Show, Generic, Typeable)
|
||||
|
||||
makePrisms ''MsgDefContent
|
||||
makePrisms ''MsgDefAnnotation
|
||||
makeLenses_ ''MsgDef
|
||||
|
||||
_msgDefAnnotation :: MsgDefAnnotation -> Lens' (MsgDef f g) Bool
|
||||
_msgDefAnnotation ann = _msgDefAnnotations . at ann . _Maybe
|
||||
|
||||
_msgDefIdenticalOk :: Lens' (MsgDef f g) Bool
|
||||
_msgDefIdenticalOk = _msgDefAnnotation MsgDefIdenticalOk
|
||||
|
||||
_msgDefEmptyOk :: Lens' (MsgDef f g) Bool
|
||||
_msgDefEmptyOk = _msgDefAnnotation MsgDefEmptyOk
|
||||
|
||||
|
||||
disambiguateMsgFile :: MsgFile NonEmpty Maybe -> Either (InsOrdHashSet String, InsOrdHashMap String (InsOrdHashSet String)) (MsgFile Identity Maybe)
|
||||
disambiguateMsgFile MsgFile{..}
|
||||
@ -105,8 +126,8 @@ unionsInsOrdHashMap :: (Foldable f, Eq k, Hashable k)
|
||||
-> InsOrdHashMap k (NonEmpty v)
|
||||
unionsInsOrdHashMap = F.foldl' (InsOrdHashMap.unionWith (<>)) InsOrdHashMap.empty
|
||||
|
||||
insOrdHashMapKeysSet :: InsOrdHashMap k v -> HashSet k
|
||||
insOrdHashMapKeysSet = HashMap.keysSet . InsOrdHashMap.toHashMap
|
||||
insOrdHashMapKeysSet :: (Eq k, Hashable k) => InsOrdHashMap k v -> InsOrdHashSet k
|
||||
insOrdHashMapKeysSet = InsOrdHashSet.fromList . map (view _1) . InsOrdHashMap.toList
|
||||
|
||||
|
||||
mkMessage :: TH.Name -- ^ Foundation type
|
||||
@ -168,10 +189,48 @@ mkMessageCommon genType prefix master datName folder defLang = do
|
||||
Just x -> return x
|
||||
|
||||
let allDefns = insOrdHashMapKeysSet $ msgFileContent defMsgFile
|
||||
extraDefns = flip HashMap.mapMaybe disambiguated $ \MsgFile{..} -> assertM' (not . HashSet.null) $ insOrdHashMapKeysSet msgFileContent `HashSet.difference` allDefns
|
||||
extraDefnsErrs = flip map (HashMap.toList extraDefns) $ \(lang, extra) -> "Language " <> unpack lang <> ":\n" <> indent 1 (intercalate ", " $ HashSet.toList extra)
|
||||
extraDefns = flip HashMap.mapMaybe disambiguated $ \MsgFile{..} -> assertM' (not . InsOrdHashSet.null) $ insOrdHashMapKeysSet msgFileContent `InsOrdHashSet.difference` allDefns
|
||||
extraDefnsErrs = flip map (HashMap.toList extraDefns) $ \(lang, extra) -> "Language " <> unpack lang <> ":\n" <> indent 1 (intercalate ", " $ InsOrdHashSet.toList extra)
|
||||
unless (null extraDefns) . fail $ "Extraneous message definitions:\n" <> indent 2 (unlines extraDefnsErrs)
|
||||
|
||||
let identical = filter isNonOkIdentical $ InsOrdHashSet.toList allDefns
|
||||
where
|
||||
isNonOkIdentical :: String -> Bool
|
||||
isNonOkIdentical defnName = not identicalOk && superSingular defns && allEqual defns
|
||||
where defns :: [[MsgDefContent]]
|
||||
defns = mapMaybe (fmap (msgDefContent . runIdentity) . InsOrdHashMap.lookup defnName . msgFileContent) $ HashMap.elems disambiguated
|
||||
|
||||
superSingular :: forall a. [a] -> Bool
|
||||
superSingular = \case
|
||||
_ : _ : _ -> True
|
||||
_other -> False
|
||||
|
||||
allEqual :: [[MsgDefContent]] -> Bool
|
||||
allEqual [] = True
|
||||
allEqual (x:xs) = all (roughEq x) xs
|
||||
|
||||
roughEq :: [MsgDefContent] -> [MsgDefContent] -> Bool
|
||||
roughEq xs ys = not (null xs && null ys) && xs == ys
|
||||
-- roughEq xs ys = fromMaybe False $ do
|
||||
-- let xs' = mapMaybe (^? _MsgDefContentLiteral) xs
|
||||
-- ys' = mapMaybe (^? _MsgDefContentLiteral) ys
|
||||
-- guard . not $ null xs' && null ys'
|
||||
-- return $ xs' == ys'
|
||||
|
||||
identicalOk = any (maybe False (view _msgDefIdenticalOk . runIdentity) . InsOrdHashMap.lookup defnName . msgFileContent) $ HashMap.elems disambiguated
|
||||
unless (null identical) . TH.reportWarning . indent' 2 $ "Message definitions identical for all languages:\n" <> indent 1 (intercalate ", " identical)
|
||||
|
||||
let empties = InsOrdHashMap.fromList . mapMaybe (\defn -> fmap (defn, ) . assertM' (not . HashSet.null) $ nonOkEmpties defn) $ InsOrdHashSet.toList allDefns
|
||||
where
|
||||
nonOkEmpties :: String -> HashSet Lang
|
||||
nonOkEmpties defnName | emptyOk = HashSet.empty
|
||||
| otherwise = HashMap.keysSet $ HashMap.filter (maybe False (isEmpty . msgDefContent . runIdentity) . InsOrdHashMap.lookup defnName . msgFileContent) disambiguated
|
||||
where isEmpty :: [MsgDefContent] -> Bool
|
||||
isEmpty = (&&) <$> all (is _MsgDefContentLiteral) <*> allOf (folded . _MsgDefContentLiteral . folded) Char.isSpace
|
||||
|
||||
emptyOk = any (maybe False (view _msgDefEmptyOk . runIdentity) . InsOrdHashMap.lookup defnName . msgFileContent) $ HashMap.elems disambiguated
|
||||
unless (InsOrdHashMap.null empties) . TH.reportWarning . indent' 2 $ "Message definitions empty for any language:\n" <> indent 1 (unlines . map (\(defn, langs) -> defn <> " (" <> intercalate ", " (map unpack $ HashSet.toList langs) <> ")") $ InsOrdHashMap.toList empties)
|
||||
|
||||
let defnName defn = TH.mkName $ prefix <> defn
|
||||
|
||||
execWriterT @_ @[TH.Dec] $ do
|
||||
@ -189,10 +248,11 @@ mkMessageCommon genType prefix master datName folder defLang = do
|
||||
tellMPoint $ TH.dataD (TH.cxt []) datName [] Nothing datCons []
|
||||
|
||||
renderLangs <- iforM disambiguated $ \lang MsgFile{..} -> do
|
||||
let missing = allDefns `HashSet.difference` insOrdHashMapKeysSet msgFileContent
|
||||
complete = HashSet.null missing
|
||||
let missing = allDefns `InsOrdHashSet.difference` insOrdHashMapKeysSet msgFileContent
|
||||
complete = InsOrdHashSet.null missing
|
||||
unless complete $
|
||||
lift . TH.reportWarning $ "Language " <> unpack lang <> " is not complete, missing:\n" <> indent 2 (unlines $ HashSet.toList missing)
|
||||
lift . TH.reportWarning $ "Language " <> unpack lang <> " is not complete, missing:\n" <> indent 2 (unlines $ InsOrdHashSet.toList missing)
|
||||
|
||||
funName <- lift $ newUniqueName "renderLang"
|
||||
tellMPoint $ TH.sigD funName [t| $(TH.conT master) -> [Lang] -> $(TH.conT datName) -> $(bool [t|Maybe Text|] [t|Text|] complete) |]
|
||||
masterN <- lift $ TH.newName "_master"
|
||||
@ -262,12 +322,18 @@ pMsgLine = flip P.label ".msg line" $ do
|
||||
P.skipMany1 P.space
|
||||
accumInsOrdHashMap <$> P.sepEndBy pMsgDefVar (P.many1 P.space)
|
||||
spaces
|
||||
let pAnnotations = Set.fromList <$> P.sepBy1 (P.char '!' *> pMsgDefAnnotation) spaces
|
||||
msgDefAnnotations <- P.option Set.empty pAnnotations
|
||||
void $ P.char ':'
|
||||
spaces
|
||||
msgDefContent <- P.manyTill pMsgDefContent . P.lookAhead . P.try $ void P.endOfLine <|> P.eof
|
||||
return . InsOrdHashMap.singleton constrBase $ (NonEmpty.:| []) MsgDef{..}
|
||||
]
|
||||
|
||||
pMsgDefAnnotation :: P.Parser MsgDefAnnotation
|
||||
pMsgDefAnnotation = (MsgDefIdenticalOk <$ P.string "ident-ok")
|
||||
<|> (MsgDefEmptyOk <$ P.string "empty-ok")
|
||||
|
||||
pMsgDefVar :: P.Parser (String, Maybe TH.Type)
|
||||
pMsgDefVar = do
|
||||
varBase <- (:) <$> P.lower <*> P.many (P.upper <|> P.lower <|> P.digit <|> P.char '\'')
|
||||
|
||||
Loading…
Reference in New Issue
Block a user