Files
movies-diary/spa/src/locales/en.json
Gabriel Kaszewski ca7ca51949 feat: per-entity federation privacy toggles for reviews and watchlist
- add federate_reviews + federate_watchlist to UserSettings (default true)
- new UserFederationSettingsQuery port with FederationFlags struct
- remove get_user_federate_goals from LocalApContentQuery
- gate ReviewLogged, ReviewUpdated, WatchlistEntryAdded, on_poster_synced on flags
- goals gating migrated to UserFederationSettingsQuery
- ReviewDeleted and WatchlistEntryRemoved ungated (tombstones always fire)
- sqlite + postgres migrations and adapter impls
- settings API and SPA toggles
2026-06-12 02:26:01 +02:00

388 lines
13 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"common": {
"cancel": "Cancel",
"confirm": "Confirm",
"delete": "Delete",
"edit": "Edit",
"save": "Save",
"saving": "Saving...",
"back": "Back",
"tryAgain": "Try again",
"follow": "Follow",
"following": "Following",
"unfollow": "Unfollow",
"remove": "Remove",
"block": "Block",
"unblock": "Unblock",
"accept": "Accept",
"reject": "Reject",
"dismiss": "Dismiss",
"continue": "Continue",
"generate": "Generate",
"generating": "Generating...",
"run": "Run",
"reviews": "{{count}} reviews",
"films": "{{count}} films",
"filmsAvg": "{{count}} films, avg {{avg}}",
"more": "Show more",
"less": "Show less"
},
"nav": {
"home": "Home",
"search": "Search",
"diary": "Diary",
"profile": "Profile"
},
"auth": {
"title": "Movies Diary",
"loginHeading": "Log in to your account",
"registerHeading": "Create your account",
"email": "Email",
"username": "Username",
"password": "Password",
"loginError": "Invalid email or password",
"registerError": "Registration failed. Try a different email.",
"loggingIn": "Logging in...",
"logIn": "Log in",
"creating": "Creating...",
"createAccount": "Create account",
"noAccount": "Don't have an account?",
"hasAccount": "Already have an account?"
},
"errors": {
"somethingWrong": "Something went wrong",
"unknownError": "Unknown error"
},
"feed": {
"title": "Movies Diary",
"tab": "Feed",
"watchlist": "Watchlist",
"queue": "Queue",
"sortLatest": "Latest",
"sortOldest": "Oldest",
"sortTopRated": "Top Rated",
"sortLowestRated": "Lowest Rated",
"noActivity": "No activity yet",
"noActivityDesc": "Follow people to see their reviews",
"addToWatchlist": "Add to watchlist",
"watchlistEmpty": "Watchlist empty",
"watchlistEmptyDesc": "Save movies you want to watch",
"removeFromWatchlist": "Remove from watchlist?",
"queueEmpty": "Queue empty",
"queueEmptyDesc": "Movies from Jellyfin/Plex appear here",
"deleteReview": "Delete this review?",
"addedToWatchlist": "Added to watchlist"
},
"diary": {
"title": "Diary",
"noEntries": "No entries",
"nothingLogged": "Nothing logged this month",
"deleteReview": "Delete this review?"
},
"movie": {
"ratingDistribution": "Rating Distribution",
"community": "Community",
"yourHistory": "Your History",
"castCrew": "Cast & Crew",
"saved": "Saved",
"watchlist": "Watchlist",
"noReviews": "No reviews yet",
"beFirst": "Be the first to review",
"trend": "Trend: {{trend}}",
"noViewings": "No viewings",
"notLogged": "You haven't logged this movie",
"tmdbStats": "TMDB Stats",
"budget": "Budget",
"revenue": "Revenue",
"tmdb": "TMDB",
"cast": "Cast",
"crew": "Crew",
"keywords": "Keywords",
"castCredits": "Cast Credits ({{count}})",
"crewCredits": "Crew Credits ({{count}})",
"noCredits": "No credits found"
},
"search": {
"placeholder": "Search movies, people...",
"searchPrompt": "Search for movies or people",
"noResults": "No results",
"noResultsDesc": "Try a different search term",
"people": "People",
"movies": "Movies"
},
"profile": {
"title": "Profile",
"followingFollowers": "Following & Followers",
"yearInReview": "Year in Review",
"recent": "Recent",
"topRated": "Top Rated",
"trends": "Trends",
"movies": "Movies",
"avg": "Avg",
"followingStat": "Following",
"followers": "Followers",
"noEntries": "No entries",
"noTrends": "No trends yet",
"topDirectors": "Top Directors",
"monthlyActivity": "Monthly Activity",
"searchPlaceholder": "Search entries...",
"watchedAgo": "Watched {{when}}"
},
"person": {
"biography": "Biography",
"birthday": "Born",
"deathday": "Died",
"placeOfBirth": "Birthplace",
"alsoKnownAs": "Also Known As",
"links": "Links",
"homepage": "Homepage",
"imdb": "IMDb"
},
"social": {
"title": "Social",
"following": "Following",
"followers": "Followers",
"pending": "Pending",
"notFollowing": "Not following anyone",
"notFollowingDesc": "Follow users to see their reviews in your feed",
"noFollowers": "No followers yet",
"noFollowersOther": "No followers",
"noPending": "No pending requests",
"followSent": "Follow request sent to {{handle}}",
"followError": "Could not follow that user",
"handlePlaceholder": "@user@instance.example"
},
"settings": {
"title": "Settings",
"editProfile": "Edit Profile",
"editProfileDesc": "Username, bio",
"import": "Import",
"importDesc": "Import from CSV or JSON",
"yearWrapUp": "Year Wrap-Up",
"yearWrapUpDesc": "Annual summaries",
"webhookTokens": "Webhook Tokens",
"webhookTokensDesc": "Jellyfin, Plex",
"blockedUsers": "Blocked Users",
"blockedUsersAndDomains": "Blocked Users & Domains",
"blockedUsersDesc": "Manage blocked users",
"blockedUsersDescAdmin": "Users & domains",
"logOut": "Log Out",
"account": "Account",
"data": "Data",
"integrations": "Integrations",
"socialGroup": "Social",
"admin": "Admin",
"rebuildSearch": "Rebuild Search Index",
"rebuildSearchDesc": "Re-index all movies and people",
"rebuildSearchDone": "Reindex queued",
"privacy": "Privacy",
"federateGoals": "Share goals on Fediverse",
"federateGoalsDesc": "Broadcast goal progress to followers",
"federateReviews": "Share reviews on Fediverse",
"federateReviewsDesc": "Broadcast diary entries to followers",
"federateWatchlist": "Share watchlist on Fediverse",
"federateWatchlistDesc": "Broadcast watchlist additions to followers",
"export": "Export",
"exportDesc": "Download your diary",
"exportCsv": "CSV",
"exportJson": "JSON",
"exporting": "Exporting..."
},
"goals": {
"yearGoal": "{{year}} Goal",
"movies": "movies",
"reached": "Goal reached!",
"setGoal": "Set Goal",
"editGoal": "Edit Goal",
"year": "Year",
"targetMovies": "Target (movies)",
"created": "Goal created",
"updated": "Goal updated",
"deleted": "Goal deleted"
},
"editProfile": {
"title": "Edit Profile",
"banner": "Banner",
"avatar": "Avatar",
"displayName": "Display Name",
"displayNamePlaceholder": "How you appear to others",
"bio": "Bio",
"bioPlaceholder": "Tell us about yourself",
"federation": "Federation",
"federationDesc": "ActivityPub profile settings",
"alsoKnownAs": "Also Known As",
"alsoKnownAsPlaceholder": "https://other-instance.example/users/you",
"alsoKnownAsHelp": "URL of your account on another instance, for account migration",
"profileFields": "Profile Fields",
"profileFieldsHelp": "Key-value pairs shown on your profile (e.g. Website, Pronouns)",
"label": "Label",
"value": "Value",
"addField": "Add field"
},
"blocked": {
"title": "Blocked",
"users": "Users",
"domains": "Domains",
"noBlockedUsers": "No blocked users",
"noBlockedDomains": "No blocked domains",
"domainPlaceholder": "example.com"
},
"webhooks": {
"title": "Webhook Tokens",
"noTokens": "No tokens",
"noTokensDesc": "Generate one to get started",
"generateToken": "Generate Token",
"provider": "Provider",
"jellyfin": "Jellyfin",
"plex": "Plex",
"labelOptional": "Label (optional)",
"labelPlaceholder": "e.g. Living room",
"copied": "Webhook URL copied to clipboard",
"setup": "Setup",
"webhookUrl": "Webhook URL",
"setupSteps": "Setup steps",
"jellyfinStep1": "Install the Webhook plugin (Dashboard → Plugins → Catalog)",
"jellyfinStep2": "Add a Generic Destination with the URL above",
"jellyfinStep3": "Add header: Authorization = Bearer YOUR_TOKEN",
"jellyfinStep4": "Check \"Send All Properties\"",
"jellyfinStep5": "Notification Type: Playback Stop only",
"jellyfinStep6": "Item Type: Movies only",
"plexStep1": "Go to Settings → Webhooks in your Plex server",
"plexStep2": "Add the URL above, replacing YOUR_TOKEN with your generated token",
"plexStep3": "Plex sends scrobble events when a movie is watched to 90%+ (requires Plex Pass)"
},
"wrapup": {
"title": "Year Wrap-Up",
"noWrapUps": "No wrap-ups",
"generateWrapUp": "Generate Wrap-Up",
"startDate": "Start Date",
"endDate": "End Date",
"generateFor": "Generate for",
"forSelf": "Myself",
"forGlobal": "Everyone (global)",
"heroSubtitle": "Your Year in Movies",
"moviesWatched": "movies watched",
"watchHours": "{{hours}} hours of watch time",
"ratings": "Ratings",
"averageRating": "average rating",
"busiestMonth": "Busiest month: {{month}}",
"favoriteDay": "Favorite day: {{day}}",
"topDirectors": "Top Directors",
"uniqueDirectors": "{{count}} unique directors",
"topActors": "Top Actors",
"uniqueActors": "{{count}} unique actors",
"genres": "Genres",
"genresExplored": "{{count}} genres explored",
"highestRated": "Highest rated: {{genre}}",
"lowestRated": "Lowest rated: {{genre}}",
"highlights": "Highlights",
"highlightHighest": "Highest Rated",
"highlightLowest": "Lowest Rated",
"highlightOldest": "Oldest Film",
"highlightNewest": "Newest Film",
"highlightLongest": "Longest",
"highlightShortest": "Shortest",
"highlightFirst": "First Watched",
"highlightLast": "Last Watched",
"rewatches": "Rewatches",
"moviesRewatched": "movies rewatched",
"mostRewatched": "Most rewatched:",
"monthlyActivity": "Monthly Activity",
"keywords": "Keywords",
"totalBudget": "total budget watched",
"avgBudget": "avg {{amount}} per film",
"languages": "languages",
"shareExport": "Share",
"watchTime": "watch time",
"topGenre": "Top Genre",
"topDirectorLabel": "Top Director",
"topActorLabel": "Top Actor",
"busiestMonthLabel": "Busiest Month",
"funFacts": "Fun Facts",
"funSpan": "Your movies span {{span}} years ({{oldest}}{{newest}})",
"funDays": "{{days}} days of non-stop watch time",
"funHours": "{{hours}} hours of watch time",
"funBudget": "You watched {{amount}} worth of movies",
"funGenres": "You explored {{count}} different genres",
"funActors": "You saw {{count}} different actors",
"allMovies": "All Movies ({{count}})"
},
"logReview": {
"title": "Log Review",
"yourRating": "Your Rating",
"commentPlaceholder": "Add a comment... (optional)",
"logging": "Logging...",
"logReview": "Log Review",
"logged": "{{title}} logged!",
"watchedAt": "Watched on",
"pickDate": "Pick a date"
},
"searchOverlay": {
"backToSearch": "Back to search",
"addManuallyTitle": "Add movie manually",
"addManuallyDesc": "The backend will try to match this on TMDB automatically",
"imdbId": "IMDb / TMDB ID",
"imdbPlaceholder": "e.g. tt0816692",
"imdbHelp": "Exact lookup — fill just this to add by ID",
"orSearchByTitle": "Or search by title:",
"titleLabel": "Title",
"titlePlaceholder": "e.g. Interstellar",
"releaseYear": "Release year",
"yearPlaceholder": "e.g. 2014",
"director": "Director",
"directorPlaceholder": "e.g. Christopher Nolan",
"searchPlaceholder": "Search movies...",
"noMoviesFound": "No movies found",
"addManually": "Add manually",
"addManuallySubtitle": "Movie not in the database yet"
},
"swipeToDelete": {
"removeItem": "Remove this item?"
},
"import": {
"title": "Import",
"step": "Step {{current}} of {{total}}",
"fieldTitle": "Title",
"fieldReleaseYear": "Release Year",
"fieldDirector": "Director",
"fieldRating": "Rating",
"fieldWatchedAt": "Watched At",
"fieldComment": "Comment",
"fieldExternalId": "External ID",
"fieldSkip": "Skip",
"scale1to5": "15 (keep as-is)",
"scale1to10": "110 → 15 (×0.5)",
"scale1to100": "1100 → 15 (×0.05)",
"scaleLetterboxd": "04 Letterboxd → 15 (×1.25)",
"dropCsv": "Drop a CSV or JSON file, or tap to browse",
"uploading": "Uploading...",
"preview": "Preview",
"rowsCols": "{{rows}} rows · {{cols}} columns",
"columnMapping": "Column Mapping",
"ratingScale": "Rating Scale",
"ratingScaleDesc": "How should ratings be converted to 15?",
"dateFormat": "Date Format",
"dateFormatDesc": "Leave empty for auto-detection",
"dateFormatPlaceholder": "e.g. %Y-%m-%d",
"applying": "Applying...",
"importSummary": "Import Summary",
"summaryDesc": "{{valid}} valid · {{duplicates}} duplicates · {{invalid}} invalid",
"previewRows": "Preview ({{count}} rows)",
"status": "Status",
"year": "Year",
"watched": "Watched",
"importing": "Importing...",
"importRows": "Import {{count}} rows",
"importComplete": "Import complete!",
"viewDiary": "View your diary",
"presets": "Presets",
"loadPreset": "Load preset",
"savePreset": "Save as preset",
"presetName": "Preset name",
"presetNamePlaceholder": "e.g. Letterboxd",
"presetSaved": "Preset saved",
"presetDeleted": "Preset deleted",
"noPresets": "No saved presets"
}
}