{ "common": { "appName": "Redlight", "loading": "Loading...", "save": "Save", "cancel": "Cancel", "delete": "Delete", "edit": "Edit", "create": "Create", "search": "Search...", "close": "Close", "confirm": "Confirm", "back": "Back", "yes": "Yes", "no": "No", "or": "or", "optional": "Optional", "unlimited": "Unlimited", "none": "None", "offline": "Offline", "active": "Active", "inactive": "Inactive", "protected": "Protected", "live": "Live", "error": "Error", "success": "Success" }, "nav": { "dashboard": "Dashboard", "settings": "Settings", "admin": "Administration", "appearance": "Appearance", "changeTheme": "Change theme", "navigation": "Navigation", "calendar": "Calendar", "federation": "Invitations", "imprint": "Imprint", "privacy": "Privacy Policy" }, "auth": { "login": "Sign in", "register": "Sign up", "logout": "Sign out", "email": "Email", "password": "Password", "name": "Name", "welcomeBack": "Welcome back", "loginSubtitle": "Sign in to access your rooms.", "createAccount": "Create account", "registerSubtitle": "Sign up to create rooms and start meetings.", "noAccount": "Don't have an account?", "hasAccount": "Already have an account?", "signUpNow": "Sign up now", "signInNow": "Sign in now", "backToHome": "← Back to homepage", "emailPlaceholder": "name@example.com", "passwordPlaceholder": "••••••••", "namePlaceholder": "John Doe", "minPassword": "At least 6 characters", "confirmPassword": "Confirm password", "repeatPassword": "Repeat password", "passwordMismatch": "Passwords do not match", "passwordTooShort": "Password must be at least 6 characters", "loginSuccess": "Welcome back!", "registerSuccess": "Registration successful!", "loginFailed": "Login failed", "registerFailed": "Registration failed", "allFieldsRequired": "All fields are required", "verificationSent": "Verification email sent!", "verificationSentDesc": "We've sent you an email with a verification link. Please click the link to activate your account.", "checkYourEmail": "Check your inbox", "verifying": "Verifying your email...", "verifySuccess": "Your email has been verified successfully. You can now sign in.", "verifySuccessTitle": "Email verified!", "verifyFailed": "Verification failed", "verifyFailedTitle": "Verification failed", "verifyTokenMissing": "No verification token provided.", "emailNotVerified": "Email not yet verified. Please check your inbox.", "username": "Username", "usernamePlaceholder": "e.g. johndoe", "usernameHint": "Letters, numbers, _ and - only (3-30 chars)", "displayName": "Display Name", "displayNamePlaceholder": "John Doe", "usernameTaken": "Username is already taken", "usernameInvalid": "Username may only contain letters, numbers, _ and - (3-30 chars)", "usernameRequired": "Username is required", "displayNameRequired": "Display name is required", "emailVerificationBanner": "Your email address has not been verified yet.", "emailVerificationResend": "Click here to receive a new verification email", "emailVerificationResendCooldown": "Resend in {seconds}s", "emailVerificationResendSuccess": "Verification email sent!", "emailVerificationResendFailed": "Could not send verification email", "inviteOnly": "Invite Only", "inviteOnlyDesc": "Registration is currently restricted. You need an invitation link from an administrator to create an account.", "orContinueWith": "or continue with", "loginWithOAuth": "Sign in with {provider}", "registerWithOAuth": "Sign up with {provider}", "backToLogin": "Back to login", "oauthError": "Authentication failed", "oauthNoToken": "No authentication token received.", "oauthLoginFailed": "Could not complete sign in. Please try again.", "oauthRedirecting": "Signing you in..." }, "home": { "madeFor": "Made for BigBlueButton", "heroTitle": "Meetings re", "heroTitleHighlight": "defined", "heroSubtitle": "The modern, self-hosted BigBlueButton frontend. Create rooms, manage recordings and enjoy a beautiful interface with over 15 themes.", "getStarted": "Get started", "features": "Everything you need", "featuresSubtitle": "Redlight provides all the features you need for professional video conferencing.", "featureVideoTitle": "Video Conferencing", "featureVideoDesc": "Create and manage meetings directly via BigBlueButton.", "featureRoomsTitle": "Room Management", "featureRoomsDesc": "Unlimited rooms with individual settings and access codes.", "featureUsersTitle": "User Management", "featureUsersDesc": "Registration, login and role management for your organization.", "featureThemesTitle": "15+ Themes", "featureThemesDesc": "Dracula, Nord, Catppuccin, Rosé Pine, Gruvbox and many more.", "featureRecordingsTitle": "Recordings", "featureRecordingsDesc": "View, publish or delete all recordings per room.", "featureOpenSourceTitle": "Open Source", "featureOpenSourceDesc": "Fully open source and self-hosted. Your data stays with you.", "statThemes": "Themes", "statRooms": "Rooms", "statOpenSource": "Open Source", "footer": "© {year} Redlight. An open source BigBlueButton frontend." }, "dashboard": { "myRooms": "My Rooms", "roomCount": "{count} room created | {count} rooms created", "newRoom": "New Room", "noRooms": "No rooms yet", "noRoomsSubtitle": "Create your first room to start meetings.", "createFirst": "Create first room", "createRoom": "Create new room", "roomName": "Room name", "roomNamePlaceholder": "e.g. Team Meeting", "roomNameRequired": "Room name is required", "welcomeMessage": "Welcome message", "welcomeMessageDefault": "Welcome to the meeting!", "maxParticipants": "Max. participants", "maxParticipantsHint": "0 = unlimited", "accessCode": "Access code", "muteOnJoin": "Mute participants on join", "allowRecording": "Allow recording", "roomCreated": "Room created!", "roomCreateFailed": "Room could not be created", "roomDeleted": "Room deleted", "roomDeleteFailed": "Room could not be deleted", "roomDeleteConfirm": "Really delete room \"{name}\"?", "loadFailed": "Rooms could not be loaded", "sharedWithMe": "Shared with me", "federatedRooms": "Rooms from other instances", "federatedRoomsSubtitle": "Accepted meeting invitations from other Redlight instances. Settings cannot be changed here." }, "room": { "backToDashboard": "Back to Dashboard", "start": "Start", "startMeeting": "Start meeting", "join": "Join", "end": "End", "openDetails": "Open details", "overview": "Overview", "recordings": "Recordings", "settings": "Settings", "participants": "{count} participants", "copyLink": "Copy link", "copyRoomLink": "Room Link", "copyGuestLink": "Guest Link", "linkCopied": "Link copied!", "meetingDetails": "Meeting details", "meetingId": "Meeting ID", "status": "Status", "maxParticipants": "Max. participants", "accessCode": "Access code", "roomSettings": "Room settings", "mutedOnJoin": "Muted on join", "micActiveOnJoin": "Microphone active on join", "approvalRequired": "Approval required", "freeJoin": "Free join", "allModerators": "All as moderator", "rolesAssigned": "Roles are assigned", "recordingAllowed": "Recording allowed", "recordingDisabled": "Recording disabled", "welcomeMsg": "Welcome message", "muteOnJoin": "Mute on join", "requireApproval": "Moderator approval required", "anyoneCanStart": "Anyone can start the meeting", "allJoinModerator": "All participants as moderator", "allowRecording": "Allow recording", "noAccessCode": "No access code", "emptyNoCode": "Empty = no code", "settingsSaved": "Settings saved", "settingsSaveFailed": "Settings could not be saved", "meetingStarted": "Meeting started!", "meetingStartFailed": "Meeting could not be started", "meetingEnded": "Meeting ended", "meetingEndFailed": "Meeting could not be ended", "joinFailed": "Join failed", "endConfirm": "Really end meeting?", "enterAccessCode": "Enter access code:", "notFound": "Room not found", "guestAccessTitle": "Guest Access", "guestAccess": "Enable guest access", "guestAccessHint": "Allows unauthenticated users to join the meeting.", "moderatorCode": "Moderator Code", "moderatorCodeHint": "Optional code for moderator rights", "moderatorCodeDesc": "Guests who enter this code will receive moderator rights.", "guestLink": "Guest Invite Link", "guestLinkCopied": "Guest link copied!", "guestJoinTitle": "Join Meeting", "guestCreatedBy": "Created by", "guestMeetingRunning": "Meeting in progress", "guestMeetingNotStarted": "Not started yet", "guestYourName": "Your Name", "guestNamePlaceholder": "John Doe", "guestAccessCode": "Access Code", "guestAccessCodePlaceholder": "Enter code", "guestModeratorCode": "Moderator Code", "guestModeratorOptional": "(optional)", "guestModeratorPlaceholder": "Only if you are a moderator", "guestJoinButton": "Join meeting", "guestWaitingMessage": "The meeting has not started yet. Please wait for the moderator to start it.", "guestWaitingTitle": "Waiting for meeting to start...", "guestWaitingHint": "You will be joined automatically as soon as the meeting starts.", "guestCancelWaiting": "Cancel", "guestMeetingStartedJoining": "Meeting started! Joining now...", "waitingToJoin": "Waiting...", "guestAccessDenied": "Access denied", "guestNameRequired": "Name is required", "guestJoinFailed": "Join failed", "guestAccessNotEnabled": "Guest access is not enabled for this room.", "guestWrongAccessCode": "Wrong access code", "guestHasAccount": "Have an account?", "guestSignIn": "Sign in", "guestRoomNotFound": "Room not found", "guestRecordingNotice": "This meeting may be recorded, including your audio and video.", "guestRecordingConsent": "I understand that this meeting may be recorded.", "shared": "Shared", "presentationTitle": "Default Presentation", "presentationDesc": "This file will be automatically pre-loaded in BBB when the meeting starts.", "presentationUpload": "Upload presentation", "presentationRemove": "Remove presentation", "presentationUploaded": "Presentation uploaded", "presentationRemoved": "Presentation removed", "presentationUploadFailed": "Could not upload presentation", "presentationRemoveFailed": "Could not remove presentation", "presentationAllowedTypes": "PDF, PPT, PPTX, ODP, DOC, DOCX · max. 50 MB", "presentationCurrent": "Current:", "shareTitle": "Share Room", "shareDescription": "Share this room with other users so they can see it in their dashboard and join meetings.", "shareSearchPlaceholder": "Search users (name or email)...", "shareAdded": "User added", "shareRemoved": "Share removed", "shareFailed": "Share failed", "shareRemove": "Remove share", "defaultWelcome": "Welcome to the meeting!", "analytics": "Learning Analytics", "enableAnalytics": "Enable learning analytics", "enableAnalyticsHint": "Collects participant engagement data after each meeting." }, "recordings": { "title": "Recordings", "noRecordings": "No recordings available", "published": "Published", "unpublished": "Unpublished", "presentation": "Presentation", "deleted": "Recording deleted", "deleteFailed": "Error deleting recording", "deleteConfirm": "Really delete recording?", "publishSuccess": "Recording published", "unpublishSuccess": "Recording unpublished", "publishFailed": "Error updating recording", "hide": "Hide", "publish": "Publish", "loadFailed": "Recordings could not be loaded" }, "analytics": { "title": "Learning Analytics", "noData": "No analytics data available", "participants": "Participants", "messages": "Messages", "expand": "Show details", "collapse": "Hide details", "deleteConfirm": "Really delete analytics data?", "deleted": "Analytics data deleted", "deleteFailed": "Error deleting data", "userName": "Name", "role": "Role", "moderator": "Moderator", "viewer": "Viewer", "talkTime": "Talk time", "webcamTime": "Webcam time", "duration": "Duration", "meetingDuration": "Meeting duration", "raiseHand": "Raise hand", "reactions": "Reactions" }, "settings": { "title": "Settings", "subtitle": "Manage your profile and settings", "profile": "Profile", "password": "Password", "themes": "Themes", "language": "Language", "editProfile": "Edit profile", "avatar": "Profile picture", "avatarColor": "Avatar color", "avatarColorHint": "Used as fallback when no image is uploaded.", "uploadImage": "Upload image", "removeImage": "Remove image", "avatarHint": "JPG, PNG, GIF or WebP. Max. 2 MB.", "avatarUploaded": "Profile picture updated", "avatarUploadFailed": "Error uploading image", "avatarRemoved": "Profile picture removed", "avatarRemoveFailed": "Error removing image", "avatarInvalidType": "Only image files are allowed", "avatarTooLarge": "Image must be less than 2 MB", "changePassword": "Change password", "currentPassword": "Current password", "newPassword": "New password", "confirmNewPassword": "Confirm new password", "profileSaved": "Profile saved", "profileSaveFailed": "Error saving profile", "passwordChanged": "Password changed", "passwordChangeFailed": "Error changing password", "passwordMismatch": "Passwords do not match", "selectLanguage": "Select language", "caldav": { "title": "CalDAV", "subtitle": "Connect your calendar app (e.g. Apple Calendar, Thunderbird, DAVx⁵) using the CalDAV protocol. Use your email address and an app token as password.", "serverUrl": "Server URL", "username": "Username (Email)", "hint": "Never enter your real Redlight password in a calendar app. Use an app token instead.", "newToken": "Generate new app token", "tokenNamePlaceholder": "e.g. \"iPhone\" or \"Thunderbird\"", "generate": "Generate", "existingTokens": "Active tokens", "noTokens": "No tokens created yet.", "created": "Created", "lastUsed": "Last used", "revoke": "Revoke", "revokeConfirm": "Really revoke this token? All connected calendar apps using this token will lose access.", "revoked": "Token revoked", "revokeFailed": "Could not revoke token", "createFailed": "Could not create token", "newTokenCreated": "Token created — copy it now!", "newTokenHint": "This token will only be shown once. Copy it and enter it as the password in your calendar app.", "dismiss": "I have copied the token" } }, "themes": { "selectTheme": "Select theme", "selectThemeSubtitle": "Choose your preferred color scheme", "light": "Light", "dark": "Dark" }, "admin": { "title": "Administration", "userCount": "{count} user registered | {count} users registered", "searchUsers": "Search users...", "user": "User", "role": "Role", "rooms": "Rooms", "registered": "Registered", "actions": "Actions", "admin": "Admin", "makeAdmin": "Make admin", "makeUser": "Make user", "resetPassword": "Reset password", "deleteUser": "Delete", "createUser": "Create user", "createUserTitle": "Create new user", "userCreated": "User created", "userCreateFailed": "User could not be created", "newPasswordLabel": "New password", "resetPasswordTitle": "Reset password", "noUsersFound": "No users found", "roleUpdated": "Role updated", "roleUpdateFailed": "Error updating role", "userDeleted": "User deleted", "userDeleteFailed": "Error deleting user", "passwordReset": "Password reset", "passwordResetFailed": "Error resetting password", "deleteUserConfirm": "Really delete user \"{name}\"? All rooms will also be deleted.", "brandingTitle": "Branding", "brandingDescription": "Customize the logo and app name shown across the application.", "logoLabel": "Logo", "logoUpload": "Upload logo", "logoChange": "Change logo", "logoHint": "PNG, JPG, SVG or WebP. Max 5 MB.", "logoUploaded": "Logo uploaded", "logoUploadFailed": "Logo upload failed", "logoRemoved": "Logo removed", "logoRemoveFailed": "Could not remove logo", "appNameLabel": "App name", "appNameUpdated": "App name updated", "appNameUpdateFailed": "Could not update app name", "hideAppNameLabel": "Hide app name", "hideAppNameHint": "Only show the logo, hide the app name text next to it.", "hideAppNameFailed": "Could not update setting", "defaultThemeLabel": "Default Theme", "defaultThemeDesc": "Applied to unauthenticated pages (guest join, login, home) when no personal preference is set.", "defaultThemeSaved": "Default theme saved", "defaultThemeUpdateFailed": "Could not update default theme", "regModeTitle": "Registration Mode", "regModeDescription": "Control how new users can register. \"Open\" allows everyone to sign up. \"Invite only\" requires an invitation link.", "regModeOpen": "Open registration", "regModeInvite": "Invite only", "regModeSaved": "Registration mode updated", "regModeFailed": "Could not update registration mode", "inviteTitle": "User Invitations", "inviteDescription": "Invite new users by email. They will receive a registration link valid for 7 days.", "sendInvite": "Send invite", "inviteSent": "Invitation sent!", "inviteFailed": "Could not send invitation", "inviteDeleted": "Invitation deleted", "inviteDeleteFailed": "Could not delete invitation", "inviteLinkCopied": "Invite link copied!", "copyInviteLink": "Copy invite link", "inviteExpired": "Expired", "inviteUsedBy": "Used by", "inviteExpiresAt": "Expires", "noInvites": "No invitations yet", "legalLinksTitle": "Legal Links", "legalLinksDesc": "Show Imprint and Privacy Policy links at the bottom of the sidebar. Leave blank to hide.", "imprintUrl": "Imprint URL", "privacyUrl": "Privacy Policy URL", "imprintUrlSaved": "Imprint URL saved", "privacyUrlSaved": "Privacy Policy URL saved", "imprintUrlFailed": "Could not save Imprint URL", "privacyUrlFailed": "Could not save Privacy Policy URL", "oauthTitle": "OAuth / SSO", "oauthDescription": "Connect an OpenID Connect provider (e.g. Keycloak, Authentik, Google) to allow Single Sign-On.", "oauthIssuer": "Issuer URL", "oauthIssuerHint": "The OIDC issuer URL, e.g. https://auth.example.com/realms/main", "oauthClientId": "Client ID", "oauthClientSecret": "Client Secret", "oauthClientSecretHint": "Leave blank to keep the existing secret", "oauthDisplayName": "Button label", "oauthDisplayNameHint": "Shown on the login page, e.g. \"Company SSO\"", "oauthAutoRegister": "Auto-register new users", "oauthAutoRegisterHint": "Automatically create accounts for users signing in via OAuth for the first time.", "oauthSaved": "OAuth configuration saved", "oauthSaveFailed": "Could not save OAuth configuration", "oauthRemoved": "OAuth configuration removed", "oauthRemoveFailed": "Could not remove OAuth configuration", "oauthRemoveConfirm": "Really remove OAuth configuration? Users will no longer be able to sign in with SSO.", "oauthNotConfigured": "OAuth is not configured yet.", "oauthSave": "Save OAuth", "oauthRemove": "Remove OAuth" }, "notifications": { "bell": "Notifications", "markAllRead": "Mark all read", "clearAll": "Clear all", "delete": "Delete", "noNotifications": "No notifications yet", "roomShareAdded": "Room shared with you", "roomShareRemoved": "Room access removed", "federationInviteReceived": "New meeting invitation" }, "federation": { "inbox": "Invitations", "inboxSubtitle": "Meeting invitations from other Redlight instances", "inviteTitle": "Invite Remote User", "inviteSubtitle": "Invite a user from another Redlight instance to this meeting.", "addressLabel": "User address", "addressPlaceholder": "@user@other-instance.com", "addressHint": "Format: @username@domain of the Redlight instance", "messageLabel": "Message (optional)", "messagePlaceholder": "Hi, I'd like to invite you to our meeting!", "send": "Send invitation", "sent": "Invitation sent!", "sendFailed": "Could not send invitation", "from": "From", "accept": "Accept", "decline": "Decline", "accepted": "Invitation accepted", "declined": "Invitation declined", "acceptFailed": "Error accepting invitation", "declineFailed": "Error declining invitation", "pending": "Pending", "previousInvites": "Previous Invitations", "noInvitations": "No invitations", "noInvitationsSubtitle": "When you receive an invitation from another Redlight instance, it will appear here.", "statusAccepted": "Accepted", "statusDeclined": "Declined", "openLink": "Open meeting", "loadFailed": "Could not load invitations", "inviteRemote": "Invite remote", "federated": "Federated", "readOnlyNotice": "This room belongs to another instance. Settings cannot be changed.", "joinMeeting": "Join meeting", "removeRoom": "Remove room", "removeRoomConfirm": "Really remove this room?", "roomRemoved": "Room removed", "roomRemoveFailed": "Could not remove room", "acceptedSaved": "Invitation accepted - room saved to your dashboard!", "meetingId": "Meeting ID", "maxParticipants": "Max. participants", "recordingOn": "Recording enabled", "recordingOff": "Recording disabled", "unlimited": "Unlimited", "backToDashboard": "Back to Dashboard", "participantLimit": "Participant limit set", "recordingLabel": "Recording", "recordingOnHint": "Meetings in this room may be recorded", "recordingOffHint": "Meetings in this room will not be recorded", "roomDetails": "Room Details", "joinUrl": "Join URL", "roomDeleted": "Deleted", "roomDeletedNotice": "This room has been deleted by the owner on the origin instance and is no longer available.", "calendarEvent": "Calendar Invitation", "calendarAccepted": "Calendar event accepted and added to your calendar!", "localCalendarEvent": "Local Calendar Invitation", "calendarLocalAccepted": "Invitation accepted - event added to your calendar!", "invitationRemoved": "Invitation removed", "removeInvitation": "Remove invitation" }, "calendar": { "title": "Calendar", "subtitle": "Plan and manage your meetings", "newEvent": "New Event", "createEvent": "Create Event", "editEvent": "Edit Event", "eventTitle": "Title", "eventTitlePlaceholder": "e.g. Team Meeting", "description": "Description", "descriptionPlaceholder": "Add a description...", "startTime": "Start", "endTime": "End", "linkedRoom": "Linked Room", "noRoom": "No room (no video meeting)", "linkedRoomHint": "Link a room to automatically include the join-URL in the event.", "reminderLabel": "Reminder", "reminderNone": "No reminder", "reminder5": "5 minutes before", "reminder15": "15 minutes before", "reminder30": "30 minutes before", "reminder60": "1 hour before", "reminder120": "2 hours before", "reminder1440": "1 day before", "timezone": "Timezone", "color": "Color", "eventCreated": "Event created!", "eventUpdated": "Event updated!", "eventDeleted": "Event deleted", "saveFailed": "Could not save event", "deleteFailed": "Could not delete event", "deleteConfirm": "Really delete this event?", "loadFailed": "Events could not be loaded", "today": "Today", "month": "Month", "week": "Week", "more": "more", "mon": "Mon", "tue": "Tue", "wed": "Wed", "thu": "Thu", "fri": "Fri", "sat": "Sat", "sun": "Sun", "downloadICS": "Download ICS", "addToOutlook": "Add to Outlook", "addToGoogleCalendar": "Google Calendar", "icsDownloaded": "ICS file downloaded", "icsFailed": "Could not download ICS file", "share": "Share", "shareEvent": "Share Event", "shareAdded": "User added to event", "shareRemoved": "Share removed", "shareFailed": "Could not share event", "invitationSent": "Invitation sent!", "invitationCancelled": "Invitation cancelled", "invitationPending": "Invitation pending", "pendingInvitations": "Pending Invitations", "accepted": "Accepted", "sendFederated": "Send to remote", "sendFederatedTitle": "Send Event to Remote Instance", "sendFederatedDesc": "Send this calendar event to a user on another Redlight instance. The recipient must accept the invitation before the event appears in their calendar.", "send": "Send", "fedSent": "Calendar invitation sent! The recipient must accept it first.", "fedFailed": "Could not send event to remote instance", "openRoom": "Open linked room", "organizer": "Organizer", "federatedFrom": "From remote instance", "joinFederatedMeeting": "Join remote meeting" }, "email": { "greeting": "Hey {name} 👋", "viewInvitation": "View Invitation", "invitationFooter": "Open the link above to accept or decline the invitation.", "linkHint": "Or copy this link in your browser:", "verify": { "subject": "{appName} - Verify your email", "intro": "Please verify your email address by clicking the button below:", "button": "Verify Email", "validity": "This link is valid for 24 hours.", "footer": "If you didn't register, please ignore this email." }, "invite": { "subject": "{appName} - You've been invited", "title": "You've been invited! 🎉", "intro": "You have been invited to create an account on {appName}.", "prompt": "Click the button below to register:", "button": "Create Account", "validity": "This link is valid for 7 days.", "footer": "If you didn't expect this invitation, you can safely ignore this email." }, "federationInvite": { "subject": "{appName} - Meeting invitation from {fromUser}", "intro": "You have received a meeting invitation from {fromUser}.", "roomLabel": "Room:" }, "calendarInvite": { "subject": "{appName} - Calendar invitation from {fromUser}", "intro": "You have received a calendar invitation from {fromUser}." }, "calendarDeleted": { "subject": "{appName} - Calendar event cancelled: {title}", "intro": "The following calendar event was deleted by the organiser ({fromUser}) and is no longer available:", "note": "The event has been automatically removed from your calendar.", "footer": "This message was sent automatically by {appName}." } }, "notFound": { "title": "Page not found", "description": "The page you are looking for doesn't exist or has been moved.", "goBack": "Go back", "goHome": "Back to home" } }