588 lines
30 KiB
JSON
588 lines
30 KiB
JSON
{
|
|
"nav.films": "Movies",
|
|
"nav.checklist": "Checklist",
|
|
"nav.stats": "Stats",
|
|
"nav.myPicks": "My picks",
|
|
"nav.admin": "Admin",
|
|
"nav.logout": "Log out",
|
|
"nav.viewAllPicks": "View All Picks",
|
|
|
|
"common.loading": "Loading…",
|
|
"common.preparingPage": "Preparing page…",
|
|
"common.errorLoading": "Error loading.",
|
|
"common.save": "Save",
|
|
"common.cancel": "Cancel",
|
|
"common.delete": "Delete",
|
|
"common.confirm": "Confirm",
|
|
"common.refresh": "Refresh",
|
|
"common.close": "Close",
|
|
"common.copy": "Copy",
|
|
"common.reset": "Reset",
|
|
"common.add": "Add",
|
|
"common.edit": "Edit",
|
|
"common.remove": "Remove",
|
|
"common.create": "Create",
|
|
"common.actions": "Actions",
|
|
"common.yes": "Yes",
|
|
"common.no": "No",
|
|
"common.all": "All",
|
|
"common.none": "None",
|
|
"common.search": "Search",
|
|
"common.filter": "Filter",
|
|
"common.year": "Year",
|
|
"common.name": "Name",
|
|
"common.email": "Email",
|
|
"common.status": "Status",
|
|
"common.date": "Date",
|
|
"common.title": "Title",
|
|
"common.description": "Description",
|
|
"common.networkError": "Network error",
|
|
"common.errorOccurred": "An error occurred",
|
|
"common.errorPrefix": "Error:",
|
|
"common.saving": "Saving...",
|
|
"common.success": "Success",
|
|
"common.toggleDarkMode": "Toggle dark mode",
|
|
"common.details": "Details",
|
|
"common.oscarPool": "Oscar Pool",
|
|
|
|
"auth.login": "Login",
|
|
"auth.register": "Register",
|
|
"auth.email": "Email",
|
|
"auth.password": "Password",
|
|
"auth.name": "Name",
|
|
"auth.noAccount": "No account?",
|
|
"auth.hasAccount": "Already have an account?",
|
|
"auth.signUp": "Sign up",
|
|
"auth.signIn": "Sign in",
|
|
"auth.forgotPassword": "Forgot password?",
|
|
"auth.emailPlaceholder": "[email protected]",
|
|
"auth.namePlaceholder": "Your name",
|
|
"auth.passwordMin": "Minimum {min} characters",
|
|
"auth.passwordsDoNotMatch": "Passwords do not match",
|
|
"auth.confirmPassword": "Confirm password",
|
|
"auth.createAdminAccount": "Create admin account",
|
|
"auth.firstTimeSetup": "First time setup",
|
|
"auth.noAdminExists": "No administrator exists. Create the first admin account to get started.",
|
|
"auth.registrationStatus": "Registration status",
|
|
"auth.returnToHome": "Return to home page",
|
|
"auth.setupRequired": "Setup required",
|
|
"auth.appMustBeConfigured": "The application must first be configured by an administrator.",
|
|
"auth.goToSetup": "Go to setup page",
|
|
"auth.dogQuestion": "What is Cath & Nath's dog's name?",
|
|
"auth.errorCreatingAccount": "Error creating account",
|
|
"auth.networkErrorRetry": "Network error. Please try again.",
|
|
"auth.userNotFound": "User not found",
|
|
"auth.dogAnswerIncorrect": "Incorrect dog name.",
|
|
"auth.registrationSuccess": "User registered successfully!",
|
|
"auth.tempPasswordExpired": "Temporary password expired. Ask an admin to reset your password.",
|
|
"auth.passwordMinLength": "Password must be at least 8 characters.",
|
|
"auth.loginFailed": "Login failed",
|
|
"auth.invalidCredentials": "Invalid credentials",
|
|
"auth.tempPasswordExpired": "Temporary password expired. Ask an admin to reset your password.",
|
|
|
|
"changePassword.title": "Change Password",
|
|
"changePassword.tempPassword": "Your account uses a temporary password. Please set a new password to continue.",
|
|
"changePassword.newPassword": "New password",
|
|
"changePassword.minChars": "Minimum 8 characters.",
|
|
"changePassword.passwordTooShort": "Password must be at least 8 characters.",
|
|
|
|
"movies.title": "Movies",
|
|
"movies.lastUpdated": "Last movie update:",
|
|
"movies.watchedRatio": "Watched: {watched} / {total} ({percent}%)",
|
|
"movies.timeUntilOscars": "Time until the Oscars ({date} {year}) — {timeLeft}",
|
|
"movies.timeUntilOscarsLabel": "Time until the Oscars",
|
|
"movies.daysLeft": "{days} days",
|
|
"movies.hoursLeft": "{hours} hours",
|
|
"movies.unwatchedOnly": "Unwatched movies only",
|
|
"movies.clickToPlay": "Click the poster or title to open the player.",
|
|
"movies.watched": "WATCHED",
|
|
"movies.noSource": "No source",
|
|
"movies.nominatedCategories": "Nominated categories",
|
|
"movies.resumeAt": "Resume at {time}",
|
|
"movies.userRating": "User rating {rating}",
|
|
"movies.errorLoading": "Error loading.",
|
|
"movies.errorLoadingList": "Unable to load movie list. Try again in a moment.",
|
|
"movies.errorLoading": "Unable to load movies. Check your connection and try again.",
|
|
"movies.unableToLoadMovies": "Unable to load movies. Please try again later.",
|
|
"movies.unableToLoadMoviesNetwork": "Unable to load movies. Check your connection and try again.",
|
|
"movies.loadingMovies": "Loading movies",
|
|
"movies.fetchingData": "Fetching data…",
|
|
"movies.viewOnImdb": "View on IMDb",
|
|
|
|
"checklist.title": "Checklist",
|
|
"checklist.seen": "Seen",
|
|
"checklist.filmTitle": "Title",
|
|
"checklist.date": "Date",
|
|
"checklist.watchedOn": "Watched on:",
|
|
"checklist.confirmRemoval": "Confirm removal",
|
|
"checklist.removeConfirmText": "Are you sure you want to remove {title} from your list?",
|
|
"checklist.moviesToWatchPerDay": "Movies to watch per day: {count} films",
|
|
"checklist.congratulations": "Congratulations! very nice 🎉🎉🎉",
|
|
"checklist.browserNoVideo": "Your browser does not support video.",
|
|
"checklist.loadingChecklist": "Loading checklist",
|
|
"checklist.errorLoading": "Error loading.",
|
|
"checklist.unableToLoad": "Unable to load checklist. Please try again later.",
|
|
"checklist.unableToLoadNetwork": "Unable to load checklist. Check your connection and try again.",
|
|
"checklist.march15": "March 15",
|
|
"checklist.loadingMovies": "Loading movies…",
|
|
|
|
"picks.title": "My picks",
|
|
"picks.myPicks": "My picks",
|
|
"picks.pageTitleWithYear": "Oscar Pool ({year}) - My picks",
|
|
"picks.pageTitleChoicesWithYear": "Oscar Pool ({year}) - My picks",
|
|
"picks.scores": "Scores",
|
|
"picks.winners": "Winners",
|
|
"picks.adminBadge": "Admin",
|
|
"picks.year": "Year:",
|
|
"picks.progress": "Progress:",
|
|
"picks.reload": "Reload",
|
|
"picks.loadingCategories": "Loading categories…",
|
|
"picks.scoresCalculatedAfterWinners": "Scores will be calculated after marking winners.",
|
|
"picks.winnersMarked": "winners marked",
|
|
"picks.noCategory": "No category",
|
|
"picks.noChoice": "No choice",
|
|
"picks.category": "Category",
|
|
"picks.choice": "Choice",
|
|
"picks.nominees": "Nominees",
|
|
"picks.noCategoriesFound": "No categories found for year {year}",
|
|
"picks.adminMustImportCategories": "An administrator must first import the categories.",
|
|
"picks.selectionHeader": "Selection",
|
|
"picks.winnerHeader": "Winner",
|
|
"picks.noCategoriesAvailable": "No categories available",
|
|
"picks.winnerMarkedSuccess": "Winner marked successfully",
|
|
"picks.winnerRemoved": "Winner removed",
|
|
"picks.noWinnerMarked": "No winner marked. Scores will be calculated once winners are set.",
|
|
"picks.scoresCalculated": "Scores calculated! {count} user(s) evaluated.",
|
|
"picks.scoresRefreshed": "Scores refreshed",
|
|
"picks.calculatingScores": "Calculating scores…",
|
|
"picks.calculateScores": "Calculate scores",
|
|
"picks.dataRefreshed": "Data refreshed",
|
|
"picks.noScoresAvailable": "No scores available. Users must first submit their picks.",
|
|
"picks.details": "Details",
|
|
"picks.choicesOf": "Choices of {name}",
|
|
"picks.noDetailsAvailable": "No details available.",
|
|
"picks.summary": "Summary",
|
|
"picks.correct": "{count} correct",
|
|
"picks.incorrect": "{count} incorrect",
|
|
"picks.correctPicks": "Correct ({count})",
|
|
"picks.errorLoadingCategories": "Error loading categories: {error}",
|
|
"picks.preparingPage": "Preparing page…",
|
|
"picks.errorAutoSaving": "Error auto-saving: {error}",
|
|
"picks.incompleteSelection": "You have selected only {selected} out of {total} categories. Do you want to save anyway?",
|
|
"picks.successSaved": "Your picks have been saved successfully!",
|
|
"picks.errorSubmitting": "Error submitting picks: {error}",
|
|
"picks.reloaded": "Picks reloaded",
|
|
"picks.categoryHeader": "Category",
|
|
"picks.userHeader": "User",
|
|
"picks.winnerMarked": "Winner marked successfully",
|
|
"picks.winnerDeleted": "Winner deleted",
|
|
"picks.errorUpdatingWinner": "Error: {error}",
|
|
"picks.noWinnersMarked": "No winners marked. Scores will be calculated once winners are defined.",
|
|
"picks.scoresCalculated": "Scores calculated successfully! {count} user(s) evaluated.",
|
|
"picks.errorCalculatingScores": "Error: {error}",
|
|
"picks.errorLoadingScores": "Error loading scores.",
|
|
"picks.incorrectPicks": "Incorrect ({count})",
|
|
"picks.detailsButton": "Details",
|
|
"picks.userChoicesTitle": "Picks for {user}",
|
|
"picks.noDetailsAvailable": "No details available.",
|
|
"picks.summaryTitle": "Summary",
|
|
"picks.correctCountLabel": "correct",
|
|
"picks.incorrectCountLabel": "incorrect",
|
|
"picks.totalCountLabel": "total",
|
|
"picks.correctSectionTitle": "Correct ({count})",
|
|
"picks.incorrectSectionTitle": "Incorrect ({count})",
|
|
"picks.choiceLabel": "Choice",
|
|
"picks.winnerLabel": "Winner",
|
|
"picks.noWinnerMarkedShort": "No winner marked",
|
|
"picks.noChoicesToShow": "No picks to show.",
|
|
"picks.loadingTitle": "Loading picks",
|
|
"picks.loadingSubtitle": "Fetching data…",
|
|
"picks.yourChoice": "Choice: {choice}",
|
|
"picks.winner": "Winner: {winner}",
|
|
"picks.noWinnerMarkedYet": "No winner marked",
|
|
"picks.noPicksToShow": "No picks to show.",
|
|
"picks.partialSaveConfirm": "You have only selected {selected} out of {total} categories. Do you want to save anyway?",
|
|
"picks.savedSuccessfully": "Your picks have been saved successfully!",
|
|
"picks.errorSaving": "Error saving: {error}",
|
|
"picks.errorLoadingCategories": "Error loading categories: {error}",
|
|
"picks.autoSaveError": "Auto-save error: {error}",
|
|
"picks.picksReloaded": "Picks reloaded",
|
|
"picks.choiceDetails": "Choice details",
|
|
"picks.loadingPicks": "Loading picks",
|
|
|
|
"viewPicks.title": "View All Picks",
|
|
"viewPicks.overview": "Overview of all user picks",
|
|
"viewPicks.usersSubmitted": "{count} user(s) have submitted their picks",
|
|
"viewPicks.loadingPicks": "Loading picks…",
|
|
"viewPicks.noPicks": "No user has submitted picks for year {year} yet.",
|
|
"viewPicks.picksRefreshed": "Picks refreshed",
|
|
"viewPicks.errorLoading": "Error loading picks: {error}",
|
|
"viewPicks.unknownUser": "Unknown user",
|
|
"viewPicks.categoriesCount": "{count} / {total} categories",
|
|
"viewPicks.noPicks2": "No picks recorded",
|
|
"viewPicks.submittedOn": "Submitted on: {date}",
|
|
"viewPicks.winnerBadge": "Winner",
|
|
|
|
"player.title": "Player",
|
|
"player.loading": "Loading…",
|
|
"player.quality": "Quality",
|
|
"player.high": "High",
|
|
"player.low": "Low",
|
|
"player.rateThisFilm": "Rate this film",
|
|
"player.star": "{count} star",
|
|
"player.stars": "{count} stars",
|
|
"player.source": "Source",
|
|
"player.progress": "Progress",
|
|
"player.noVodLink": "No VOD link configured for this movie.",
|
|
"player.missingMovieId": "Missing movie id.",
|
|
"player.noPlayableSource": "No playable source configured for this movie.",
|
|
"player.beginning": "Start",
|
|
"player.resuming": "Resuming",
|
|
"player.resumingAt": "Resuming at {time}",
|
|
"player.preparingResume": "Preparing resume…",
|
|
"player.connectionRequired": "Connection required for saving.",
|
|
"player.connection": "Connection",
|
|
"player.playFromBeginning": "Playing from the beginning",
|
|
"player.sessionExpired": "Session expired. Please reconnect to continue saving progress.",
|
|
"player.saving": "Saving…",
|
|
"player.saved": "Saved at {time}.",
|
|
"player.loadingPlayer": "Loading player…",
|
|
"player.unableToIdentifyUser": "Unable to identify user for saving progress.",
|
|
|
|
"common.continueQuestion": "Continue?",
|
|
|
|
"stats.title": "Statistics",
|
|
"stats.pageTitle": "User Statistics",
|
|
"stats.ranking": "Ranking",
|
|
"stats.winners": "Winners 🏆",
|
|
"stats.completers": "100%",
|
|
"stats.rank": "#",
|
|
"stats.name": "Name",
|
|
"stats.films": "Movies",
|
|
"stats.correctPicks": "Correct picks",
|
|
"stats.points": "Points",
|
|
"stats.year": "Year",
|
|
"stats.winnersColumn": "Winner(s)",
|
|
"stats.completersHelp": "Users who have watched 100% (by year)",
|
|
"stats.noWinnersDefined": "No winners defined.",
|
|
"stats.noYearsFound": "No years found.",
|
|
"stats.unableToLoadRanking": "Unable to load the ranking right now.",
|
|
"stats.totalFilms": "Total movies",
|
|
"stats.names": "Names",
|
|
"stats.moviesWatched": "Movies watched",
|
|
"stats.noMoviesToShow": "No movies to show.",
|
|
|
|
"stats.loading": "Loading…",
|
|
"stats.preparingPage": "Preparing page…",
|
|
"stats.loadingStats": "Loading statistics",
|
|
"stats.fetchingData": "Fetching data…",
|
|
"stats.deletedUser": "(deleted user)",
|
|
"stats.tie": "tie",
|
|
"stats.unableToLoadCompleters": "Unable to load 100% completers.",
|
|
"stats.unnamed": "(unnamed)",
|
|
"stats.openLink": "Open link",
|
|
"stats.openPlayer": "Open player",
|
|
"stats.watchedOn": "Watched on {date}",
|
|
"stats.watchedMoviesUser": "Watched movies — {user} ({count})",
|
|
"stats.watchedMovies": "Watched movies ({count})",
|
|
"stats.filmCount": "{count} movie{plural}",
|
|
"stats.noFilms": "0 movies",
|
|
|
|
"admin.movies.noMovies": "No movies.",
|
|
|
|
"admin.title": "Oscar Pool - Admin",
|
|
|
|
"admin.tabs.settings": "Settings",
|
|
"admin.tabs.users": "Users",
|
|
"admin.tabs.modal100": "Modal 100%",
|
|
"admin.tabs.winners": "Winners",
|
|
"admin.tabs.oscarCategories": "Oscar Categories",
|
|
"admin.tabs.backupRestore": "Backup / Restore",
|
|
"admin.tabs.version": "Version",
|
|
|
|
"admin.settings.info": "Global site settings (year, dates, player options).",
|
|
"admin.settings.oscarDate": "Oscar Date",
|
|
"admin.settings.visibility": "Visibility",
|
|
"admin.settings.language": "Language",
|
|
"admin.settings.oscarDateDesc": "Configure the ceremony date for the countdown (Films & Checklist). Default: March 15.",
|
|
"admin.settings.oscarDateDefaultShort": "— (default: 03-15)",
|
|
"admin.settings.year": "Year",
|
|
"admin.settings.applyActiveYear": "Apply active year",
|
|
"admin.settings.yearBasedOnMovies": "Based on years present in movies.",
|
|
"admin.settings.date": "Date",
|
|
"admin.settings.dateFormat": "Format: YYYY-MM-DD.",
|
|
"admin.settings.configuredDates": "Configured dates",
|
|
"admin.settings.pointsDesc": "Configure points awarded for watched movies and correct Oscar picks.",
|
|
"admin.settings.pointsPerMovie": "Points per movie watched",
|
|
"admin.settings.pointsPerMovieDesc": "Points awarded for each completed movie.",
|
|
"admin.settings.pointsPerCorrectPick": "Points per correct pick",
|
|
"admin.settings.pointsPerCorrectPickDesc": "Points awarded for each correct Oscar pick.",
|
|
"admin.settings.reload": "Reload",
|
|
"admin.settings.pointsCalculation": "Points calculation",
|
|
"admin.settings.total": "Total",
|
|
"admin.settings.moviesWatched": "Movies watched",
|
|
"admin.settings.correctPicks": "Correct picks",
|
|
"admin.settings.pointsSaved": "Configuration saved: {p} pts/movie, {q} pts/correct pick",
|
|
"admin.settings.noYearAddMovie": "No year (add a movie)",
|
|
"admin.settings.defaultBadge": "Default",
|
|
"admin.settings.pointsMustBeNonNegative": "Points must be zero or positive",
|
|
|
|
"admin.visibility.showPicksFeatures": "Show \"Picks\" features",
|
|
"admin.visibility.showPicksFeaturesDesc": "Controls display of \"My picks\" button in navigation and \"Correct picks\" column in statistics.",
|
|
"admin.visibility.showSourceProgress": "Show \"Source\" + \"Progress\" (admins)",
|
|
"admin.visibility.showSourceProgressDesc": "Controls display of debug block in player.html (admins only).",
|
|
"admin.visibility.showVersionTab": "Show \"Version\" tab",
|
|
"admin.visibility.showVersionTabDesc": "Controls display of the \"Version\" tab in the admin panel.",
|
|
"admin.visibility.saved": "Configuration saved",
|
|
"admin.visibility.saveError": "Error saving configuration: {error}",
|
|
|
|
"admin.language.siteLanguage": "Site language",
|
|
"admin.language.siteLanguageDesc": "Changes the language for all users. Page refresh required.",
|
|
|
|
"admin.version.info": "Controls the version displayed in the footer (stored in DB). Click ✓ to activate a version, then check the preview.",
|
|
"admin.version.createNew": "Create a new version",
|
|
"admin.version.createNewDesc": "Adds an entry to the history (you can activate it immediately).",
|
|
"admin.version.version": "Version",
|
|
"admin.version.versionPlaceholder": "e.g.: 1.0.1",
|
|
"admin.version.versionExample": "E.g.: 1.2.3",
|
|
"admin.version.messageOptional": "Message (optional)",
|
|
"admin.version.messagePlaceholder": "e.g.: Hotfix login",
|
|
"admin.version.messageDesc": "Short & readable (shown in footer).",
|
|
"admin.version.create": "Create",
|
|
"admin.version.createAndActivate": "Create & activate",
|
|
"admin.version.created": "Version created.",
|
|
"admin.version.createdAndActivated": "Version created & activated.",
|
|
"admin.version.confirmDelete": "Delete this version?",
|
|
|
|
"admin.backup.chooseFile": "Choose a backup file (.ndjson.gz).",
|
|
"admin.backup.restoreWithDrop": "RESTORE with DROP: all restored collections will be replaced.",
|
|
"admin.backup.restoreWithoutDrop": "RESTORE without DROP: high risk of duplicates/errors if the DB already contains data.",
|
|
|
|
"admin.modal100.info": "Content displayed when a user has watched 100% of films.",
|
|
"admin.modal100.content": "Content",
|
|
"admin.modal100.contentDesc": "Edit the content then save. Preview is live (not saved until you save).",
|
|
"admin.modal100.titleLabel": "Title",
|
|
"admin.modal100.titlePlaceholder": "Congratulations! ...",
|
|
"admin.modal100.textOptional": "Text (optional)",
|
|
"admin.modal100.textPlaceholder": "Text displayed in the modal (line breaks preserved)",
|
|
"admin.modal100.textDesc": "Displayed as plain text (safe). Leave empty if not needed.",
|
|
"admin.modal100.htmlOptional": "HTML (optional)",
|
|
"admin.modal100.htmlDesc": "Displayed as HTML (server removes script tags and on* handlers).",
|
|
"admin.modal100.videoSrc": "Video src (optional)",
|
|
"admin.modal100.videoSrcDesc": "Relative path (e.g.: video/reward.mp4) or full URL. Empty = no video.",
|
|
"admin.modal100.browserNoVideo": "Your browser does not support video.",
|
|
"admin.modal100.textLabel": "Text",
|
|
"admin.modal100.textInfoShort": "displayed as-is (safe), line breaks preserved.",
|
|
"admin.modal100.htmlInfoShort": "server removes script tags and on* attributes.",
|
|
"admin.modal100.videoLabel": "Video",
|
|
"admin.modal100.videoInfoShort": "accepts relative path (e.g.: video/reward.mp4) or full URL.",
|
|
|
|
"admin.modal100.defaultTitle": "Congratulations! very nice 🎉🎉🎉",
|
|
|
|
"admin.users.usersCount": "user(s)",
|
|
"admin.users.addUser": "Add user",
|
|
"admin.users.name": "Name",
|
|
"admin.users.status": "Status",
|
|
"admin.users.actions": "Actions",
|
|
"admin.users.loading": "Loading list…",
|
|
"admin.users.resetPassword": "Reset password",
|
|
"admin.users.resetPasswordDesc": "Generates a temporary password. The user will need to change it on next login.",
|
|
"admin.users.tempPasswordOnce": "Temporary password (shown once)",
|
|
"admin.users.generate": "Generate",
|
|
"admin.users.deleteUser": "Delete user",
|
|
"admin.users.aboutToDelete": "You are about to delete:",
|
|
"admin.users.actionIrreversible": "This action is irreversible.",
|
|
"admin.users.typeEmailToConfirm": "To confirm, type the exact email:",
|
|
"admin.users.emailPlaceholder": "[email protected]",
|
|
"admin.users.deleteButtonActivates": "The \"Delete\" button will activate only if the email matches.",
|
|
"admin.users.addUserDesc": "Create an account with a temporary password (shown once). The user will need to change it on next login.",
|
|
"admin.users.namePlaceholder": "First name / nickname",
|
|
"admin.users.reset": "Reset",
|
|
"admin.users.cannotDeleteSelf": "You cannot delete your own account from here.",
|
|
"admin.users.adminDeleteDisabled": "Deleting admin accounts is disabled via this interface.",
|
|
"admin.users.creating": "Creating…",
|
|
"admin.users.nameRequired": "Name required.",
|
|
"admin.users.emailRequired": "Email required.",
|
|
"admin.users.userCreated": "User created. Temporary password generated.",
|
|
"admin.users.tempPasswordExpires": "Expires: {expiresAt}",
|
|
"admin.users.tempPasswordGenerating": "Generating temporary password…",
|
|
"admin.users.tempPasswordGenerated": "Temporary password generated. Copy it and send it to the user.",
|
|
"admin.users.tempPasswordGeneratedOnReset": "Temporary password generated. The user must change it on next login.",
|
|
"admin.users.cannotCopyAuto": "Unable to copy automatically. Copy manually.",
|
|
"admin.users.copied": "Copied.",
|
|
"admin.users.userDeleted": "User deleted.",
|
|
"admin.movies.idCopied": "Movie ID copied.",
|
|
"admin.movies.addedWithSubtitles": "Movie added with subtitles.",
|
|
"admin.movies.addedSuccessfully": "Movie added successfully.",
|
|
"admin.movies.addedNoSubtitles": "Movie added, but subtitles were not uploaded: {error}",
|
|
"admin.movies.updatedSuccessfully": "Movie updated successfully.",
|
|
"admin.movies.updatedNoSubtitles": "Movie updated, but subtitles were not uploaded: {error}",
|
|
"admin.language.saved": "Language saved",
|
|
|
|
"admin.movies.addInfo": "Add movies: this section auto-fetches movie info via imdb_id (OMDb).",
|
|
"admin.movies.oscarYear": "Oscar year",
|
|
"admin.movies.oscarYearDesc": "Separates movies & stats by year.",
|
|
"admin.movies.category": "Category",
|
|
"admin.movies.allYears": "All",
|
|
"admin.movies.refreshOmdb": "Refresh OMDb",
|
|
"admin.movies.selectAll": "Select all",
|
|
"admin.movies.selected": "selected",
|
|
"admin.movies.sel": "Sel.",
|
|
"admin.movies.titleCol": "Title",
|
|
"admin.movies.player": "Player",
|
|
"admin.movies.year": "Year",
|
|
"admin.movies.editMovie": "Edit movie",
|
|
"admin.movies.info": "Info",
|
|
"admin.movies.playerVideo": "Player / Video",
|
|
"admin.movies.imdbIdLabel": "IMDB ID (e.g.: tt1234567)",
|
|
"admin.movies.rating": "Rating (imdbRating)",
|
|
"admin.movies.runtime": "Runtime",
|
|
"admin.movies.runtimeExample": "E.g.: 142 min",
|
|
"admin.movies.camTag": "CAM tag",
|
|
"admin.movies.refreshFromOmdb": "Refresh from OMDb (overwrites title / plot / rating / runtime / poster)",
|
|
"admin.movies.refreshFromOmdbDesc": "If checked, the server makes a new OMDb call via IMDB ID when saving.",
|
|
"admin.movies.posterUrl": "Poster URL",
|
|
"admin.movies.description": "Description (Plot)",
|
|
"admin.movies.playerSource": "Player (source)",
|
|
"admin.movies.mode": "Mode",
|
|
"admin.movies.modeDesc": "Auto = video_src → embed_src → vod_link.",
|
|
"admin.movies.videoUrl": "Video URL (mp4/webm/m3u8)",
|
|
"admin.movies.videoUrlDesc": "If you use a server file (below) and leave this empty, it will auto-use /api/video/<movieId>.",
|
|
"admin.movies.serverVideoFile": "Server video file (optional)",
|
|
"admin.movies.serverVideoFileDesc": "Relative path under VIDEO_FILES_DIR (default: public/video).",
|
|
"admin.movies.serverVideoFileLow": "Server video file (low quality, optional)",
|
|
"admin.movies.serverVideoFileLowDesc": "Relative path under VIDEO_FILES_DIR. Example: LOW/123.LOW.mp4.",
|
|
"admin.movies.subtitles": "Subtitles (SRT, optional)",
|
|
"admin.movies.existingSubtitles": "Existing subtitles:",
|
|
"admin.movies.subtitlesNote": "Add one file per language; repeat upload for multiple subtitles.",
|
|
"admin.movies.removeAllSubtitles": "Remove all subtitles",
|
|
"admin.movies.removeAllSubtitlesDesc": "Deletes VTT/SRT files and resets language/label fields.",
|
|
"admin.movies.confirmRemoveSubtitle": "Delete this subtitle?",
|
|
"admin.movies.confirmDeleteSelected": "Delete {count} movie(s)? This action is irreversible.",
|
|
"admin.movies.subtitleLang": "Language (e.g.: fr, en)",
|
|
"admin.movies.subtitleLabel": "Label (displayed)",
|
|
"admin.movies.subtitleDefault": "Default",
|
|
"admin.movies.embedUrl": "Embed URL or iframe code",
|
|
"admin.movies.legacyVodLink": "Legacy VOD link (optional)",
|
|
"admin.movies.confirmRefreshOmdb": "Refresh {count} movie(s){yearLabel} from OMDb? This operation may overwrite info (title, plot, rating, poster, runtime).",
|
|
|
|
"admin.backup.info": "MongoDB database backup and restore.",
|
|
"admin.backup.backup": "Backup",
|
|
"admin.backup.restore": "Restore",
|
|
"admin.backup.help": "Help",
|
|
"admin.backup.backups": "Backups",
|
|
"admin.backup.backupsDesc": "Format .ndjson.gz, stored on server.",
|
|
"admin.backup.createBackup": "Create backup",
|
|
"admin.backup.file": "File",
|
|
"admin.backup.size": "Size",
|
|
"admin.backup.modified": "Modified",
|
|
"admin.backup.openTabToLoad": "Open tab to load list…",
|
|
"admin.backup.restoreBackup": "Restore a backup",
|
|
"admin.backup.restoreDesc": "Restore a .ndjson.gz file. The drop option is recommended.",
|
|
"admin.backup.restoreWarning": "Restore can overwrite data. Make a backup first if needed.",
|
|
"admin.backup.backupFile": "Backup file",
|
|
"admin.backup.dropBeforeRestore": "Drop collections before restore (recommended)",
|
|
"admin.backup.tip": "Tip",
|
|
"admin.backup.tipDesc": "Use drop unless you know exactly what you're doing (otherwise risk of duplicates/errors).",
|
|
"admin.backup.howItWorks": "How it works",
|
|
"admin.backup.backupHowDesc": "creates a .ndjson.gz file (MongoDB export) and keeps it on the server.",
|
|
"admin.backup.download": "Download",
|
|
"admin.backup.downloadDesc": "retrieves the file locally (useful before a risky operation).",
|
|
"admin.backup.restoreHowDesc": "imports the file. With drop, restored collections are deleted first.",
|
|
"admin.backup.quickCheck": "Quick check",
|
|
"admin.backup.noBackups": "No backups found.",
|
|
"admin.backup.quickCheckDesc": "After restore, reload the page and check \"Films\", \"Checklist\" and \"Stats\".",
|
|
"admin.backup.confirmDelete": "Delete backup \"{name}\"?",
|
|
"admin.backup.creating": "Creating…",
|
|
"admin.backup.created": "Backup created: {name}",
|
|
"admin.backup.noDocumentsInserted": "No documents inserted (or empty backup).",
|
|
"admin.backup.noDocumentsInserted": "No documents inserted (or empty backup).",
|
|
|
|
"admin.categories.info": "Create and manage categories manually.",
|
|
"admin.categories.manualCreation": "Manual creation",
|
|
"admin.categories.categoryCreated": "Category created successfully.",
|
|
"admin.categories.list": "List",
|
|
"admin.categories.createManually": "Create a category manually",
|
|
"admin.categories.createManuallyDesc": "Add a category and its nominees one by one.",
|
|
"admin.categories.categoryNumber": "Category number",
|
|
"admin.categories.categoryName": "Category name",
|
|
"admin.categories.nomineesOnePerLine": "Nominees (one per line)",
|
|
"admin.categories.nomineesDesc": "Enter one nominee per line.",
|
|
"admin.categories.note": "Note",
|
|
"admin.categories.noteDesc": "You can create multiple categories for the same year. The category number must be unique per year.",
|
|
"admin.categories.importedCategories": "Imported categories",
|
|
"admin.categories.manageExisting": "Manage existing categories",
|
|
"admin.categories.allYears": "All years",
|
|
"admin.categories.categoriesSelected": "category(ies) selected",
|
|
"admin.categories.editCategory": "Edit category",
|
|
"admin.categories.selectAllTitle": "Select all",
|
|
"admin.categories.table.number": "#",
|
|
"admin.categories.table.name": "Name",
|
|
"admin.categories.table.nominees": "Nominees",
|
|
"admin.categories.table.actions": "Actions",
|
|
"admin.categories.confirmDelete": "Are you sure you want to delete this category?",
|
|
"admin.categories.confirmDeleteMultiple": "Are you sure you want to delete {count} category(ies)?\n\n{names}\n\nThis action is irreversible.",
|
|
"admin.categories.noneFound": "No categories found.",
|
|
"admin.categories.noneFoundYear": "No categories found for year {year}.",
|
|
"admin.categories.fillAllFields": "Please fill in all fields",
|
|
"admin.categories.enterAtLeastOneNominee": "Please enter at least one nominee",
|
|
"admin.categories.numberBetween1And50": "Category number must be between 1 and 50",
|
|
"admin.categories.bulkDeleteConfirm": "Are you sure you want to delete {count} category(ies)?\n\n{names}\n\nThis action is irreversible.",
|
|
|
|
"admin.winners.info": "Define one or more winners per year (tie possible).",
|
|
"admin.winners.manage": "Manage",
|
|
"admin.winners.addWinner": "Add a winner",
|
|
"admin.winners.addWinnerDesc": "You can add multiple winners for the same year (tie).",
|
|
"admin.winners.user": "User",
|
|
"admin.winners.removeNote": "To remove: use the list below.",
|
|
"admin.winners.pointsOptional": "Points (optional)",
|
|
"admin.winners.pointsPlaceholder": "e.g.: 42",
|
|
"admin.winners.pointsDesc": "Leave empty if not applicable.",
|
|
"admin.winners.deleteAll": "Delete all",
|
|
"admin.winners.currentWinners": "Current winners",
|
|
"admin.winners.globalView": "Global view (all years).",
|
|
"admin.winners.howItWorks": "How it works",
|
|
"admin.winners.multipleWinners": "A year can have multiple winners (tie).",
|
|
"admin.winners.tieLabel": "(tie)",
|
|
"admin.winners.tie": "(tie)",
|
|
"admin.winners.chooseUser": "Choose a user.",
|
|
"admin.winners.confirmDeleteAll": "Delete all winners for {year}?",
|
|
"admin.player.errorLoading": "Unable to load player settings.",
|
|
"admin.versions.updated": "Version updated.",
|
|
"admin.versions.deleted": "Version deleted.",
|
|
"admin.winners.pointsOptionalInfo": "Points are optional (display only).",
|
|
"admin.winners.removeInfo": "To remove a winner, use the \"Remove\" button in the \"Current winners\" list.",
|
|
"admin.winners.tipDesc": "If you change the site's active year, also check the winners for that year.",
|
|
"admin.winners.removedFor": "Winner removed for {year}.",
|
|
"admin.winners.reloaded": "Winners reloaded.",
|
|
"admin.winners.deletedFor": "Winner deleted for {year}.",
|
|
"admin.winners.addedFor": "Winner added for {year}.",
|
|
"admin.backup.deleted": "Backup deleted.",
|
|
"admin.backup.restoreComplete": "Restore complete.",
|
|
"admin.movies.deletedSuccessfully": "Movie(s) deleted successfully.",
|
|
"admin.movies.updatedFromOmdb": "{count} movie(s) updated from OMDb.",
|
|
"admin.movies.omdbResults": "{success} success, {errors} error(s). {details}",
|
|
"admin.movies.subtitleDeleted": "Subtitle deleted.",
|
|
"admin.modal100.saved": "100% modal saved.",
|
|
"admin.content.reloaded": "Content reloaded.",
|
|
"admin.oscars.invalidYear": "Invalid year. Expected: 2026",
|
|
"admin.oscars.dateSaved": "Oscars date saved for {year}: {date}",
|
|
"admin.oscars.dateCleared": "Oscars date cleared for {year} (reverted to default: March 15).",
|
|
"admin.player.settingsSaved": "Player settings saved.",
|
|
"admin.player.settingsReloaded": "Player settings reloaded.",
|
|
"admin.activeYear.applied": "Active year applied: {year}",
|
|
"admin.configuration.reloaded": "Configuration reloaded.",
|
|
"admin.categories.categoryNotFound": "Category not found.",
|
|
"admin.categories.categoryDeleted": "Category deleted.",
|
|
"admin.categories.categoryUpdated": "Category updated successfully.",
|
|
"admin.categories.deletedCount": "{count} category/categories deleted{errors}",
|
|
"admin.oscars.invalidYearShort": "Invalid year.",
|
|
"admin.movies.subtitleDeleted": "Subtitle deleted.",
|
|
"admin.categories.categoryInvalid": "Invalid category.",
|
|
|
|
"footer.oscarPool": "Oscar Pool",
|
|
"footer.by": "by",
|
|
"footer.versionNotConfigured": "Now in full HD",
|
|
"footer.versionUnavailable": "Version unavailable (DB)."
|
|
}
|