From 83a458ddf530941663108db705067fe129fb8bcc Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Tue, 29 Oct 2019 14:21:23 +0100 Subject: [PATCH] feat(i18n): additional en-eu --- messages/uniworx/de-de-formal.msg | 26 +- messages/uniworx/en-eu.msg | 1301 ++++++++++++++++- src/Foundation.hs | 11 + src/Handler/Utils/Form.hs | 15 +- templates/i18n/admin-test/en-eu.hamlet | 65 + templates/i18n/allocation-info/en-eu.hamlet | 88 ++ templates/i18n/changelog/en-eu.hamlet | 253 ++++ .../en-eu.hamlet | 27 + .../en-eu.hamlet | 25 + templates/i18n/data-delete/en-eu.hamlet | 25 + .../computed-values-tip/en-eu.hamlet | 23 + .../i18n/featureList/de-de-formal.hamlet | 1 - templates/i18n/featureList/en-eu.hamlet | 7 + templates/i18n/html-input/de-de-formal.hamlet | 5 +- templates/i18n/html-input/en-eu.hamlet | 10 + .../i18n/implementation/de-de-formal.hamlet | 4 +- templates/i18n/implementation/en-eu.hamlet | 30 + templates/i18n/knownBugs/en-eu.hamlet | 6 + .../i18n/profile-remarks/de-de-formal.hamlet | 25 +- templates/i18n/profile-remarks/en-eu.hamlet | 24 + .../profile/displayNameRules/en-eu.hamlet | 9 + .../tokenExplanation/de-de-formal.hamlet | 8 +- .../profile/tokenExplanation/en-eu.hamlet | 17 + .../set-display-email/de-de-formal.hamlet | 3 +- templates/i18n/set-display-email/en-eu.hamlet | 5 + templates/i18n/sheet-edit/de-de-formal.hamlet | 9 +- templates/i18n/sheet-edit/en-eu.hamlet | 24 + .../table/csv-import-explanation/en-eu.hamlet | 54 + .../i18n/unauth-home/de-de-formal.hamlet | 5 +- templates/i18n/unauth-home/en-eu.hamlet | 6 + 30 files changed, 2049 insertions(+), 62 deletions(-) create mode 100644 templates/i18n/admin-test/en-eu.hamlet create mode 100644 templates/i18n/allocation-info/en-eu.hamlet create mode 100644 templates/i18n/changelog/en-eu.hamlet create mode 100644 templates/i18n/corrections-upload-instructions/en-eu.hamlet create mode 100644 templates/i18n/course-exam-office-explanation/en-eu.hamlet create mode 100644 templates/i18n/data-delete/en-eu.hamlet create mode 100644 templates/i18n/exam-users/computed-values-tip/en-eu.hamlet create mode 100644 templates/i18n/featureList/en-eu.hamlet create mode 100644 templates/i18n/html-input/en-eu.hamlet create mode 100644 templates/i18n/implementation/en-eu.hamlet create mode 100644 templates/i18n/knownBugs/en-eu.hamlet create mode 100644 templates/i18n/profile-remarks/en-eu.hamlet create mode 100644 templates/i18n/profile/displayNameRules/en-eu.hamlet create mode 100644 templates/i18n/profile/tokenExplanation/en-eu.hamlet create mode 100644 templates/i18n/set-display-email/en-eu.hamlet create mode 100644 templates/i18n/sheet-edit/en-eu.hamlet create mode 100644 templates/i18n/table/csv-import-explanation/en-eu.hamlet create mode 100644 templates/i18n/unauth-home/en-eu.hamlet diff --git a/messages/uniworx/de-de-formal.msg b/messages/uniworx/de-de-formal.msg index 0a00e838e..e665c10f7 100644 --- a/messages/uniworx/de-de-formal.msg +++ b/messages/uniworx/de-de-formal.msg @@ -868,9 +868,9 @@ MailSubjectExamOfficeUserInvitation displayName@Text: Berücksichtigung von Prü MailSubjectPasswordReset: Uni2work-Passwort ändern bzw. setzen SheetGrading: Bewertung -SheetGradingPoints maxPoints@Points: #{maxPoints} Punkte -SheetGradingPassPoints maxPoints@Points passingPoints@Points: Bestanden ab #{passingPoints} von #{maxPoints} Punkten -SheetGradingPassBinary: Bestanden/Nicht Bestanden +SheetGradingPoints maxPoints@Points: #{maxPoints} #{pluralDE maxPoints "Punkt" "Punkte"} +SheetGradingPassPoints maxPoints@Points passingPoints@Points: Bestanden ab #{passingPoints} von #{maxPoints} #{pluralDE maxPoints "Punkt" "Punkten"} +SheetGradingPassBinary: Bestanden/Nicht Bestanden SheetGradingInfo: "Bestanden nach Punkten" zählt sowohl zur maximal erreichbaren Gesamtpunktzahl also auch zur Anzahl der zu bestehenden Blätter. SheetGradingCount': Anzahl @@ -924,10 +924,10 @@ NotificationTriggerExamRegistrationSoonInactive: Ich kann mich bald nicht mehr f NotificationTriggerExamDeregistrationSoonInactive: Ich kann mich bald nicht mehr von einer Prüfung abmelden NotificationTriggerExamResult: Ich kann ein neues Prüfungsergebnis einsehen NotificationTriggerAllocationStaffRegister: Ich kann Kurse bei einer neuen Zentralanmeldung eintragen -NotificationTriggerAllocationAllocation: Ich kann Zentralanmeldung-Bewerbungen für einen meiner Kurse bewerten +NotificationTriggerAllocationAllocation: Ich kann Zentralanmeldungs-Bewerbungen für einen meiner Kurse bewerten NotificationTriggerAllocationRegister: Ich kann mich bei einer neuen Zentralanmeldung bewerben -NotificationTriggerAllocationOutdatedRatings: Zentralanmeldung-Bewerbungen für einen meiner Kurse wurden verändert, nachdem sie bewertet wurden -NotificationTriggerAllocationUnratedApplications: Bewertungen zu Zentralanmeldung-Bewerbungen für einen meiner Kurse stehen aus +NotificationTriggerAllocationOutdatedRatings: Zentralanmeldungs-Bewerbungen für einen meiner Kurse wurden verändert, nachdem sie bewertet wurden +NotificationTriggerAllocationUnratedApplications: Bewertungen zu Zentralanmeldungs-Bewerbungen für einen meiner Kurse stehen aus NotificationTriggerAllocationResults: Plätze wurden für eine meiner Zentralanmeldungen verteilt NotificationTriggerExamOfficeExamResults: Ich kann neue Prüfungsergebnisse einsehen NotificationTriggerExamOfficeExamResultsChanged: Prüfungsergebnisse wurden verändert @@ -1041,7 +1041,6 @@ EncodedSecretBoxCouldNotDecodeNonce: Konnte secretbox-nonce nicht dekodieren EncodedSecretBoxCouldNotOpenSecretBox: Konnte libsodium-secretbox nicht öffnen (Verschlüsselte Daten sind nicht authentisch) EncodedSecretBoxCouldNotDecodePlaintext aesonErr@String: Konnte Klartext nicht JSON-dekodieren: #{aesonErr} ErrMsgHeading: Fehlermeldung entschlüsseln -ErrorCryptoIdMismatch: Verschlüsselte Id der Abgabe passte nicht zu anderen Daten InvalidRoute: Konnte URL nicht interpretieren @@ -1122,7 +1121,7 @@ MenuExamAddMembers: Prüfungsteilnehmer hinzufügen MenuExamOfficeExams: Prüfungen MenuExamOfficeFields: Fächer MenuExamOfficeUsers: Benutzer -MenuLecturerInvite: Dozenten hinzufügen +MenuLecturerInvite: Funktionäre hinzufügen MenuAllocationInfo: Hinweise zum Ablauf einer Zentralanmeldung MenuCourseApplicationsFiles: Dateien aller Bewerbungen MenuSchoolList: Institute @@ -1262,7 +1261,7 @@ RGTutorialParticipants: Tutorium-Teilnehmer MultiSelectFieldTip: Mehrfach-Auswahl ist möglich (Umschalt bzw. Strg) MultiEmailFieldTip: Es sind mehrere, Komma-separierte, E-Mail-Addressen möglich -EmailInvitationWarning: Dem System ist kein Nutzer mit dieser Addresse bekannt. Es wird eine Einladung per E-Mail versandt. +EmailInvitationWarning: Es konnte kein Nutzer mit dieser Addresse im System gefunden werden (ggf. unter gewissen Einschränkungen). Es wird eine Einladung per E-Mail versandt. LecturerInvitationAccepted lType@Text csh@CourseShorthand: Sie wurden als #{lType} für #{csh} eingetragen LecturerInvitationDeclined csh@CourseShorthand: Sie haben die Einladung, Kursverwalter für #{csh} zu werden, abgelehnt @@ -1355,7 +1354,7 @@ TutorialTutorControlled: Tutoren dürfen Tutorium editieren TutorialTutorControlledTip: Sollen Tutoren beliebige Aspekte dieses Tutoriums (Name, Registrierungs-Gruppe, Raum, Zeit, andere Tutoren, ...) beliebig editieren dürfen? CourseExams: Prüfungen -CourseTutorials: Übungen +CourseTutorials: Tutorien ParticipantsN n@Int: #{n} Teilnehmer TutorialDeleteQuestion: Wollen Sie das unten aufgeführte Tutorium wirklich löschen? @@ -1478,7 +1477,7 @@ ExamBonusRoundNonPositive: Vielfaches, auf das gerundet werden soll, muss positi ExamBonusRoundTip: Bonuspunkte werden kaufmännisch auf ein Vielfaches der angegeben Zahl gerundet. ExamAutomaticOccurrenceAssignment: Automatische Termin- bzw. Raumzuteilung -ExamAutomaticOccurrenceAssignmentTip: Sollen Prüfungsteilnehmer zum Zeitpunkt der Bekanntgabe der Raum- bzw. Terminzuteilung automatisch auf die zur Verfügung stehenden Räume bzw. Termine verteilt werden? Manuelle Umverteilung bzw. vorheriges Festlegen von Zuteilungen einzelner Teilnehmer ist trotzdem möglich. +ExamAutomaticOccurrenceAssignmentTip: Sollen Prüfungsteilnehmer automatisch auf die zur Verfügung stehenden Räume bzw. Termine verteilt werden? Manuelle Umverteilung bzw. vorheriges Festlegen von Zuteilungen einzelner Teilnehmer ist trotzdem möglich. ExamOccurrenceRule: Verfahren ExamOccurrenceRuleParticipant: Termin- bzw. Raumzuteilungsverfahren ExamRoomManual': Keine automatische Zuteilung @@ -1523,7 +1522,7 @@ ExamPartName: Titel ExamPartNameTip: Wird den Studierenden angezeigt ExamPartMaxPoints: Maximalpunktzahl ExamPartWeight: Gewichtung -ExamPartWeightTip: Wird vor Anzeige oder Notenberechnung mit der erreichten Punktzahl und der Maximalpunktzahl multipliziert; Änderungen hier passen auch bestehende Korrekturergebnisse an +ExamPartWeightTip: Wird vor Anzeige oder automatischen Notenberechnung mit der erreichten Punktzahl und der Maximalpunktzahl multipliziert; Änderungen hier passen also auch bestehende Korrekturergebnisse an (derart geänderte Noten müssen erneut manuell übernommen werden) ExamPartResultPoints: Erreichte Punkte ExamNameTaken exam@ExamName: Es existiert bereits eine Prüfung mit Namen #{exam} @@ -1945,7 +1944,7 @@ AcceptApplicationsSecondaryRandom: Zufällig AcceptApplicationsSecondaryTime: Nach Zeitpunkt der Bewerbung CsvOptions: CSV-Optionen -CsvOptionsTip: Diese Einstellungen betreffen nur den CSV-Export; beim Import werden die verwendeten Einstellungen automatisch ermittelt. Als Zeichenkodierung wird beim Import stets Unicode erwartet. +CsvOptionsTip: Diese Einstellungen betreffen primär den CSV-Export; beim Import werden die meisten Einstellungen automatisch ermittelt. Als Zeichenkodierung wird beim Import die selbe Kodierung wie beim Export erwartet. CsvFormatOptions: Dateiformat CsvTimestamp: Zeitstempel CsvTimestampTip: Soll an den Namen jeder exportierten CSV-Datei ein Zeitstempel vorne angehängt werden? @@ -1964,6 +1963,7 @@ CsvDelimiterNull: Null-Byte CsvDelimiterTab: Tabulator CsvDelimiterComma: Komma CsvDelimiterColon: Doppelpunkt +CsvDelimiterSemicolon: Strichpunkt CsvDelimiterBar: Senkrechter Strich CsvDelimiterSpace: Leerzeichen CsvDelimiterUnitSep: Teilgruppentrennzeichen diff --git a/messages/uniworx/en-eu.msg b/messages/uniworx/en-eu.msg index 22879d45a..bfa5628c2 100644 --- a/messages/uniworx/en-eu.msg +++ b/messages/uniworx/en-eu.msg @@ -1,4 +1,4 @@ - +PrintDebugForStupid name@Text: Debug message "#{name}" Logo: Uni2work @@ -182,20 +182,20 @@ CourseApplicationInstructionsApplication: Instructions for application CourseApplicationInstructionsRegistration: Instructions for registration CourseApplicationTemplateApplication: Application template(s) CourseApplicationTemplateRegistration: Registration template(s) -CourseApplicationTemplateArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-application-templates +CourseApplicationTemplateArchiveName tid ssh csh: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-application-templates CourseApplication: Application CourseApplicationIsParticipant: Course participant CourseApplicationExists: You already applied for this course CourseApplicationInvalidAction: Invalid action -CourseApplicationCreated csh@CourseShorthand: Successfully applied for #{csh} -CourseApplicationEdited csh@CourseShorthand: Successfully changed application for #{csh} -CourseApplicationNotEdited csh@CourseShorthand: Application for #{csh} not changed +CourseApplicationCreated csh: Successfully applied for #{csh} +CourseApplicationEdited csh: Successfully changed application for #{csh} +CourseApplicationNotEdited csh: Application for #{csh} not changed CourseApplicationRated: Successfully edited rating CourseApplicationRatingDeleted: Successfully deleted rating -CourseApplicationDeleted csh@CourseShorthand: Successfully withdrew application for #{csh} +CourseApplicationDeleted csh: Successfully withdrew application for #{csh} -CourseApplicationTitle displayName@Text csh@CourseShorthand: Application for #{csh}: #{displayName} +CourseApplicationTitle displayName csh: Application for #{csh}: #{displayName} CourseApplicationText: Application text CourseApplicationFollowInstructions: Please follow the instructions for applications! @@ -287,6 +287,7 @@ SheetGroup: Group submission SheetVisibleFrom: Visible from (for participants) SheetVisibleFromTip: Always invisible for participants and no submission possible if left empty; only leave this field empty for temporary/unfinished sheets SheetActiveFrom: Submission period start +SheetActiveFromTip: The exercise sheet will only be available for download starting at this time SheetActiveTo: Submission period end SheetHintFromTip: Always invisible for participants if left empty; correctors can always download hints SheetSolutionFromTip: Always invisible for participants if left empty; correctors can always download solutions @@ -369,7 +370,8 @@ UnauthorizedNot r: (NOT #{r}) UnauthorizedNoToken: No authorisation-token was provided with your request. UnauthorizedTokenExpired: Your authorisation-token is expired. UnauthorizedTokenNotStarted: Your authorisation-token is not yet valid. -UnauthorizedTokenInvalid: Your authorisation-taken could not be processed. +UnauthorizedTokenInvalid: Your authorisation-token could not be processed. +UnauthorizedTokenInvalidRoute: Your authorisation-token is not valid for this page. UnauthorizedTokenInvalidAuthority: Your authorisation-token is based in an user's rights who does not exist anymore. UnauthorizedToken404: Authorisation-tokens cannot be processed on error pages. UnauthorizedSiteAdmin: You are no system-wide administrator. @@ -401,6 +403,8 @@ UnauthorizedExamTime: This exam is not currently available. UnauthorizedSubmissionOwner: You are no submittor for this submission. UnauthorizedSubmissionRated: This submission is not yet marked. UnauthorizedSubmissionCorrector: You are no corrector for this submission. +UnauthorizedUserSubmission: Users may not directly submit for this exercise sheet. +UnauthorizedCorrectorSubmission: Correctors may not create submissions for this exercise sheet. OnlyUploadOneFile: Please only upload one file DeprecatedRoute: This view is deprecated and will be removed. UnfreeMaterials: Course material are not publicly accessable. @@ -457,7 +461,7 @@ CorrectorsPlaceholder: Correctors... CorrectorsDefaulted: List of correctors was automatically generated based on those of preceding sheets for this course. No data has been saved, yet. Users: Users -HomeHeading: Current events +HomeHeading: Home LoginHeading: Authentication LoginTitle: Authentication ProfileHeading: Settings @@ -620,7 +624,7 @@ MultiSinkException name error: An error occurred in submission “#{name}”: #{ NoTableContent: No entries NoUpcomingSheetDeadlines: No upcoming sheets -NoUpcomingExams difftime: No exams for your courses occurr or allow registration in the next #{difftime} +NoUpcomingExams difftime: No exams for your courses occur or allow registration in the next #{difftime} AdminHeading: Administration AdminUserHeading: User administration @@ -688,7 +692,7 @@ CampusUserInvalidTitle: Could not determine title during campus login CampusUserInvalidMatriculation: Could not determine matriculation during campus login CampusUserInvalidFeaturesOfStudy parseErr: Could not determine features of study during campus login CampusUserInvalidAssociatedSchools parseErr: Could not determine associated departments during campus login -CampusUserInvalidSex: Could not determine gender during campus login +CampusUserInvalidSex: Could not determine sex during campus login CorrectorNormal: Normal CorrectorMissing: Missing @@ -765,6 +769,7 @@ RedundantCandidatesRemoved n: Successfully removed #{n} rendundant #{pluralEN n CandidatesInferred n: Successfully inferred #{n} field #{pluralEN n "mapping" "mappings"} NoCandidatesInferred: No new mappings inferred AllIncidencesDeleted: Successfully deleted all observations +IncidencesDeleted n: Successfully deleted #{show n} #{pluralEN n "observation" "observations"} StudyTermIsNew: New StudyFeatureConflict: Observed conflicts in field mapping @@ -806,6 +811,9 @@ MailExamRegistrationActiveIntro courseName termDesc examn: You may now register MailSubjectExamRegistrationSoonInactive csh examn: The registration period for #{examn} of #{csh} ends shortly MailExamRegistrationSoonInactiveIntro courseName termDesc examn: Soon you will no longer be allowed to register for #{examn} of #{courseName} (#{termDesc}). +MailSubjectExamDeregistrationSoonInactive csh examn: Deregistration for #{examn} in #{csh} ends shortly +MailExamDeregistrationSoonInactiveIntro courseName termDesc examn: Soon you will no longer be allowed to deregister from #{examn} of #{courseName} (#{termDesc}). + MailSubjectSubmissionsUnassigned csh sheetName: Corrections for #{sheetName} of #{csh} could not be distributed MailSubmissionsUnassignedIntro n courseName termDesc sheetName: #{n} corrections for #{sheetName} of the course #{courseName} (#{termDesc}) could not be automatically distributed. @@ -814,6 +822,1277 @@ MailSheetSoonInactiveIntro courseName termDesc sheetName: Soon you will no longe MailSubjectSheetInactive csh sheetName: The submission period for #{sheetName} of #{csh} has ended MailSheetInactiveIntro courseName termDesc sheetName n num: The submission period for #{sheetName} of the course #{courseName} (#{termDesc}) has ended. #{noneOneMoreEN num "" "One participant" (toMessage num <> " participants")}#{noneOneMoreEN n "" "" (" made " <> toMessage num)}#{noneOneMoreEN n "There were no submissions" " made one submission" " submissions"}. +MailSubjectCorrectionsAssigned csh sheetName: You were assigned corrections for #{sheetName} of #{csh} +MailCorrectionsAssignedIntro courseName termDesc sheetName n: You were assigned #{n} #{pluralEN n "correction" "corrections"} for #{sheetName} of #{courseName} (#{termDesc}). + +MailSubjectUserRightsUpdate name: Permissions for #{name} changed +MailUserRightsIntro name email: #{name} <#{email}> now has the following permissions: +MailNoLecturerRights: You don't currently have lecturer permissions for any department. +MailLecturerRights n: As a lecturer you may create new courses within your #{pluralEN n "department" "departments"}. + +MailSubjectUserAuthModeUpdate: Your Uni2work login +UserAuthModePWHashChangedToLDAP: You can now log in to Uni2work using your Campus-account +UserAuthModeLDAPChangedToPWHash: You can now log in to Uni2work using your Uni2work-internal account +NewPasswordLinkTip: You can set the password for your Uni2work-internal account on the following page: +NewPasswordLink: Set password +AuthPWHashTip: You now need to use the login form labeled "Uni2work login". Please ensure that you have already set a password when you try to log in. +PasswordResetEmailIncoming: For security reasons you will receive a link to the page on which you can set and later change your password in a separate email. + +MailEditNotifications: Enable/Disable notifications +MailSubjectSupport: Support request +MailSubjectSupportCustom customSubject: [Support] #{customSubject} + +CommCourseSubject: Course message +MailSubjectLecturerInvitation tid ssh csh: [#{tid}-#{ssh}-#{csh}] Invitation to be a course administrator +InvitationAcceptDecline: Accept/Decline invitation +InvitationFromTip displayName: You are receiving this invitation because #{displayName} has caused it to be sent from within Uni2work. +InvitationUniWorXTip: Uni2work is a web based teaching management system at LMU Munich. + +MailSubjectParticipantInvitation tid ssh csh: [#{tid}-#{ssh}-#{csh}] Invitation to be a course participant + +MailSubjectCorrectorInvitation tid ssh csh shn: [#{tid}-#{ssh}-#{csh}] Invitation to be a corrector for #{shn} + +MailSubjectTutorInvitation tid ssh csh tutn: [#{tid}-#{ssh}-#{csh}] Invitation to be a tutor for #{tutn} + +MailSubjectExamCorrectorInvitation tid ssh csh examn: [#{tid}-#{ssh}-#{csh}] Invitation to be a corrector for #{examn} + +MailSubjectExamRegistrationInvitation tid ssh csh examn: [#{tid}-#{ssh}-#{csh}] Invitation to be a participant of #{examn} + +MailSubjectSubmissionUserInvitation tid ssh csh shn: [#{tid}-#{ssh}-#{csh}] Invitation to participate in a submission for #{shn} + +MailSubjectExamOfficeUserInvitation displayName: Consideration of your exam achievements within Uni2work + +MailSubjectPasswordReset: Set/Change Uni2work password + +SheetGrading: Marking +SheetGradingPoints maxPoints: #{maxPoints} #{pluralEN maxPoints "point" "points"} +SheetGradingPassPoints maxPoints passingPoints: Pass with #{passingPoints} of #{maxPoints} #{pluralEN maxPoints "point" "points"} +SheetGradingPassBinary: Pass/Fail +SheetGradingInfo: "Passing by points" counts both towards the maximum achievable number of points and towards the number of sheets that can be passed. + +SheetGradingCount': Number +SheetGradingPoints': Points +SheetGradingPassing': Passing +SheetGradingPassPoints': Passing by points +SheetGradingPassBinary': Pass/Fail + +SheetTypeBonus grading: Bonus +SheetTypeNormal grading: Normal +SheetTypeInformational grading: Informational +SheetTypeNotGraded: Not marked +SheetTypeInfoNotGraded: "Not marked" means that there will be no feedback at all. +SheetTypeInfoBonus: Sheets marked "bonus" count normally but do not increase either the maximum number of points or the count of sheets that can be passed. +SheetTypeInfoInformational: Sheets marked "informational" do not counted anywhere. They are marked only as feedback for participants. +SheetGradingBonusIncluded: Achieved bonus points are already counted among the achieved normal Their marking points. +SummaryTitle: Summary of +SheetGradingSummaryTitle intgr: #{intgr} #{pluralEN intgr "sheet" "sheets"} +SubmissionGradingSummaryTitle intgr: #{intgr} #{pluralEN intgr "submission" "submissions"} + +SheetTypeBonus': Bonus +SheetTypeNormal': Normal +SheetTypeInformational': Informational +SheetTypeNotGraded': Not marked + +SheetGradingMaxPoints: Maximum number of points +SheetGradingPassingPoints: Points necessary to pass + +SheetGroupArbitrary: Arbitrary groups +SheetGroupRegisteredGroups: Registered groups +SheetGroupNoGroups: No group submission +SheetGroupMaxGroupsize: Maximum group size + +SheetFiles: Exercise sheet files +SheetFileTypeHeader: Belongs to + +SheetArchiveName tid ssh csh shn: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase shn} +SheetTypeArchiveName tid ssh csh shn renderedSft: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase shn}-#{foldCase renderedSft} + +NotificationTriggerSubmissionRatedGraded: My submission for an exercise sheet was marked (not purely informational) +NotificationTriggerSubmissionRated: My submission for an exercise sheet was marked +NotificationTriggerSheetActive: I can now download a new exercise sheet +NotificationTriggerSheetSoonInactive: I will soon no longer be able to submit for an exercise sheet +NotificationTriggerSheetInactive: The submission period for one of my exercise sheets is over +NotificationTriggerCorrectionsAssigned: I was assigned corrections +NotificationTriggerCorrectionsNotDistributed: Not all submissions for one of my exercise sheets could be assigned a corrector +NotificationTriggerUserRightsUpdate: My permissions changed +NotificationTriggerUserAuthModeUpdate: My login mode changed +NotificationTriggerExamRegistrationActive: I can now register for an exam +NotificationTriggerExamRegistrationSoonInactive: I will soon no longer be able to register for an exam +NotificationTriggerExamDeregistrationSoonInactive: I will soon no longer be able to deregister from an exam +NotificationTriggerExamResult: An exam result is available +NotificationTriggerAllocationStaffRegister: I can now register a course for central allocation +NotificationTriggerAllocationAllocation: I can now grade applications to a central alloction for one of my courses +NotificationTriggerAllocationRegister: I can now apply to a new central allocation +NotificationTriggerAllocationOutdatedRatings: Applications to a central allocation for one of my courses have changed since they were graded +NotificationTriggerAllocationUnratedApplications: Grades are pending for applications to a central allocation for one of my courses +NotificationTriggerAllocationResults: Participants have been placed by one of my central allocations +NotificationTriggerExamOfficeExamResults: New exam results are available +NotificationTriggerExamOfficeExamResultsChanged: Exam results have changed +NotificationTriggerCourseRegistered: A course administrator has enrolled me in a course + +NotificationTriggerKindAll: For all users +NotificationTriggerKindCourseParticipant: For course participants +NotificationTriggerKindExamParticipant: For exam participants +NotificationTriggerKindCorrector: For correctors +NotificationTriggerKindLecturer: For lecturers +NotificationTriggerKindCourseLecturer: For course administrators +NotificationTriggerKindAdmin: For administrators +NotificationTriggerKindExamOffice: For the exam office +NotificationTriggerKindEvaluation: For course evaluations +NotificationTriggerKindAllocationStaff: For central allocations (lecturers) +NotificationTriggerKindAllocationParticipant: For central allocations + +CorrCreate: Create submissions +UnknownPseudonymWord pseudonymWord: Invalid pseudonym-word “#{pseudonymWord}” +InvalidPseudonym pseudonym: Invalid pseudonym “#{pseudonym}” +InvalidPseudonymSubmissionIgnored oPseudonyms iPseudonym: The submission with pseudonyms “#{oPseudonyms}” has been ignored since “#{iPseudonym}” could not be automatically corrected to be a valid pseudonym. +PseudonymAutocorrections: Suggestions: +UnknownPseudonym pseudonym: Unknown pseudonym “#{pseudonym}” +CorrectionPseudonyms: Pseudonyms +CorrectionPseudonymsTip: One submission per line. For group submissions include multiple pseudonyms (comma-separated) per line. Typos may be automatically corrected. +PseudonymSheet: Exercise sheet +CorrectionPseudonymSheet termDesc csh shn: #{termDesc} » #{csh} » #{shn} +SheetGroupTooLarge sheetGroupDesc: Submission group to large: #{sheetGroupDesc} +SheetNoRegisteredGroup sheetGroupDesc: “#{sheetGroupDesc}” are not registered as a submission group +SheetAmbiguousRegisteredGroup sheetGroupDesc: “#{sheetGroupDesc}” contains members of multiple submission groups +SheetNoGroupSubmission sheetGroupDesc: Group submission is not allowed for this exercise sheet (#{sheetGroupDesc}) +SheetDuplicatePseudonym: The following pseudonyms occurred multiple times. All occurrances except the first have been ignored: +SheetCreateExisting: The following pseudonyms have already submitted: + +CorrGrade: Mark submissions + +UserAccountDeleted name: User account for #{name} was deleted! +UserSubmissionsDeleted n: #{tshow n} #{pluralEN n "submission was" "submissions were"} permanently deleted. +UserGroupSubmissionsKept n: #{tshow n} #{pluralEN n "group submission was" "group submissions were"} kept. They are no longer associated with the deleted user. Group submissions can thus become as if made by a single user. Such submissions are deleted together with their last user. +UserSubmissionGroupsDeleted count: #{tshow count} #{pluralEN count "submission group was" "submission groups were"} deleted since #{pluralEN count "it" "they"} would have become empty. +UserAccountDeleteWarning: Caution, this permanently deletes users and all of their associated data. Exam results must be stored long term! + +HelpTitle: Support +HelpAnswer: Send answers to +HelpUser: My user account +HelpAnonymous: Send no answers (anonymous) +HelpEmail: Email +HelpSubject: Subject +HelpRequest: Support request / Suggestion +HelpProblemPage: Problematic page +HelpIntroduction: If you have trouble using this website or if you find something that could be improved, please contact us even if you were already able to solve your problem by yourself! We are continually making changes and try to keep the site as intuitive as possible even for new users. +HelpSent: Your support request has been sent. + +InfoLecturerTitle: Information for lecturers + +SystemMessageFrom: Visible from +SystemMessageTo: Visible to +SystemMessageAuthenticatedOnly: Only logged in users +SystemMessageSeverity: Severity +SystemMessageId: Id +SystemMessageSummaryContent: Summary / Content +SystemMessageSummary: Summary +SystemMessageContent: Content +SystemMessageLanguage: Language + +SystemMessageDelete: Delete +SystemMessageActivate: Set to be visible +SystemMessageDeactivate: Set to be invisible +SystemMessageTimestamp: Timestamp + +SystemMessagesDeleted: System messages deleted: +SystemMessagesActivated: System messages set to become visible at: +SystemMessagesDeactivated: System messages set to become invisable at: +SystemMessageEmptySelection: No system messages selected +SystemMessageAdded sysMsgId: System message added: #{toPathPiece sysMsgId} +SystemMessageEdit: Edit system message +SystemMessageEditTranslations: Edit translations +SystemMessageAddTranslation: Add translation + +SystemMessageEditSuccess: Successfully edited system message. +SystemMessageAddTranslationSuccess: Successfully added translation. +SystemMessageEditTranslationSuccess: Successfully edited translation. +SystemMessageDeleteTranslationSuccess: Successfully deleted translation. + +MessageError: Error +MessageWarning: Warning +MessageInfo: Information +MessageSuccess: Success + +InvalidLangFormat: Invalid language code (RFC1766) + +ErrorResponseTitleNotFound: Resource not found +ErrorResponseTitleInternalError internalError@Text: An internal error occurred +ErrorResponseTitleInvalidArgs invalidArgs@Texts: Request contained invalid arguments +ErrorResponseTitleNotAuthenticated: Request requires authentication +ErrorResponseTitlePermissionDenied permissionDenied@Text: Permission denied +ErrorResponseTitleBadMethod requestMethod@Method: HTTP-method not supported + +UnknownErrorResponse: An error has occurred that could not be further classified: +ErrorResponseNotFound: No page could be found under the url requested by your browser. +ErrorResponseNotAuthenticated: To be granted access to most parts of Uni2work you need to login first. +ErrorResponseBadMethod requestMethodText@Text: Your browser can interact in multiple ways with the resources offered by Uni2work. The requested method (#{requestMethodText}) is not supported here. + +ErrorResponseEncrypted: In order not to reveal sensitive information further details have been encrypted. If you send a support request, please include the encrypted data listed below. +ErrMsgCiphertext: Encrypted error message +EncodedSecretBoxCiphertextTooShort: Encrypted data are too short to be valid +EncodedSecretBoxInvalidBase64 base64Err@String: Encrypted data ar not correctly base64url-encoded: #{base64Err} +EncodedSecretBoxInvalidPadding: Encrypted data are not padded correctly +EncodedSecretBoxCouldNotDecodeNonce: Could not decode secretbox-nonce +EncodedSecretBoxCouldNotOpenSecretBox: Could not open libsodium-secretbox (Encrypted data are not authentic) +EncodedSecretBoxCouldNotDecodePlaintext aesonErr@String: Could not decode json cleartext: #{aesonErr} +ErrMsgHeading: Decrypt error message + +InvalidRoute: Could not interpret url + +MenuOpenCourses: Courses with open registration +MenuOpenAllocations: Active central allocations +MenuHome: Home +MenuInformation: Information +MenuImpressum: Imprint +MenuDataProt: Data protection +MenuVersion: Version history +MenuInstance: Instance identification +MenuHealth: Instance health +MenuHelp: Support +MenuProfile: Settings +MenuLogin: Login +MenuLogout: Logout +MenuAllocationList: Central allocations +MenuCourseList: Courses +MenuCourseMembers: Participants +MenuCourseAddMembers: Add participants +MenuCourseCommunication: Course message (email) +MenuCourseApplications: Applications +MenuCourseExamOffice: Exam offices +MenuTermShow: Semesters +MenuSubmissionDelete: Delete submission +MenuUsers: User +MenuUserAdd: Add user +MenuUserNotifications: Notification settings +MenuUserPassword: Password +MenuAdminTest: Admin-demo +MenuMessageList: System messages +MenuAdminErrMsg: Decrypt error message +MenuProfileData: Personal information +MenuTermCreate: Create new semester +MenuCourseNew: Create new course +MenuTermEdit: Edit semester +MenuTermCurrent: Current semester +MenuCorrection: Marking +MenuCorrections: Corrections +MenuCorrectionsOwn: My corrections +MenuSubmissions: Submissions +MenuSheetList: Exercise sheets +MenuMaterialList: Material +MenuMaterialNew: Publish new material +MenuMaterialEdit: Edit material +MenuMaterialDelete: Delete material +MenuTutorialList: Tutorials +MenuTutorialNew: Create new tutorial +MenuSheetNew: Create new exercise sheet +MenuSheetCurrent: Current exercise sheet +MenuSheetOldUnassigned: Submissions without corrector +MenuCourseEdit: Edit course +MenuCourseClone: Clone course +MenuCourseDelete: Delete course +MenuSubmissionNew: Create submission +MenuSubmissionOwn: Submission +MenuCorrectors: Correctors +MenuCorrectorsChange: Adjust correctors +MenuSheetEdit: Edit exercise sheet +MenuSheetDelete: Delete exercise sheet +MenuSheetClone: Clone exercise sheet +MenuCorrectionsUpload: Upload corrections +MenuCorrectionsDownload: Download corrections +MenuCorrectionsCreate: Register submissions +MenuCorrectionsGrade: Mark submissions online +MenuCorrectionsAssign: Assign corrections +MenuCorrectionsAssignSheet name@Text: Assign corrections for #{name} +MenuAuthPreds: Authorisation settings +MenuTutorialDelete: Delete tutorial +MenuTutorialEdit: Edit tutorial +MenuTutorialComm: Send course message +MenuExamList: Exams +MenuExamNew: Create new exam +MenuExamEdit: Edit +MenuExamUsers: Participants +MenuExamGrades: Exam results +MenuExamAddMembers: Add exam participants +MenuExamOfficeExams: Exams +MenuExamOfficeFields: Fields of study +MenuExamOfficeUsers: Users +MenuLecturerInvite: Add functionaries +MenuAllocationInfo: Information regarding central allocations +MenuCourseApplicationsFiles: Files of all applications +MenuSchoolList: Departments +MenuSchoolNew: Create new department +MenuCourseNewsNew: Add course news +MenuCourseNewsEdit: Edit course news +MenuCourseEventNew: New course occurrence +MenuCourseEventEdit: Edit course occurrence + +BreadcrumbSubmissionFile: File +BreadcrumbSubmissionUserInvite: Invitation to participate in a submission +BreadcrumbCryptoIDDispatch: CryptoID-redirect +BreadcrumbCourseAppsFiles: Application files +BreadcrumbCourseNotes: Course notes +BreadcrumbHiWis: Correctors +BreadcrumbMaterial: Material +BreadcrumbSheet: Exercise sheet +BreadcrumbTutorial: Tutorial +BreadcrumbExam: Exam +BreadcrumbApplicant: Applicant +BreadcrumbCourseRegister: Register +BreadcrumbCourseRegisterTemplate: Application template +BreadcrumbCourseFavourite: Favourite +BreadcrumbCourse: Course +BreadcrumbAllocationRegister: Register participation +BreadcrumbAllocation: Central allocation +BreadcrumbTerm: Semester +BreadcrumbSchool: Department +BreadcrumbUser: User +BreadcrumbStatic: Static resource +BreadcrumbFavicon: Favicon +BreadcrumbRobots: robots.txt +BreadcrumbLecturerInvite: Invitation to be a course administrator +BreadcrumbExamOfficeUserInvite: Invitation regarding exam achievements +BreadcrumbFunctionaryInvite: Invitation to be a department functionary +BreadcrumbUserDelete: Delete user account +BreadcrumbUserHijack: Hijack user session +BreadcrumbSystemMessage: System message +BreadcrumbSubmission: Submission +BreadcrumbCourseNews: Course news +BreadcrumbCourseNewsDelete: Delete course news +BreadcrumbCourseEventDelete: Delete course occurrence +BreadcrumbProfile: Settings +BreadcrumbAllocationInfo: On central allocations +BreadcrumbCourseParticipantInvitation: Invitation to be a course participant +BreadcrumbMaterialArchive: Archive +BreadcrumbMaterialFile: File +BreadcrumbSheetArchive: Files +BreadcrumbSheetIsCorrector: Corrector-check +BreadcrumbSheetPseudonym: Pseudonym +BreadcrumbSheetCorrectorInvite: Invitation to be a corrector +BreadcrumbSheetFile: File +BreadcrumbTutorialRegister: Register +BreadcrumbTutorInvite: Invitation to be a tutor +BreadcrumbExamCorrectorInvite: Invitation to be an exam corrector +BreadcrumbExamParticipantInvite: Invitation to be an exam participant +BreadcrumbExamRegister: Register +BreadcrumbApplicationFiles: Application files +BreadcrumbCourseNewsArchive: Archive +BreadcrumbCourseNewsFile: File + +AuthPredsInfo: To view their own courses like a participant would, administrators and correctors can deactivate the checking of their credentials temporarily. Disabled authorisation predicates always fail. This means that deactivated predicates are not checked to grant access where it would otherwise not be permitted. These settings are only temporary, until your session expires i.e. your browser-cookie does. By deactivating predicates you can lock yourself out temporarily, at most. +AuthPredsActive: Active authorisation predicates +AuthPredsActiveChanged: Authorisation settings saved for the current session +AuthTagFree: Page is freely accessable +AuthTagAdmin: User is administrator +AuthTagExamOffice: User is part of an exam office +AuthTagToken: User is presenting an authorisation-token +AuthTagNoEscalation: User permissions are not being expanded to other departments +AuthTagDeprecated: Page is not deprecated +AuthTagDevelopment: Page is not in development +AuthTagLecturer: User is lecturer +AuthTagCorrector: User is corrector +AuthTagTutor: User is tutor +AuthTagTutorControl: Tutors have control over their tutorial +AuthTagTime: Time restrictions are fulfilled +AuthTagStaffTime: Time restrictions wrt. staff are fulfilled +AuthTagAllocationTime: Time restrictions due to a central allocation are fulfilled +AuthTagCourseRegistered: User is enrolled in course +AuthTagAllocationRegistered: User participates in central allocation +AuthTagTutorialRegistered: User is tutorial participant +AuthTagExamRegistered: User is exam participant +AuthTagExamResult: User has an exam result +AuthTagParticipant: User participates in course +AuthTagApplicant: User is applicant for course +AuthTagRegisterGroup: User is not participant in any tutorial of the same registration group +AuthTagCapacity: Capacity is sufficient +AuthTagEmpty: Course is empty +AuthTagMaterials: Course material is publicly accessable +AuthTagOwner: User is owner +AuthTagRated: Submission is marked +AuthTagUserSubmissions: Submissions are made by course participants +AuthTagCorrectorSubmissions: Submissions are registered by correctors +AuthTagSelf: User is only accessing their only data +AuthTagIsLDAP: User logs in using their campus account +AuthTagIsPWHash: User logs in using their Uni2work-internal account +AuthTagAuthentication: User is authenticated +AuthTagRead: Access is read only +AuthTagWrite: Access might write + +DeleteCopyStringIfSure n: If you are sure that you want to permanently delete the #{pluralEN n "object" "objects"} listed below, please copy the shown text. +DeletePressButtonIfSure n: If you are sure that you want to permanently delete the #{pluralEN n "object" "objects"} listed below, please confirm the action by pressing the button. +DeleteConfirmation: Confirmation text +DeleteConfirmationWrong: Confirmation text must match the shown text exactly. + +DBTIRowsMissing n: #{pluralDE n "A line" "A number of lines"} vanished from the database since the form you submitted was generated for you + +MassInputAddDimension: + +MassInputDeleteCell: - + +NavigationFavourites: Favourites + +CommSubject: Subject +CommBody: Message +CommBodyTip: This input field currently accepts only Html. Line breaks are thus ignored and must be designated manually by inserting
in the appropriate places. +CommRecipients: Recipients +CommRecipientsTip: You always receive a copy of the message +CommRecipientsList: For archival purposes the copy of the message sent to you will contain a complete list of all recipients. The list of recipients will be attached to the email in CSV-format. Other recipients do not receive the list. Thus, please remove the attachment before you forward the email or otherwise share it with third parties. +CommDuplicateRecipients n: #{n} duplicate #{pluralEN n "recipient" "recipients"} ignored +CommSuccess n: Message was sent to #{n} #{pluralEN n "recipient" "recipients"} +CommUndisclosedRecipients: Undisclosed recipients +CommAllRecipients: all-recipients + +CommCourseHeading: Course message +CommTutorialHeading: Tutorial message + +RecipientCustom: Custom recipients +RecipientToggleAll: All/None + +DBCsvImportActionToggleAll: All/None + +RGCourseParticipants: Course participants +RGCourseLecturers: Course administrators +RGCourseCorrectors: Course correctors +RGCourseTutors: Course tutors +RGTutorialParticipants: Tutorial participants + +MultiSelectFieldTip: Multiple selections are possible (Shift or Ctrl) +MultiEmailFieldTip: Multiple emails addresses may be specified (comma-separated) +EmailInvitationWarning: No user with that email address was found (may be subject to some restrictions). An invitation will be sent via email. + +LecturerInvitationAccepted lType csh: You were registered as #{lType} for #{csh} +LecturerInvitationDeclined csh: You have declined the invitation to become course administrator for #{csh} +CourseLecInviteHeading courseName: Invitation to be a course administrator for #{courseName} +CourseLecInviteExplanation: You were invited to be a course administrator. + +CourseParticipantInviteHeading courseName: Invitation to enrol for #{courseName} +CourseParticipantInviteExplanation: You were invited to be a participant of a course. +CourseParticipantEnlistDirectly: Enrol known users directly +CourseParticipantInviteField: Email addresses to invite + +CourseParticipantInvitationAccepted courseName: You were enrolled in #{courseName} + +CorrectorInvitationAccepted shn: You are now a corrector for #{shn} +CorrectorInvitationDeclined shn: You have declined the invitation to be a corrector for #{shn} +SheetCorrInviteHeading shn: Invitation to be a corrector for #{shn} +SheetCorrInviteExplanation: You were invited to be a sheet corrector. + +TutorInvitationAccepted tutn: You are now tutor for #{tutn} +TutorInvitationDeclined tutn: You have declined the invitation to be a tutor for #{tutn} +TutorInviteHeading tutn: Invitation to be tutor for #{tutn} +TutorInviteExplanation: You were invited to be a tutor. + +ExamCorrectorInvitationAccepted examn: You are now corrector for #{examn} +ExamCorrectorInvitationDeclined examn: You have declined the invitation to be a corrector for #{examn} +ExamCorrectorInviteHeading examn: Invitation to be a corrector for #{examn} +ExamCorrectorInviteExplanation: You were invited to be a corrector. + +ExamRegistrationInvitationAccepted examn: You are now registered for #{examn} +ExamRegistrationInvitationDeclined examn: You have declined the invitation to participate in #{examn} +ExamRegistrationInviteHeading examn: Invitation to participate in #{examn} +ExamRegistrationInviteExplanation: You were invited to register for an exam. + +SubmissionUserInvitationAccepted shn: You now participate in a submission for #{shn} +SubmissionUserInvitationDeclined shn: You have declined the invitation to participate in a submission for #{shn} +SubmissionUserInviteHeading shn: Invitation to participate in a submission for #{shn} +SubmissionUserInviteExplanation: You were invited to participate in a submission for an exercise sheet. + +ExamOfficeUserInviteHeading displayName: Access of your exam achievements by #{displayName} +ExamOfficeUserInviteExplanation: To properly consider your exam achievements (e.g. in the final transcript of records for Erasmus-students) you are invited to grant access to the appropriate parties. +ExamOfficeUserInvitationAccepted: Access to exam achievements granted + +InvitationAction: Action +InvitationActionTip: Declined invitations cannot be accepted later +InvitationMissingRestrictions: Your authorisation-token is missing required data +InvitationCollision: Invitation could not be accepted since an entry of this type already exists +InvitationDeclined: Invitation declined +BtnInviteAccept: Accept invitation +BtnInviteDecline: Decline invitation + +LecturerType: Role +ScheduleKindWeekly: Weekly + +ScheduleRegular: Regular occurrence +ScheduleRegularKind: Schedule +WeekDay: Day of the week +Day: Day +OccurrenceStart: Start +OccurrenceEnd: End +OccurrenceNever: Never +ScheduleExists: This schedule already exists + +ScheduleExceptions: Exceptions +ScheduleExceptionsTip: “Does not occur” overrides the regular schedule. “Does occur” overides “does not occur”. +ExceptionKind: Event ... +ExceptionKindOccur: Does occur +ExceptionKindNoOccur: Does not occur +ExceptionExists: This exception already exists +ExceptionNoOccurAt: Event + +TutorialType: Type +TutorialTypePlaceholder: Tutorial, Exercise discussion, ... +TutorialTypeTip: Only for informational purposes +TutorialName: Name +TutorialParticipants: Participants +TutorialCapacity: Capacity +TutorialFreeCapacity: Free capacity +TutorialRoom: Regular room +TutorialTime: Time +TutorialRegistered: Registered +TutorialRegGroup: Registration group +TutorialRegisterFrom: Register from +TutorialRegisterTo: Register to +TutorialDeregisterUntil: Deregister until +TutorialsHeading: Tutorials +TutorialEdit: Edit +TutorialDelete: Delete +TutorialTutorControlled: Tutors may edit tutorial +TutorialTutorControlledTip: Should tutors be allowed to edit arbitrary aspects of this tutorial (name, registration group, room, time, other tutors, ...) at will? + +CourseExams: Exams +CourseTutorials: Tutorials + +ParticipantsN n: #{n} #{pluralEN n "participant" "participants"} +TutorialDeleteQuestion: Do you really want to delete the tutorial listed below? +TutorialDeleted: Tutorial deleted + +TutorialRegisteredSuccess tutn: Successfully registered for the tutorial #{tutn} +TutorialDeregisteredSuccess tutn: Successfully de-registered for the tutorial #{tutn} + +TutorialNameTip: Needs to be unique within the course +TutorialCapacityNonPositive: Capacity may not be negative +TutorialCapacityTip: Limits how many course participants may register for this tutorial +TutorialRegGroupTip: Course participants may only register for a maximum of one tutorial per registration group. Tutorials that do not have a registration group are treated as being in different registration groups +TutorialRoomPlaceholder: Room +TutorialTutors: Tutors +TutorialTutorAlreadyAdded: An user with this email address is already registered as tutor + +OccurrenceNoneScheduled: No regular occurrences (yet) +OccurrenceNoneExceptions: No exceptions (yet) + +TutorialNew: New tutorial + +TutorialNameTaken tutn: A tutorial named #{tutn} already exists +TutorialCreated tutn: Successfully created tutorial #{tutn} +TutorialEdited tutn: Successfully edited tutorial #{tutn} + +TutorialEditHeading tutn: Edit #{tutn} + +MassInputTip: You may specify multiple values. Values must be added to the list by clicking + and can be removed again by clicking -. All changes must be confirmed by clicking the form submit button. + +HealthReport: Health report +InstanceIdentification: Instance identification + +InstanceId: Instance id +ClusterId: Cluster id + +HealthMatchingClusterConfig: Cluster config matches +HealthHTTPReachable: Cluster can be reached under the expected URL via HTTP +HealthLDAPAdmins: Proportion of administrators that were found in the LDAP directory +HealthSMTPConnect: SMTP server is reachable +HealthWidgetMemcached: Memcached server is serving widgets correctly +HealthActiveJobExecutors: Proportion of job workers accepting new jobs + +CourseParticipantsHeading: Course participants +CourseParticipantsCount n: #{n} +CourseParticipantsCountOf n m: #{n} of #{m} +CourseParticipants n: Currently #{n} course #{pluralEN n "participant" "participants"} +CourseParticipantsInvited n: #{n} #{pluralEN n "invitation" "invitations"} sent via email +CourseParticipantsAlreadyRegistered n: #{n} #{pluralEN n "participant is" "participants are"} already enrolled +CourseParticipantsRegisteredWithoutField n: #{n} #{pluralEN n "participant was" "participants were"} registered without #{pluralEN n "an associated field of study" "associated fields of study"}, because #{pluralEN n "it" "they"} could not be determined uniquely. +CourseParticipantsRegistered n: Successfully registered #{n} #{pluralEN n "participant" "participants"} +CourseParticipantsRegisterHeading: Add course participants + +ExamRegistrationAndCourseParticipantsRegistered n: Registered #{n} #{pluralEN n "participant" "participants"} for the exam as well as for the course +ExamRegistrationNotRegisteredWithoutCourse n: #{n} #{pluralEN n "user" "users"} were not registered for the exam since they are not enrolled in the course +ExamRegistrationRegisteredWithoutField n: Registered #{n} #{pluralEN n "participant" "participants"} for the exam as well as for the course. The #{pluralEN n "participant was" "participants were"} enrolled without #{pluralEN n "an associated field of study" "associated fields of study"} since #{pluralEN n "it" "they"} could not be determined uniquely. +ExamRegistrationParticipantsRegistered n: #{n} #{pluralEN n "participant was" "participants were"} registered for the exam +ExamRegistrationInviteDeadline: Invitation valid until +ExamRegistrationEnlistDirectly: Register known users directly +ExamRegistrationEnlistDirectlyTip: Should users whose email addresses are known to the system be registered for the exam directly? Otherwise invitations will be sent to alle users, which they will have to accept first in order to be registered. Unknown users always receive an invitation. +ExamRegistrationRegisterCourse: Also enroll users in course +ExamRegistrationRegisterCourseTip: Users that aren't enrolled already won't be registered for the exam otherwise. +ExamRegistrationInviteField: Email addresses +ExamParticipantsRegisterHeading: Add exam participants +ExamParticipantsInvited n: #{n} #{pluralEN n "invitation" "invitations"} sent via email + +ExamName: Name +ExamTime: Time +ExamsHeading: Exams +ExamNameTip: Needs to be unique within the course +ExamStart: Start +ExamEnd: End +ExamDescription: Description +ExamVisibleFrom: Visible from +ExamVisibleFromTip: If left empty the exam is never visible and course participants may not register. +ExamRegisterFrom: Register from +ExamRegisterFromTip: Start of the period in which course participants may register themselves for the exam. If left empty participants are never allowed to register. +ExamRegisterTo: Register to +ExamDeregisterUntil: Deregister until +ExamPublishOccurrenceAssignments: Publish occurrence/room-assignments +ExamPublishOccurrenceAssignmentsTip: At this time participants are informed to which occurrence/room they are assigned +ExamPublishOccurrenceAssignmentsParticipant: Occurrence/room-assignments published +ExamFinished: Marking finished +ExamFinishedOffice: Exam achievements published +ExamFinishedParticipant: Marking expected to be finished +ExamFinishedTip: At this participants are informed of their exam achievements +ExamClosed: Exam achievements registered +ExamClosedTip: At this time exam offices, which pull exam achievements from Uni2work, are informed. Changes to exam achievements trigger further notifications +ExamShowGrades: Exam is graded +ExamShowGradesTip: Should participants and relevant exam offices be show exact grades or only whether the exam was passed or failed? +ExamPublicStatistics: Publish statistics +ExamPublicStatisticsTip: Should automatically computed statistics also be shown to participants as soon as they are informed of their achievements? +ExamAutomaticGrading: Automatically compute grades +ExamAutomaticGradingTip: Should the exam achievement be automatically computed from the results of the exam parts? Bonus points are considered if configured. Manually overriding the computed exam achievements remains possible. +ExamGradingRule: Grade computation +ExamGradingManual': No automatic computation +ExamGradingKey': By grading scale +ExamGradingKey: Grading scale +ExamGradingKeyTip: Values in the grading scale refer to the effective maximum number of points. Bonus points from exercises are added and results for exam parts are multiplied with the part's weight. +Points: Points +PointsMustBeNonNegative: Point boundaries may not be negative +PointsMustBeMonotonic: Point boundaries must increase monotonically +GradingFrom: From +ExamNew: New Exam +ExamBonus: Bonus point system +ExamBonusRule: Bonus points from exercises +ExamNoBonus': No automatic exam bonus +ExamBonusPoints': Compute from exercise achievements +ExamBonusManual': Manual computation + +ExamBonusAchieved: Bonus points + +ExamEditHeading examn: Edit #{examn} + +ExamBonusMaxPoints: Maximum exam bonus points +ExamBonusMaxPointsTip: Bonus points are linearly interpolated from the number of exercise points achieved (or exercise sheets passed as applicable) between zero and the given bound. +ExamBonusMaxPointsNonPositive: Maximum exam bonus points must be positive and greater than zero +ExamBonusOnlyPassed: Apply bonus only if already passed +ExamBonusRound: Round bonus to +ExamBonusRoundNonPositive: Rounding multiple must be positive and greater than zero +ExamBonusRoundTip: Bonus points are rounded commercially to a multiple of the given number + +ExamAutomaticOccurrenceAssignment: Automatically assign occurrence/room +ExamAutomaticOccurrenceAssignmentTip: Should exam participants be distributed automatically among the configured occurrences/rooms? Manipulation of the distribution and manually assigning participants remains possible. +ExamOccurrenceRule: Procedure +ExamOccurrenceRuleParticipant: Occurrence/room assignment procedure +ExamRoomManual': No automatic assignment +ExamRoomSurname': By surname +ExamRoomMatriculation': By matriculation +ExamRoomRandom': Randomly + +ExamOccurrence: Occurrence/room +ExamNoOccurrence: No occurrence/room +ExamOccurrences: Exams +ExamRooms: Rooms +ExamRoomAlreadyExists: Occurrence already configured +ExamRoomName: Internal name +ExamRoom: Room +ExamRoomCapacity: Capacity +ExamRoomCapacityNegative: Capacity may not be negative +ExamRoomTime: Time +ExamRoomStart: Start +ExamRoomEnd: End +ExamRoomDescription: Description +ExamTimeTip: Only for informational purposes. The actual times are set for each occurrence/room +ExamRoomRegistered: Assigned + +ExamOccurrenceStart: Exam starts + +ExamFormTimes: Times +ExamFormOccurrences: Occurrences/rooms +ExamFormAutomaticFunctions: Automatic functions +ExamFormCorrection: Correction +ExamFormParts: Exam parts + +ExamCorrectors: Correctors +ExamCorrectorAlreadyAdded: A corrector with this email address already exists + +ExamParts: Exam parts/questions +ExamPartWeightNegative: Weight of all exam parts must be greater than or equal to zero +ExamPartAlreadyExists: An exam part of this name already exists +ExamPartNumber: Number +ExamPartNumbered examPartNumber: Part #{view _ExamPartNumber examPartNumber} +ExamPartNumberTip: Will be used as an internal name e.g. during CSV-export +ExamPartName: Title +ExamPartNameTip: Will be shown to participants +ExamPartMaxPoints: Maximum points +ExamPartWeight: Weight +ExamPartWeightTip: Will be multiplied with the achieved number of points before they are shown to the participant or used in automatic grade computation. Thus this also affects existing exam results (changed exam achievements have to be accepted manually again) +ExamPartResultPoints: Achieved points + +ExamNameTaken exam: There already is an exam named #{exam} +ExamCreated exam: Successfully created #{exam} +ExamEdited exam: Successfully edited #{exam} + +ExamNoShow: Not present +ExamVoided: Voided + +ExamBonusManualParticipants: Manually computed by course administrators +ExamBonusPoints possible: Up to #{showFixed True possible} exam points +ExamBonusPointsPassed possible: Up to #{showFixed True possible} exam points applied only if the exam would also be passed without + +ExamPassed: Passed +ExamNotPassed: Failed +ExamResult: Exam result + +ExamRegisteredSuccess exam: Successfully registered for the exam #{exam} +ExamDeregisteredSuccess exam: Successufly deregistered from the exam #{exam} +ExamRegistered: Registered for the exam +ExamNotRegistered: Not registered for the exam +ExamRegistration: Exam registration + +ExamRegisterToMustBeAfterRegisterFrom: "Register to" must be after "register from" +ExamDeregisterUntilMustBeAfterRegisterFrom: "Deregister until" must be after "register from" +ExamStartMustBeAfterPublishOccurrenceAssignments: "Start" must be after "publish occurrence/room-assignments" +ExamEndMustBeAfterStart: "End" must be after "start" +ExamFinishedMustBeAfterEnd: "Marking finished" must be after "end" +ExamFinishedMustBeAfterStart: "Marking finished" must be after "start" +ExamClosedMustBeAfterFinished: "Exam achievements registered" must be after "marking finished" +ExamClosedMustBeAfterStart: "Exam achievements registered" must be after "start" +ExamClosedMustBeAfterEnd: "Exam achievements registered" must be after "end" + +ExamOccurrenceEndMustBeAfterStart eoName: End of the occurrence #{eoName} must be after it's start +ExamOccurrenceStartMustBeAfterExamStart eoName: Start of the occurrence #{eoName} must be after the exam start +ExamOccurrenceEndMustBeBeforeExamEnd eoName: End of the occurrence #{eoName} must be before the exam end +ExamOccurrenceDuplicate eoRoom eoRange: Combination of room #{eoRoom} and occurrence #{eoRange} occurs multiple times +ExamOccurrenceDuplicateName eoName: Internal name #{eoName} occurs multiple times + +VersionHistory: Version history +KnownBugs: Known bugs +ImplementationDetails: Implementation + +ExamSynchronised: Synchronised + +ExamUsersHeading: Exam participants +ExamUserDeregister: Deregister participants +ExamUserAssignOccurrence: Assign occurrence/room +ExamUserAcceptComputedResult: Accept computed result +ExamUserResetToComputedResult: Reset result +ExamUserResetBonus: Also reset exam bonus +ExamUsersDeregistered count: Successfully deregistered #{show count} #{pluralEN count "participant" "participants"} +ExamUsersOccurrenceUpdated count: Successfully assigned occurrence/room for #{show count} #{pluralEN count "participant" "participants"} +ExamUsersResultsAccepted count: Successfully accepted computed result for #{show count} #{pluralEN count "participant" "participants"} +ExamUsersResultsReset count: Successfully reset result for #{show count} #{pluralEN count "participant" "participants"} + +ExamUserSynchronised: Synchronised +ExamUserSyncOfficeName: Name +ExamUserSyncTime: Timestamp +ExamUserSyncSchools: Department +ExamUserSyncLastChange: Last changed +ExamUserMarkSynchronised: Mark exam achievements as synchronised + +ExamUserMarkSynchronisedCsv: Mark exam achievements as synchronised while exporting +ExamUserMarkedSynchronised n: Successfully marked #{n} #{pluralEN n "exam achievement" "exam achievements"} as synchronised + +ExamOfficeExamUsersHeading: Exam achievements + +CsvFile: CSV file +CsvModifyExisting: Modify existing entries +CsvAddNew: Add new entries +CsvDeleteMissing: Delete missing entries +BtnCsvExport: Export CSV file +BtnCsvImport: Import CSV file +BtnCsvImportConfirm: Finalise CSV import + +CsvImportNotConfigured: CSV import not configured +CsvImportConfirmationHeading: CSV import preview (no changes have been made yet) +CsvImportConfirmationTip: No changes have been made yet! Importing this CSV file corresponds to performing the edits listed below. Please choose the edits that should be performed before finalising the import. +CsvImportUnnecessary: Importing the given CSV file does not correspond to performing any edits +CsvImportSuccessful n: Successfully imported CSV file. #{n} #{pluralEN n "edit" "edits"} have been performed. +CsvImportAborted: CSV import aborted +CsvImportExplanationLabel: Informating regarding CSV import + +Proportion c of prop: #{c}/#{of} (#{rationalToFixed2 (100 * prop)}%) + +CourseUserCsvName tid ssh csh: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-participants +ExamUserCsvName tid ssh csh examn: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase examn}-participants +CourseApplicationsTableCsvName tid ssh csh: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-applications + +CsvColumnsExplanationsLabel: Column & cell format +CsvColumnsExplanationsTip: Meaning and format of the columns contained in imported and exported CSV files +CsvColumnExamUserSurname: Participant's surname +CsvColumnExamUserFirstName: Participant's given name +CsvColumnExamUserName: Participant's full name (usually includes surname and given name) +CsvColumnExamUserMatriculation: Participant's matriculation +CsvColumnExamUserField: Field of study the participant specified when enrolling for the course +CsvColumnExamUserDegree: Degree the participant pursues in their associated field of study +CsvColumnExamUserSemester: Semester the participant is in wrt. to their associated field of study +CsvColumnExamUserOccurrence: Occurrence/room the participant has been assigned +CsvColumnExamUserExercisePoints: Number of points the participant has achieved in the excercise +CsvColumnExamUserExercisePointsMax: Maximum number of points the participant could have achieved up to their assigned exam occurrence +CsvColumnExamUserExercisePasses: Number of exercise sheets the participant has passed +CsvColumnExamUserExercisePassesMax: Maximum number of exercise sheets the participant could have passed up to their assigned exam occurrence +CsvColumnExamUserBonus: Exam bonus points +CsvColumnExamUserParts: Number of points the participant achieved per exam part. One column per exam part if applicable. +CsvColumnExamUserResult: Exam achievement; "passed", "failed", "no-show", "voided", or any number grade ("1.0", "1.3", "1.7", ..., "4.0", "5.0") +CsvColumnExamUserCourseNote: Course notes for the participant + +CsvColumnUserName: Participant's full name +CsvColumnUserMatriculation: Participant's matriculation +CsvColumnUserSex: Participant's sex +CsvColumnUserEmail: Participant's email address +CsvColumnUserStudyFeatures: All active fields of study for the participant, separated by semicolon (;) +CsvColumnUserField: Field of study the participant specified when enrolling for the course +CsvColumnUserDegree: Degree the participant pursues in their associated field of study +CsvColumnUserSemester: Semester the participant is in wrt. to their associated field of study +CsvColumnUserRegistration: Time of participant's enrollment (ISO 8601) +CsvColumnUserNote: Course notes for the participant +CsvColumnUserTutorial: Tutorials which the user is registered for, separated by semicolon (;). For each registration group among the tutorials there is a separate column. The registration group columns contain at most one tutorial per participant. If every tutorial has a registration group there is no column "tutorial". + +CsvColumnExamOfficeExamUserOccurrenceStart: Exam occurrence (ISO 8601) + +CsvColumnApplicationsAllocation: Central allocation for which this application was made +CsvColumnApplicationsApplication: Globally unique number of application (for matching with the ZIP archive of all application files) +CsvColumnApplicationsName: Participant's full name +CsvColumnApplicationsMatriculation: Participant's matriculation +CsvColumnApplicationsField: Field of study the participant specified when applying +CsvColumnApplicationsDegree: Degree the participant pursues in their associated field of study +CsvColumnApplicationsSemester: Semester the participant is in wrt. to their associated field of study +CsvColumnApplicationsText: Application text +CsvColumnApplicationsHasFiles: Did the applicant provide any additional files with their application (see ZIP archive of all application files)? +CsvColumnApplicationsVeto: Vetoed applicants are never assigned to the course; "veto" or empty +CsvColumnApplicationsRating: Application grading; Any number grade ("1.0", "1.3", "1.7", ..., "4.0", "5.0"); Empty cells will be treated as if they contained a grade between 2.3 and 2.7 +CsvColumnApplicationsComment: Application comment; depending on course settings this might purely be a note for course administrators or be feedback for the applicant + +Action: Action +ActionNoUsersSelected: No users selected + +DBCsvDuplicateKey: Two rows in the CSV file reference the same database entry and are thus invalid +DBCsvDuplicateKeyTip: Please remove one of the lines listed below and try again. +DBCsvKeyException: For a row in the CSV file it could not be determined whether it references any database entry. +DBCsvException: An error occurred hile computing the set of edits this CSV import corresponds to. + +ExamUserCsvCourseRegister: Register users for the exam and enroll them in the course +ExamUserCsvRegister: Register users for the exam +ExamUserCsvAssignOccurrence: Assign occurrences/rooms to participants +ExamUserCsvDeregister: Deregister participants from the exam +ExamUserCsvSetCourseField: Modify field of study associated with the course +ExamUserCsvOverrideBonus: Override bonus points in contradiction of computed value +ExamUserCsvOverrideResult: Override exam result in contradiction of computed value +ExamUserCsvSetBonus: Set bonus points +ExamUserCsvSetResult: Set exam result +ExamUserCsvSetPartResult: Set result for exam part +ExamUserCsvSetCourseNote: Modify course participant notes +ExamBonusNone: No bonus points + +ExamUserCsvCourseNoteDeleted: Course note will be deleted + +ExamUserCsvExceptionNoMatchingUser: Course participant could not be identified uniquely +ExamUserCsvExceptionNoMatchingStudyFeatures: The specified field did not match with any of the participant's fields of study +ExamUserCsvExceptionNoMatchingOccurrence: Occurrence/room could not be identified uniquely + +CourseApplicationsTableCsvSetField: Modify field of study associated with the applicatio +CourseApplicationsTableCsvSetVeto: Set/remove veto +CourseApplicationsTableCsvSetRating: Set grading +CourseApplicationsTableCsvSetComment: Set comment + +CourseApplicationsTableCsvExceptionNoMatchingUser: Applicant could not be identified uniquely +CourseApplicationsTableCsvExceptionNoMatchingAllocation: Central allocation could not be identified uniquely +CourseApplicationsTableCsvExceptionNoMatchingStudyFeatures: The specified field did not match with any of the participant's fields of study + +TableHeadingFilter: Filter +TableHeadingCsvImport: CSV import +TableHeadingCsvExport: CSV export + +ExamResultAttended: Attended +ExamResultNoShow: Not present +ExamResultVoided: Voided +ExamResultNone: No exam result + +BtnAuthLDAP: Change to campus account +BtnAuthPWHash: Change to Uni2work accont +BtnPasswordReset: Reset password + +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 + +AuthPWHashAlreadyConfigured: User already logs in using their Uni2work account +AuthPWHashConfigured: User now logs in using their Uni2work account + +PasswordResetQueued: Sent link to reset password +ResetPassword: Reselt Uni2work password + +AuthMode: Authentication +AuthLDAP: Campus +AuthPWHash pwHash: Uni2work +CurrentPassword: Current password +NewPassword: New password +NewPasswordRepeat: New password (again) +CurrentPasswordInvalid: Current password is incorrect +PasswordRepeatInvalid: New passwords do not match +UserPasswordHeadingFor: Change password for +PasswordChangedSuccess: Successfully changed password + +FunctionaryInviteFunction: Function +FunctionaryInviteSchool: Department +FunctionaryInviteField: Email addresses to invite +FunctionaryInviteHeading: Add department functionaries + +FunctionariesInvited n: Invited #{n} #{pluralEN n "functionary" "functionaries"} via email +FunctionariesAdded n: Added #{n} #{pluralEN n "functionary" "functionaries"} + +MailSubjectSchoolFunctionInvitation school renderedFunction: Invitation to be #{renderedFunction} for “#{school}” +MailSchoolFunctionInviteHeading school renderedFunction: Invitation to be #{renderedFunction} for “#{school}” +SchoolFunctionInviteExplanation renderedFunction: You were invited to act as #{renderedFunction} for a department. By accepting the invitation you are granted elevated rights within the department. +SchoolFunctionInvitationAccepted school renderedFunction: Successfully accepted invitation to be #{renderedFunction} for “#{school}” + +AllocationActive: Active +AllocationName: Name +AllocationAvailableCourses: Courses +AllocationAppliedCourses: Applications +AllocationNumCoursesAvailableApplied available applied: You have applied for #{applied}/#{available} #{pluralEN applied "course" "courses"} +AllocationTitle termText ssh' allocation: #{termText} - #{ssh'}: #{allocation} +AllocationShortTitle termText ssh' ash: #{termText} - #{ssh'} - #{ash} +AllocationSchool: Department +AllocationSemester: Semester +AllocationDescription: Description +AllocationStaffDescription: Staff description +AllocationStaffRegisterFrom: Registration of courses starts +AllocationStaffRegister: Registration of courses +AllocationRegisterFrom: Application period start +AllocationRegister: Application period +AllocationRegisterClosed: This central allocation is currntely closed. +AllocationRegisterOpensIn difftime: This central allocation is expected to open in #{difftime} +AllocationStaffAllocationFrom: Grading of applications starts +AllocationStaffAllocation: Grading of applications +AllocationRegisterByStaff: Enrollment by course administrators +AllocationRegisterByStaffFrom: Enrollment by course administrators starts +AllocationRegisterByStaffTip: In this periods course administrators may enroll participants in their courses. +AllocationRegisterByStaffFromTip: Starting at this time course administrators may enroll participants in their courses. +AllocationRegisterByCourseFrom: Direct enrollment starts +AllocationRegisterByCourseFromTip: Starting at this time course administrators participating in this central allocation may open their courses for participants to manage their participation themselves. +AllocationOverrideDeregister: Leaving courses only until +AllocationProcess: Allocation process +AllocationNoApplication: No application +AllocationPriority: Priority +AllocationPriorityTip: Courses which you assign a higher priority are preferred during the allocation process. +AllocationPriorityRelative: The absolute priority values are meaningless. The only consideration is whether one course has a higher priority than another. +AllocationTotalCoursesNegative: Requested number of placements must be greater than zero +AllocationTotalCourses: Requested number of placements +AllocationTotalCoursesTip: During the allocation process you will be placed in at most as many courses as specified +AllocationRegistered: Successfully registered participation in this central allocation +AllocationRegistrationEdited: Successfully edited registration for this central allocation +BtnAllocationRegister: Register participation +BtnAllocationRegistrationEdit: Edit registration +AllocationParticipation: Your participation in this central allocation +AllocationParticipationLoginFirst: To participate in this central allocation, please log in first +AllocationCourses: Centrally allocated courses +AllocationData: Organisation +AllocationCoursePriority i: #{ordinalEN i} +AllocationCourseNoApplication: No application +BtnAllocationApply: Apply +BtnAllocationApplicationEdit: Edit application +BtnAllocationApplicationRetract: Retract application +BtnAllocationApplicationRate: Grade application +ApplicationPriority: Priority +ApplicationVeto: Veto +ApplicationVetoTip: Vetoed applicants will not be assigned to the course +ApplicationRatingPoints: Grading +ApplicationRatingPointsTip: Applicants graded 5.0 will not be assigned to the course +ApplicationRatingComment: Comment +ApplicationRatingCommentVisibleTip: Feedback for the applicant +ApplicationRatingCommentInvisibleTip: Currently only a note for course administrators +ApplicationRatingSection: Grading +ApplicationRatingSectionSelfTip: You are authorised to edit the application as well as it's grading. + +AllocationSchoolShort: Department +Allocation: Central alloction +AllocationRegisterTo: Registration until + +AllocationListTitle: Central allocations + +CourseApplicationsListTitle: Applications +CourseApplicationId: Application number +CourseApplicationRatingPoints: Grading +CourseApplicationVeto: Veto +CourseApplicationNoVeto: No veto +CourseApplicationNoRatingPoints: No grading +CourseApplicationNoRatingComment: No comment + +UserDisplayName: Display name +UserDisplayNameInvalid: Display name does not comply with specification +UserDisplayNameRules: Specification for display names +UserDisplayNameRulesBelow: Specifications of what can be a display name can be found below +UserMatriculation: Matriculation + +UserDisplayEmail: Display email +UserDisplayEmailTip: This email address may be displayed publicly alongside your display name. Notifications and other communication from Uni2work or users with elevated permissions are always sent to your primary email address as specified under "personal information". +UserDisplayEmailChangeSent displayEmail: Instructions to change your display email have been sent to “#{displayEmail}”. + +SchoolShort: Shorthand +SchoolName: Name +SchoolLdapOrganisations: Associated LDAP fragments +SchoolLdapOrganisationsTip: When logging in users are associated with any departments whose associated LDAP fragments are found in the users LDAP entry + +SchoolUpdated ssh: Successfully edited #{ssh} +SchoolTitle ssh: Department „#{ssh}“ +TitleSchoolNew: Neues Institut anlegen +SchoolCreated ssh: Successfully created #{ssh} +SchoolExists ssh: A department named „#{ssh}“ already exists + +SchoolAdmin: Admin +SchoolLecturer: Lecturer +SchoolEvaluation: Course evaluation +SchoolExamOffice: Exam office + +ApplicationEditTip: During the application period you may edit and retract your applications at will. + +UserLdapSync: Synchronise with LDAP +AllUsersLdapSync: Synchronise all with LDAP +SynchroniseLdapUserQueued n: Triggered LDAP synchronisation of #{n} #{pluralEN n "user" "users"}. +SynchroniseLdapAllUsersQueued: Triggered LDAP synchronisation of all users +UserHijack: Hijack session + +MailSubjectAllocationStaffRegister allocation: You may now register courses for the central allocation “#{allocation}” +MailAllocationStaffRegisterNewCourse: You can create new courses on the page linked below. While doing so you now have to option to specifiy that the course should participate in the central allocation. +MailAllocationStaffRegisterDeadline deadline: Please consider that alle courses must be registered until #{deadline} in order to participate in the central allocation. + +MailSubjectAllocationRegister allocation: You may now apply for the central allocation “#{allocation}” +MailAllocationRegister: You may now apply for each individual course particpating in the central allocation on the page linked below. +MailAllocationRegisterDeadline deadline: Please consider that all applications have to be made until #{deadline}. + +MailSubjectAllocationAllocation allocation: You may now grade applications made to your courses for the central allocation “#{allocation}” +MailAllocationAllocation: On the page linked below you may now grade applications made to your corses for the central allocation. The grades you specify will be considered during the allocation process. +MailAllocationApplicationsMayChange deadline: Please consider that students may continue to apply, retract, and edit their applications until #{deadline}. Applications that change after being graded will need to be graded again. +MailAllocationAllocationDeadline deadline: Please consider that grading of applications is only possible until #{deadline}. + +MailSubjectAllocationUnratedApplications allocation: Some applications made to your courses for the central allocation “#{allocation}” are not yet graded +MailAllocationUnratedApplications: Applications have been made to the courses listed below for the central allocation, which have not yet been graded. + +MailSubjectAllocationOutdatedRatings allocation: Applications made to your courses for the central allocation “#{allocation}” have changed since being graded +MailAllocationOutdatedRatings: Applications have been made to the courses list below for the central allocation, which have changed since they were last graded. +MailAllocationOutdatedRatingsWarning: Applications whose grading is deprecated (i.e. that have been changed since they were graded) are considered not to have been graded during the allocation process. + +ExamOfficeSubscribedUsers: Users +ExamOfficeSubscribedUsersTip: You may specify multiple matriculations; comma-separated + +ExamOfficeSubscribedUsersExplanation: You will be able to view all exam achievements (with no regard for the students fields of study) for all users specified here. +ExamOfficeSubscribedFieldsExplanation: You will be able to view all exam achievements for any user that has at least one of the specified fields of study. You may additionally configure whether users should be allowed to opt out on a course by course basis. + +UserMatriculationNotFound matriculation@Text: Es existiert kein Uni2work-Benutzer mit Matrikelnummer „#{matriculation}“ +UserMatriculationAmbiguous matriculation@Text: Matrikelnummer „#{matriculation}“ ist nicht eindeutig + +TransactionExamOfficeUsersUpdated nDeleted@Int nAdded@Int: #{nAdded} Benutzer hinzugefügt, #{nDeleted} Benutzer gelöscht + +TransactionExamOfficeFieldsUpdated nUpdates@Int: #{nUpdates} #{pluralDE nUpdates "Studienfach" "Studienfächer"} angepasst +ExamOfficeFieldNotSubscribed: — +ExamOfficeFieldSubscribed: Einsicht +ExamOfficeFieldForced: Forcierte Einsicht +InvalidExamOfficeFieldMode parseErr@Text: Konnte „#{parseErr}“ nicht interpretieren + +LdapIdentification: Campus account +LdapIdentificationOrEmail: Campus account/email address +AdminUserTitle: Title +AdminUserFirstName: Given name +AdminUserSurname: Surname +AdminUserDisplayName: Display name +AdminUserEmail: Email address +AdminUserDisplayEmail: Display email +AdminUserIdent: Identification +AdminUserAuth: Authentication +AdminUserMatriculation: Matriculation +AdminUserSex: Sex +AuthKindLDAP: Campus account +AuthKindPWHash: Uni2work account +UserAdded: Successfully added user +UserCollision: Could not create user due to uniqueness constraint + +CourseAllocationsBounds n: Expected number of alloctions due to #{pluralEN n "central allocation" "central allocations"} +CourseAllocationsBoundCoincide numFirstChoice: Est. #{numFirstChoice} #{pluralEN numFirstChoice "participant" "participants"} +CourseAllocationsBound numApps numFirstChoice: Est. between #{numFirstChoice} and #{numApps} #{pluralEN numApps "participant" "participants"} +CourseAllocationsBoundCapped: The numbers listed above were modified based on the currently configured course capacity. +CourseAllocationsBoundWarningOpen: The information listed above represents only the current state of applications and is subject to change. + +BtnSetDisplayEmail: Set email address +UserDisplayEmailChanged: Successfully set display email +TitleChangeUserDisplayEmail: Set display email + +MailSubjectChangeUserDisplayEmail: Publishing this email address in Uni2work +MailIntroChangeUserDisplayEmail displayEmail: The user mentioned above wants to publish “#{displayEmail}” as their own email address. If you have not caused this email to be sent, please ignore it! +MailTitleChangeUserDisplayEmail displayName: #{displayName} wants to publish this email address as their own in Uni2work + +ExamOfficeOptOutsChanged: Successfully adjusted relevant exam offices + +BtnCloseExam: Close exam +ExamCloseTip: When an exam is closed all relevant exam offices, which pull exam achievements from Uni2work, are informed and kept up to date with changes. +ExamCloseReminder: Please close the exam as soon as possible, when exam achievements are no longer expected to change e.g. after inspection of the exam has concluced. +ExamDidClose: Successfully closed exam + +ExamClosedSince time: Exam closed since #{time} + +LecturerInfoTooltipNew: New feature +LecturerInfoTooltipProblem: Feature with known issues +LecturerInfoTooltipPlanned: Planned feature +LecturerInfoTooltipNewU2W: Unlike UniWorX + +BtnAcceptApplications: Accept applications +BtnAcceptApplicationsTip: By clicking the button below you may fill the course with applicants (only up to the maximum capacity if configured). Grading of applications will be considered (no grading is treated as if graded between 2.3 and 2.7). Vetoed applicants and applications graded 5.0 will not be enrolled. +AcceptApplicationsMode: Accept applications +AcceptApplicationsModeTip: Should accepted applications be enrolled in the course directly or should invitations be sent via email? +AcceptApplicationsDirect: Enroll directly +AcceptApplicationsInvite: Send invitations +AcceptApplicationsSecondary: Breaking ties +AcceptApplicationsSecondaryTip: If a tie occurs during the acceptance process, how should it be broken? +AcceptApplicationsSecondaryRandom: Randomly +AcceptApplicationsSecondaryTime: By time of application + +CsvOptions: CSV options +CsvOptionsTip: These settings primarily affect CSV export. During import most settings can be determined automatically. CSV import expects the same character encoding as used for export. +CsvFormatOptions: File format +CsvTimestamp: Timestamp +CsvTimestampTip: Should the name of every exported csv file contain a timestamp? +CsvPresetRFC: Standards-compliant (RFC 4180) +CsvPresetExcel: Excel compatible +CsvCustom: User defined +CsvDelimiter: Separator character +CsvUseCrLf: Linebreaks +CsvQuoting: Quoting +CsvQuotingTip: When should quotation characters (") be placed around fields so characters contained within will not be interpreted as field separators? +CsvEncoding: Encoding +CsvEncodingTip: CSV files can be exported in a different character encoding than the UTF-8 used by default. Please consider that non-UTF-8 character encodings might lead to encoding problems with special characters. +CsvUTF8: UTF-8 (Unicode) +CsvCP1252: Windows CP-1252 ("ANSI") +CsvDelimiterNull: Null byte +CsvDelimiterTab: Tab +CsvDelimiterComma: Comma +CsvDelimiterColon: Colon +CsvDelimiterSemicolon: Semicolon +CsvDelimiterBar: Vertical bar +CsvDelimiterSpace: Space +CsvDelimiterUnitSep: Unit separator character +CsvCrLf: DOS (CRLF) +CsvLf: Unix (LF) +CsvQuoteNone: Never +CsvQuoteMinimal: Only when necessary +CsvQuoteAll: Always +CsvOptionsUpdated: Successfully changed CSV options +CsvChangeOptionsLabel: Export options + +CourseNews: News +CourseNewsArchiveName tid ssh csh newsTitle: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldCase newsTitle} +CourseNewsFiles: Files +CourseNewsLastEdited time: Last changed: #{time} +CourseNewsActionEdit: Edit +CourseNewsActionDelete: Delete +CourseNewsActionCreate: Create new item +CourseMaterial: Material +CourseMaterialFree: Course material is publicly accessable +CourseMaterialNotFree: Only course participants may access course material + +CourseNewsVisibleFromEditWarning: This item of course news has already been published and should no longer be changed sind this might confuse participants. +CourseNewsVisibleFromTip: If left empty this item is never visible. Leave empty for unfinished items +CourseNewsTitle: Title +CourseNewsSummary: Summary +CourseNewsSummaryTip: If specified this only the summary will be shown on the course page, saving space. The content will be shown in a popup +CourseNewsContent: Content +CourseNewsParticipantsOnly: Only for course participants +CourseNewsVisibleFrom: Visible from +CourseNewsCreated: Successfully created item of course news +CourseNewsEdited: Successfully edited item of course news +CourseNewsDeleteQuestion: Are you sure you want to delete the item of course news listed below? +CourseNewsDeleted: Successfully deleted item of course news + +CourseDeregistrationAllocationLog: Your enrollment in this course is due to a central allocation. If you leave the course, this will be permanently recorded and might affect you negatively in future central allocations. If you have good reasons why you should not be held accountable for leaving the course, please contact a course administrator. Course administrators can deregister you without incurring a permanent record. +CourseDeregistrationAllocationReason: Reason +CourseDeregistrationAllocationReasonTip: The specified reason will be permanently stored and might be the only information available during conflict resolution +CourseDeregistrationAllocationShouldLog: Self imposed +CourseDeregistrationAllocationShouldLogTip: If the participant was enrolled in this course due to a central allocation, it is intended that a permanent record be made that might affect the student negatively in future central allocations. As a course administrator you have the right to prevent this if the participant can present good reasons why them leaving the course is not self imposed. + +MailSubjectAllocationResults allocation: Placements have been made for the central allocation “#{allocation}” +AllocationResultsLecturer: In the course of the central allocations placements have been made as follows: +AllocationResultLecturer csh count count2: #{count} #{pluralEN count "participant" "participants"} (of #{count2}) for #{csh} +AllocationResultLecturerAll csh count: #{count} #{pluralEN count "participant" "participants"} for #{csh} +AllocationResultLecturerNone csh: No participants for #{csh} +AllocationResultsStudent: You have been placed in: +AllocationNoResultsStudent: Unfortunately you were not placed in any courses. +AllocationResultStudent csh: You were placed in #{csh}. +AllocationResultsTip: The following information reflect the current state of the allocation and are subject to change (e.g. when handling succession). You will be informed separately if any future changes concern you. +AllocationResultsStudentTip: Listed below are placements in courses which you have received due to the mentioned central allocation and for which you have not left the respective course or have been deregistered. Thus placements you have been informed of already may be listed again. +AllocationResultStudentRegistrationTip: You were enrolled in the course mentioned above in Uni2work. +AllocationResultsStudentRegistrationTip: You were enrolled in the courses mentioned above in Uni2work. + +FavouriteVisited: Visited +FavouriteParticipant: Your courses +FavouriteManual: Favourites +FavouriteCurrent: Current course + +CourseEvents: Occurrences +CourseEventType: Type +CourseEventTypePlaceholder: Lecture, Exercise discussion, ... +CourseEventTime: Time +CourseEventRoom: Regular room +CourseEventActions: Actions +CourseEventsActionEdit: Edit +CourseEventsActionDelete: Delete +CourseEventsActionCreate: New occurrence +CourseEventCreated: Successfully created course occurrence +CourseEventEdited: Successfully edited course occurrence +CourseEventDeleteQuestion: Are you sure you want to delete the course occurrence mentioned below? +CourseEventDeleted: Successfully deleted course occurrence + +UserSimplifiedFeaturesOfStudyCsv: Simplified features of study +UserSimplifiedFeaturesOfStudyCsvTip: Should field of study, degree, and semester be exported in separate columns for ease of processing? If so only the field of study associated by the user with their course registration will be exported. + +Sex: Sex +SexNotKnown: Unknown +SexMale: Male +SexFemale: Female +SexNotApplicable: Not applicable + +ShortSexNotKnown: unk. +ShortSexMale: m +ShortSexFemale: f +ShortSexNotApplicable: N/A + +ShowSex: Show sex of other users +ShowSexTip: Should users' sex be displayed in (among others) lists of course participants? + MenuLanguage: Language LanguageChanged: Language changed successfully + +ProfileCorrector: Corrector +ProfileCourses: Own courses +ProfileCourseParticipations: Course registrations +ProfileCourseExamResults: Exam achievements +ProfileTutorials: Own tutorials +ProfileTutorialParticipations: Tutorials +ProfileSubmissionGroups: Submission groups +ProfileSubmissions: Submissions +ProfileRemark: Remarks +ProfileGroupSubmissionDates: No date is shown for group submissions if you have never uploaded the submission yourself. +ProfileCorrectorRemark: The table above only shows registration as a corrector in principle. Even without registration corrections can be assigned individually and are not listed. +ProfileCorrections: List of all assigned corrections + +GroupSizeNotNatural: “Maximum group size” needs to be a natural number +AmbiguousEmail: Email address is ambiguous +CourseDescriptionPlaceholder: Please include the module description +CourseHomepageExternalPlaceholder: Optional external URL +PointsPlaceholder: Points +RFC1766: RFC1766 language code + +TermShort: Shorthand +TermCourseCount: Courses +TermStart: Semester start +TermEnd: Semester end +TermStartMustMatchName: Shorthand number does not match semester start. +TermEndMustBeAfterStart: Semester end may not be before semester start. +TermLectureEndMustBeAfterStart: Lecture start may not be after lecture end. +TermStartMustBeBeforeLectureStart: Semester start must be before lecture start. +TermEndMustBeAfterLectureEnd: Lecture end must be before semester end. +AdminPageEmpty: This page shall provide an overview for administrators in the future. For now there are only links to important administrator-functions. +HaveCorrectorAccess sheetName: You have corrector access to #{original sheetName}. +FavouritesPlaceholder: Number of favourites +FavouritesNotNatural: Number of favourites must be a natural number! +FavouritesSemestersPlaceholder: Number of semesters +FavouritesSemestersNotNatural: Maximum number of semesters in favourites bar must be a natural number! + +ProfileTitle: Settings + +GlossaryTitle: Glossary +MenuGlossary: Glossary + +Applicant: Applicant +CourseParticipant: Course participant diff --git a/src/Foundation.hs b/src/Foundation.hs index 7d75f5a98..34b7d6013 100644 --- a/src/Foundation.hs +++ b/src/Foundation.hs @@ -272,6 +272,17 @@ noneMoreEN num noneText someText | num == 0 = noneText | otherwise = someText +ordinalEN :: ToMessage a + => a + -> Text +ordinalEN (toMessage -> numStr) = case lastChar of + Just '1' -> [st|#{numStr}st|] + Just '2' -> [st|#{numStr}nd|] + Just '3' -> [st|#{numStr}rd|] + _other -> [st|#{numStr}th|] + where + lastChar = last <$> fromNullable numStr + -- Convenience Type for Messages, since Yesod messages cannot deal with compound type identifiers type IntMaybe = Maybe Int diff --git a/src/Handler/Utils/Form.hs b/src/Handler/Utils/Form.hs index 73c8e076e..b9f0138dd 100644 --- a/src/Handler/Utils/Form.hs +++ b/src/Handler/Utils/Form.hs @@ -1235,13 +1235,14 @@ csvFormatOptionsForm fs mPrev = hoistAForm liftHandler . multiActionA csvActs fs MsgRenderer mr <- getMsgRenderer let opts = - [ (MsgCsvDelimiterNull, '\0') - , (MsgCsvDelimiterTab, '\t') - , (MsgCsvDelimiterComma, ',') - , (MsgCsvDelimiterColon, chr 58) - , (MsgCsvDelimiterBar, '|') - , (MsgCsvDelimiterSpace, ' ') - , (MsgCsvDelimiterUnitSep, chr 31) + [ (MsgCsvDelimiterNull, '\0') + , (MsgCsvDelimiterTab, '\t') + , (MsgCsvDelimiterComma, ',') + , (MsgCsvDelimiterColon, chr 58) + , (MsgCsvDelimiterSemicolon, chr 59) + , (MsgCsvDelimiterBar, '|') + , (MsgCsvDelimiterSpace, ' ') + , (MsgCsvDelimiterUnitSep, chr 31) ] olReadExternal t = do i <- readMay t diff --git a/templates/i18n/admin-test/en-eu.hamlet b/templates/i18n/admin-test/en-eu.hamlet new file mode 100644 index 000000000..37710392b --- /dev/null +++ b/templates/i18n/admin-test/en-eu.hamlet @@ -0,0 +1,65 @@ +
+ + +

+ This page is intended only to test certain functionality and to demonstrate + various helper functions and modules. + + This handler should contain up to date examples of all functions so it can + be the first point of contact. + +

+ ^{iconTooltip testTooltipMsg Nothing False} + ^{messageTooltip msgInfoTooltip} + ^{messageTooltip msgSuccessTooltip} + ^{messageTooltip msgWarningTooltip} + ^{messageTooltip msgErrorTooltip} + ^{messageTooltip msgNonDefaultIconTooltip} + +

+ + Buy Tooltip-White for brighter tooltips! + The tooltip handle should always be set so tooltips are usable on mobile devices and without javascript. + +

+

Manually created table + + + + + + +
Header A + Header +
B + C +
1 + 2 + 3 +
+ + Buy Tooltip-White for brighter tooltips! (DOES NOT WORK) + 4 + 5 + + Buy Tooltip-White for brighter tooltips! (DOES NOT WORK) + 6 +
7 + 8 + 9 + +
+

Functions for testing + +