Files
Auto_Bangumi/webui/src/i18n/en.json
Estrella Pan a0bf878b7e feat(calendar): add drag-and-drop to assign unknown bangumi to weekdays
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>
2026-02-23 14:21:00 +01:00

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"
}
}