mirror of
https://github.com/EstrellaXD/Auto_Bangumi.git
synced 2026-03-19 19:37:14 +08:00
Allow users to drag bangumi cards from the "Unknown" section into weekday
columns in the calendar view. Manual assignments are locked so calendar
refresh from Bangumi.tv doesn't overwrite them. A reset button lets users
unlock and send cards back to Unknown.
Backend:
- Add weekday_locked field to Bangumi model (migration v9)
- Add PATCH /api/v1/bangumi/{id}/weekday endpoint
- Skip locked items in refresh_calendar()
Frontend:
- Add vuedraggable for smooth drag-and-drop
- Pin indicator and unpin button on manually-assigned cards
- Drop zone highlighting during drag
- i18n strings for drag/pin/unpin
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
472 lines
15 KiB
JSON
472 lines
15 KiB
JSON
{
|
|
"config": {
|
|
"apply": "Apply",
|
|
"cancel": "Cancel",
|
|
"downloader_set": {
|
|
"host": "Host",
|
|
"password": "Password",
|
|
"path": "Download Path",
|
|
"ssl": "SSL",
|
|
"title": "Downloader Setting",
|
|
"type": "Downloader Type",
|
|
"username": "Username"
|
|
},
|
|
"experimental_openai_set": {
|
|
"api_base": "API Base URL",
|
|
"api_key": "API Key",
|
|
"api_type": "Provider",
|
|
"api_version": "API Version",
|
|
"deployment_id": "Deployment ID",
|
|
"enable": "Enable LLM Parsing",
|
|
"model": "Model",
|
|
"title": "LLM Settings",
|
|
"warning": "Experimental: LLM-based anime title parsing may produce inaccurate results."
|
|
},
|
|
"manage_set": {
|
|
"delete_bad_torrent": "Delete Bad Torrent",
|
|
"enable": "Enable",
|
|
"eps": "EPS complete",
|
|
"group_tag": "Add Group Tag",
|
|
"method": "Rename Method",
|
|
"title": "Manage Setting"
|
|
},
|
|
"media_player_set": {
|
|
"title": "Media Player Setting",
|
|
"type": "type",
|
|
"url": "url"
|
|
},
|
|
"normal_set": {
|
|
"debug": "Debug",
|
|
"rename_interval": "Interval Time of Rename",
|
|
"rss_interval": "Interval Time of Rss",
|
|
"title": "Normal Setting",
|
|
"web_port": "WebUI Port"
|
|
},
|
|
"notification_set": {
|
|
"title": "Notification Setting",
|
|
"enable": "Enable",
|
|
"enabled": "Enabled",
|
|
"disabled": "Disabled",
|
|
"type": "Type",
|
|
"token": "Token",
|
|
"chat_id": "Chat ID",
|
|
"add_provider": "Add Provider",
|
|
"edit_provider": "Edit Provider",
|
|
"remove": "Remove",
|
|
"edit": "Edit",
|
|
"test": "Test",
|
|
"enable_provider": "Enable",
|
|
"disable": "Disable",
|
|
"test_success": "Test successful",
|
|
"test_failed": "Test failed"
|
|
},
|
|
"parser_set": {
|
|
"enable": "Enable",
|
|
"exclude": "Exclude",
|
|
"language": "Language",
|
|
"source": "Source",
|
|
"title": "Parser Setting",
|
|
"token": "Token",
|
|
"type": "Parser Type",
|
|
"url": "Custom Url"
|
|
},
|
|
"proxy_set": {
|
|
"enable": "Enable",
|
|
"host": "Host",
|
|
"password": "Password",
|
|
"port": "Port",
|
|
"title": "Proxy Setting",
|
|
"type": "Proxy Type",
|
|
"username": "Username"
|
|
},
|
|
"security_set": {
|
|
"title": "Security",
|
|
"hint": "Login whitelist: empty = allow all IPs. MCP whitelist: empty = deny all access.",
|
|
"login_whitelist": "Login IP Whitelist",
|
|
"login_tokens": "Login API Tokens",
|
|
"mcp_whitelist": "MCP IP Whitelist",
|
|
"mcp_tokens": "MCP API Tokens"
|
|
},
|
|
"search_provider_set": {
|
|
"title": "Search Provider",
|
|
"add_new": "Add Provider",
|
|
"add_title": "Add Search Provider",
|
|
"edit_title": "Edit Search Provider",
|
|
"name": "Name",
|
|
"name_placeholder": "e.g., mikan",
|
|
"url": "URL Template",
|
|
"url_placeholder": "https://example.com/search?q=%s",
|
|
"url_hint": "Use %s as placeholder for search keywords in the URL",
|
|
"url_missing_placeholder": "URL must contain %s as search keyword placeholder",
|
|
"default": "Default",
|
|
"no_providers": "No search providers configured",
|
|
"delete_confirm": "Are you sure you want to delete this provider?"
|
|
}
|
|
},
|
|
"downloader": {
|
|
"hit": "Please set up the downloader",
|
|
"empty": {
|
|
"title": "Downloader not configured",
|
|
"subtitle": "Connect your download client to manage torrents here",
|
|
"step1_title": "Open Config",
|
|
"step1_desc": "Navigate to the Config page and find the Downloader section.",
|
|
"step2_title": "Enter Connection Details",
|
|
"step2_desc": "Set your qBittorrent host address, username, and password.",
|
|
"step3_title": "Access Downloader",
|
|
"step3_desc": "Once configured, the downloader web UI will be embedded right here."
|
|
},
|
|
"empty_torrents": "No torrents in Bangumi category",
|
|
"selected": "selected",
|
|
"torrent": {
|
|
"name": "Name",
|
|
"progress": "Progress",
|
|
"status": "Status",
|
|
"size": "Size",
|
|
"dlspeed": "DL Speed",
|
|
"upspeed": "UP Speed",
|
|
"peers": "Seeds/Peers"
|
|
},
|
|
"state": {
|
|
"downloading": "Downloading",
|
|
"seeding": "Seeding",
|
|
"paused": "Paused",
|
|
"stalled": "Stalled",
|
|
"queued": "Queued",
|
|
"checking": "Checking",
|
|
"error": "Error",
|
|
"metadata": "Metadata"
|
|
},
|
|
"action": {
|
|
"pause": "Pause",
|
|
"resume": "Resume",
|
|
"delete": "Delete"
|
|
}
|
|
},
|
|
"homepage": {
|
|
"empty": {
|
|
"title": "No subscriptions yet",
|
|
"subtitle": "Get started by adding your first RSS feed",
|
|
"step1_title": "Add RSS Feed",
|
|
"step1_desc": "Click the \"Add\" button in the top bar and paste an RSS link from your anime source.",
|
|
"step2_title": "Configure Downloader",
|
|
"step2_desc": "Go to Config and set up your downloader (e.g. qBittorrent) connection.",
|
|
"step3_title": "Sit Back & Enjoy",
|
|
"step3_desc": "AutoBangumi will automatically download and rename new episodes for you.",
|
|
"add_rss_btn": "Add RSS Feed"
|
|
},
|
|
"rule": {
|
|
"apply": "Apply",
|
|
"delete": "Delete",
|
|
"delete_hit": "Delete Local File?",
|
|
"disable": "Disable",
|
|
"edit": "Edit",
|
|
"edit_rule": "Edit Rule",
|
|
"enable": "Enable",
|
|
"enable_hit": "Do you want to enable this rule?",
|
|
"enable_rule": "Enable Rule",
|
|
"exclude": "Exclude",
|
|
"no_btn": "No",
|
|
"official_title": "Official Title",
|
|
"episode_offset": "Episode Offset",
|
|
"season_offset": "Season Offset",
|
|
"auto_detect": "Auto Detect",
|
|
"needs_review": "Needs Review",
|
|
"archive": "Archive",
|
|
"unarchive": "Unarchive",
|
|
"archived": "Archived",
|
|
"archived_section": "Archived ({count})",
|
|
"select_hint": "Multiple rules found for this anime. Select one to edit:",
|
|
"filter": "Filter",
|
|
"unnamed": "Unnamed Rule",
|
|
"season": "Season",
|
|
"year": "Year",
|
|
"yes_btn": "Yes"
|
|
}
|
|
},
|
|
"log": {
|
|
"bug_repo": "Bug Report",
|
|
"clear_filters": "Clear",
|
|
"contact_info": "Contact Infomation",
|
|
"copy": "Copy",
|
|
"filter_level": "Level",
|
|
"go": "Go",
|
|
"join": "Join",
|
|
"reset": "Reset",
|
|
"title": "Log",
|
|
"update_now": "Update Now"
|
|
},
|
|
"login": {
|
|
"login_btn": "Login",
|
|
"passkey_btn": "Passkey",
|
|
"password": "Password",
|
|
"title": "Login",
|
|
"username": "Username"
|
|
},
|
|
"passkey": {
|
|
"add_new": "Add Passkey",
|
|
"created_at": "Created",
|
|
"delete_confirm": "Are you sure you want to delete this passkey?",
|
|
"delete_failed": "Delete failed",
|
|
"delete_success": "Passkey deleted",
|
|
"device_name": "Device Name",
|
|
"device_name_placeholder": "e.g., iPhone 15, MacBook Pro",
|
|
"last_used": "Last used",
|
|
"loading": "Loading...",
|
|
"login_failed": "Passkey login failed",
|
|
"no_passkeys": "No passkeys registered yet",
|
|
"not_supported": "Your browser does not support Passkeys",
|
|
"register_failed": "Registration failed",
|
|
"register_hint": "After clicking confirm, follow your browser's prompts to complete authentication.",
|
|
"register_success": "Passkey registered successfully",
|
|
"register_title": "Add New Passkey",
|
|
"synced": "Synced across devices",
|
|
"title": "Passkey Settings"
|
|
},
|
|
"notify": {
|
|
"copy_failed": "Your browser does not support Clipboard API!",
|
|
"copy_success": "Copy Success!",
|
|
"login_failed": "Login Failed!",
|
|
"login_success": "Login Success!",
|
|
"password_length_error": "Password must be at least 8 characters long!",
|
|
"please_enter": "Please Enter {0}!",
|
|
"please_update": "Please Update AutoBangumi!",
|
|
"rss_link": "RSS Link",
|
|
"update_failed": "Update Failed!",
|
|
"update_success": "Update Success!"
|
|
},
|
|
"player": {
|
|
"hit": "Please set up the media player",
|
|
"empty": {
|
|
"title": "Media player not configured",
|
|
"subtitle": "Connect your media server to stream directly from here",
|
|
"step1_title": "Open Config",
|
|
"step1_desc": "Navigate to the Config page and find the Media Player section.",
|
|
"step2_title": "Set Player URL",
|
|
"step2_desc": "Enter the URL of your media server (Jellyfin, Emby, Plex, etc.).",
|
|
"step3_title": "Start Watching",
|
|
"step3_desc": "Your media player will be embedded here for easy access."
|
|
}
|
|
},
|
|
"rss": {
|
|
"connected": "Connected",
|
|
"delete": "Delete",
|
|
"disable": "Disable",
|
|
"enable": "Enable",
|
|
"error": "Error",
|
|
"name": "Name",
|
|
"selectbox": "Select",
|
|
"status": "Status",
|
|
"title": "RSS Item",
|
|
"url": "Url"
|
|
},
|
|
"calendar": {
|
|
"title": "Schedule",
|
|
"subtitle": "This season's broadcast schedule",
|
|
"days": {
|
|
"mon": "Monday",
|
|
"tue": "Tuesday",
|
|
"wed": "Wednesday",
|
|
"thu": "Thursday",
|
|
"fri": "Friday",
|
|
"sat": "Saturday",
|
|
"sun": "Sunday"
|
|
},
|
|
"days_short": {
|
|
"mon": "Mon",
|
|
"tue": "Tue",
|
|
"wed": "Wed",
|
|
"thu": "Thu",
|
|
"fri": "Fri",
|
|
"sat": "Sat",
|
|
"sun": "Sun"
|
|
},
|
|
"unknown": "Unknown",
|
|
"unknown_title": "Unknown Title",
|
|
"today": "Today",
|
|
"empty": "No anime",
|
|
"refresh": "Refresh schedule",
|
|
"no_data": "No schedule data available",
|
|
"loading": "Loading...",
|
|
"tracked": "Tracked",
|
|
"tracked_count": "{count} tracked",
|
|
"total_count": "{count} total",
|
|
"search_title": "Search and Add Anime",
|
|
"no_search_results": "No results found. Try different keywords.",
|
|
"empty_state": {
|
|
"title": "No Schedule Yet",
|
|
"subtitle": "Click refresh to fetch this season's broadcast data"
|
|
},
|
|
"drag_hint": "Drag to assign weekday",
|
|
"pinned": "Manually assigned",
|
|
"unpin": "Reset to unknown",
|
|
"drop_here": "Drop here"
|
|
},
|
|
"setup": {
|
|
"welcome": {
|
|
"title": "Welcome to AutoBangumi",
|
|
"subtitle": "Let's set up your anime downloading system.",
|
|
"description": "This wizard will guide you through the initial configuration. You can skip optional steps and configure them later.",
|
|
"start": "Get Started"
|
|
},
|
|
"account": {
|
|
"title": "Create Your Account",
|
|
"subtitle": "Change the default credentials for security.",
|
|
"username": "Username",
|
|
"password": "Password",
|
|
"confirm_password": "Confirm Password",
|
|
"password_mismatch": "Passwords do not match",
|
|
"password_too_short": "Password must be at least 8 characters"
|
|
},
|
|
"downloader": {
|
|
"title": "Download Client",
|
|
"subtitle": "Connect to your qBittorrent instance.",
|
|
"test": "Test Connection",
|
|
"testing": "Testing...",
|
|
"test_success": "Connection successful",
|
|
"test_failed": "Connection failed"
|
|
},
|
|
"rss": {
|
|
"title": "RSS Source",
|
|
"subtitle": "Add your first anime RSS feed.",
|
|
"url": "RSS Feed URL",
|
|
"feed_name": "Feed Name",
|
|
"test": "Test Feed",
|
|
"test_failed": "Failed to fetch feed",
|
|
"feed_title": "Feed Title",
|
|
"item_count": "Items Found"
|
|
},
|
|
"media": {
|
|
"title": "Media Library",
|
|
"subtitle": "Configure the download and organization path.",
|
|
"path": "Download Path",
|
|
"path_hint": "Episodes will be organized into subdirectories automatically."
|
|
},
|
|
"notification": {
|
|
"title": "Notifications",
|
|
"subtitle": "Get notified about new episodes (optional).",
|
|
"test": "Send Test",
|
|
"test_failed": "Notification test failed"
|
|
},
|
|
"review": {
|
|
"title": "Review Settings",
|
|
"subtitle": "Confirm your configuration before completing setup.",
|
|
"complete": "Complete Setup",
|
|
"completing": "Setting up...",
|
|
"success": "Setup complete! Please log in with your new credentials.",
|
|
"failed": "Setup failed. Please try again."
|
|
},
|
|
"nav": {
|
|
"next": "Next",
|
|
"previous": "Previous",
|
|
"skip": "Skip",
|
|
"step": "Step {current} of {total}"
|
|
}
|
|
},
|
|
"sidebar": {
|
|
"calendar": "Calendar",
|
|
"config": "Config",
|
|
"downloader": "Downloader",
|
|
"homepage": "HomePage",
|
|
"log": "Log",
|
|
"logout": "Logout",
|
|
"player": "Player",
|
|
"rss": "RSS Manager",
|
|
"title": "Menu"
|
|
},
|
|
"common": {
|
|
"cancel": "Cancel",
|
|
"confirm": "Confirm",
|
|
"select": "Select",
|
|
"selectAll": "Select All",
|
|
"items": "items"
|
|
},
|
|
"theme": {
|
|
"light": "Light",
|
|
"dark": "Dark"
|
|
},
|
|
"offset": {
|
|
"dialog_title": "Season/Episode Mismatch Detected",
|
|
"parsed_result": "RSS Parsed Result",
|
|
"tmdb_data": "TMDB Data",
|
|
"season": "Season",
|
|
"episode": "Episode",
|
|
"total_seasons": "Total Seasons",
|
|
"season_episodes": "S{season} Episodes",
|
|
"suggested_offset": "Suggested Offset",
|
|
"season_offset": "Season Offset",
|
|
"episode_offset": "Episode Offset",
|
|
"preview": "Preview",
|
|
"apply": "Apply Suggestion",
|
|
"keep": "Keep Original",
|
|
"cancel": "Cancel",
|
|
"badge_tooltip": "Review needed: {reason}",
|
|
"reason_season_mismatch": "RSS shows S{parsed}, but TMDB only has {total} season(s)",
|
|
"reason_episode_exceeded": "Episode {ep} exceeds TMDB count of {count} for this season",
|
|
"needs_review": "Offset Review Needed",
|
|
"dismiss": "Dismiss",
|
|
"suggestion_applied": "Offset suggestion applied",
|
|
"no_mismatch": "No season/episode mismatch detected",
|
|
"review_dismissed": "Review reminder dismissed"
|
|
},
|
|
"search": {
|
|
"subscribe": "Subscribe",
|
|
"no_results": "No results found. Try different keywords.",
|
|
"start_typing": "Enter keywords to start searching",
|
|
"filter": {
|
|
"group": "Group",
|
|
"resolution": "Resolution",
|
|
"subtitle_type": "Subtitle",
|
|
"season": "Season",
|
|
"clear": "Clear",
|
|
"results": "results",
|
|
"active": "Filtering",
|
|
"collapse": "Less"
|
|
},
|
|
"confirm": {
|
|
"title": "Add Subscription",
|
|
"rss": "RSS Feed",
|
|
"group": "Subtitle Group",
|
|
"resolution": "Resolution",
|
|
"subtitle": "Subtitle Type",
|
|
"season": "Season",
|
|
"filter": "Filter Rules",
|
|
"filter_hint": "Regex patterns to exclude unwanted torrents",
|
|
"save_path": "Save Path",
|
|
"save_path_placeholder": "Leave empty for default path",
|
|
"advanced": "Advanced Settings",
|
|
"subscribe": "Subscribe"
|
|
}
|
|
},
|
|
"topbar": {
|
|
"add": {
|
|
"aggregate": "Aggregate RSS",
|
|
"button": "Add",
|
|
"collect": "Collect",
|
|
"name": "Name",
|
|
"parser": "Parser",
|
|
"placeholder_link": "Please enter the RSS link",
|
|
"placeholder_name": "Optional",
|
|
"rss_link": "RSS Link",
|
|
"subscribe": "Subscribe",
|
|
"title": "Add RSS"
|
|
},
|
|
"pause": "Pause",
|
|
"profile": {
|
|
"password": "Password",
|
|
"pop_title": "Change Account",
|
|
"title": "Profile",
|
|
"update_btn": "Update",
|
|
"username": "Username"
|
|
},
|
|
"refresh_poster": "Refresh Poster",
|
|
"reset_rule": "Reset Rule",
|
|
"restart": "Restart",
|
|
"search": {
|
|
"placeholder": "Type to search",
|
|
"click_to_search": "Click to search"
|
|
},
|
|
"shutdown": "Shutdown",
|
|
"start": "Start"
|
|
}
|
|
}
|